Create Database in SQL Server

Create new database in SQL Server with name OctopusCodesDB. Use SQL below to create the tables in the database:

CREATE TABLE Role(
	Id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
	Name varchar(250) NOT NULL
)
GO
CREATE TABLE Account(
	Id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
	Username varchar(250) NOT NULL,
	Password varchar(250) NOT NULL,
	FullName varchar(250) NOT NULL,
	Status bit NOT NULL
)
GO
CREATE TABLE Contact(
	Id int PRIMARY KEY NOT NULL REFERENCES Account(Id),
	Email varchar(250) NOT NULL,
	Address varchar(250) NOT NULL,
	Phone varchar(50) NOT NULL
)
GO
CREATE TABLE AccountRole(
	AccountId int NOT NULL REFERENCES Account(Id),
	RoleId int NOT NULL REFERENCES Role(Id),
	PRIMARY KEY(AccountId, RoleId)
)
GO
CREATE TABLE Category(
	Id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
	Name varchar(250) NOT NULL
)
GO
CREATE TABLE Invoice(
	Id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
	Name varchar(250) NOT NULL,
	Payment varchar(250) NOT NULL,
	Status varchar(250) NOT NULL,
	Created date NOT NULL,
	AccountId int NOT NULL REFERENCES Account(Id)
)
GO
CREATE TABLE Product(
	Id int PRIMARY KEY IDENTITY(1,1) NOT NULL,
	Name varchar(250) NOT NULL,
	Price float NOT NULL,
	Quantity int NOT NULL,
	Description text NULL,
	Status bit NOT NULL,
	Photo varchar(250) NULL,
	Created date NOT NULL,
	CategoryId int NOT NULL REFERENCES Category(Id)
)
GO
CREATE TABLE InvoiceDetails(
	InvoiceId int NOT NULL REFERENCES Invoice(Id),
	ProductId int NOT NULL REFERENCES Product(Id),
	Quantity int NOT NULL,
	Price float NOT NULL,
	PRIMARY KEY(InvoiceId, ProductId)
) 

Database Relationship Diagrams as below:

Click Image to Zoom

Use the SQL below to add data to the database:

insert into Category values('Category 1')
insert into Category values('Category 2')
insert into Category values('Category 3')
insert into Category values('Category 4')
insert into Category values('Category 5')
go
insert into Product values('Tivi 1', 10, 15, 'Description 1', 'true', 'photo1.gif', '2023-10-20', 1)
insert into Product values('Tivi 2', 5, 22, 'Description 2', 'false', 'photo2.gif', '2022-04-20', 1)
insert into Product values('Tivi 3', 20, 4, 'Description 2', 'false', 'photo3.gif', '2022-11-20', 1)
insert into Product values('Laptop 1', 15, 16, 'Description 3', 'true', 'photo4.gif', '2021-10-20', 2)
insert into Product values('Laptop 2', 4, 26, 'Description 4', 'false', 'photo5.gif', '2022-10-20', 2)
insert into Product values('Computer 1', 17, 34, 'Description 5', 'true', 'photo6.gif', '2023-12-20', 3)
insert into Product values('Computer 2', 43, 11, 'Description 6', 'false', 'photo7.gif', '2023-11-20', 3)
insert into Product values('Computer 3', 19, 18, 'Description 7', 'true', 'photo8.gif', '2023-05-20', 3)
go
insert into Role values('Role 1')
insert into Role values('Role 2')
insert into Role values('Role 3')
go
insert into Account values('acc1', '123', 'Name 1', 'true')
insert into Account values('acc2', '123', 'Name 2', 'false')
insert into Account values('acc3', '123', 'Name 3', 'true')
insert into Account values('acc4', '123', 'Name 4', 'true')
go
insert into Contact values(1, 'a@gmail.com', 'Address 1', '123456')
insert into Contact values(2, 'b@gmail.com', 'Address 2', '145232')
insert into Contact values(3, 'c@gmail.com', 'Address 3', '232343')
insert into Contact values(4, 'd@gmail.com', 'Address 4', '153223')
go
insert into AccountRole values(1, 1)
insert into AccountRole values(1, 2)
insert into AccountRole values(1, 3)
insert into AccountRole values(2, 2)
insert into AccountRole values(2, 3)
insert into AccountRole values(3, 2)
go
insert into Invoice values('Invoice 1', 'Payment 1', 'Status 1', '2023-10-20', 1)
insert into Invoice values('Invoice 2', 'Payment 1', 'Status 1', '2022-11-21', 1)
insert into Invoice values('Invoice 3', 'Payment 2', 'Status 2', '2022-04-11', 2)
insert into Invoice values('Invoice 4', 'Payment 2', 'Status 2', '2021-07-16', 2)
insert into Invoice values('Invoice 5', 'Payment 3', 'Status 3', '2023-11-25', 3)
insert into Invoice values('Invoice 6', 'Payment 3', 'Status 3', '2023-11-18', 3)
go
insert into InvoiceDetails values(1, 9, 20, 4.5)
insert into InvoiceDetails values(1, 10, 21, 11)
insert into InvoiceDetails values(1, 11, 3, 20)
insert into InvoiceDetails values(2, 9, 20, 4.5)
insert into InvoiceDetails values(2, 13, 11, 6)
insert into InvoiceDetails values(3, 14, 7, 21)
insert into InvoiceDetails values(3, 11, 9, 20)

Data of Category Table:

Data of Product Table:

Data of Role Table:

Data of Account Table:

Data of Contact Table:

Data of Invoice Table:

Data of InvoiceDetails Table:

Data of AccountRole Table: