Skip to content

Commit 789dc5a

Browse files
authored
Add files via upload
1 parent 58b9459 commit 789dc5a

File tree

1 file changed

+145
-0
lines changed

1 file changed

+145
-0
lines changed

Assignments/SQL-4-Assignment.sql

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
/*Charlie's Chocolate Factory company produces chocolates. The following product information is stored: product name, product ID, and quantity on hand. These chocolates are made up of many components. Each component can be supplied by one or more suppliers. The following component information is kept: component ID, name, description, quantity on hand, suppliers who supply them, when and how much they supplied, and products in which they are used. On the other hand following supplier information is stored: supplier ID, name, and activation status.
2+
3+
Assumptions
4+
5+
A supplier can exist without providing components.
6+
A component does not have to be associated with a supplier. It may already have been in the inventory.
7+
A component does not have to be associated with a product. Not all components are used in products.
8+
A product cannot exist without components.
9+
10+
Do the following exercises, using the data model.
11+
12+
a) Create a database named "Manufacturer"
13+
14+
b) Create the tables in the database.
15+
16+
c) Define table constraints.*/
17+
18+
---Solution
19+
--a) Create a database named "Manufacturer"
20+
CREATE DATABASE Manufacturer;
21+
USE Manufacturer
22+
--Create Schemas
23+
24+
CREATE SCHEMA Product
25+
GO
26+
CREATE SCHEMA Component
27+
GO
28+
29+
--b) Create the tables in the database.
30+
CREATE TABLE Product.Product(
31+
prod_id INT,--prod_id INT IDENTITY(1, 1) PRIMARY KEY
32+
prod_name VARCHAR(50),--NOT NULL
33+
quantity INT --NOT NULL
34+
);
35+
CREATE TABLE Product.Prod_Comp(
36+
prod_id INT ,
37+
comp_id INT,
38+
quantity_comp INT --NOT NULL
39+
--PRIMARY KEY(prod_id, comp_id),
40+
--FOREIGN KEY(prod_id) REFERENCES product(prod_id) ON DELETE CASCADE ON UPDATE CASCADE,
41+
--FOREIGN KEY(comp_id) REFERENCES component(comp_id) ON DELETE CASCADE ON UPDATE CASCADE
42+
);
43+
CREATE TABLE Component.Component(
44+
comp_id INT ,--NOT NULL,--comp_id INT IDENTITY(1, 1) PRIMARY KEY
45+
comp_name VARCHAR(50) , --NOT NULL ,--A supplier can exist without providing components
46+
description VARCHAR(50),
47+
quantity_comp INT --NOT NULL
48+
);
49+
CREATE TABLE Component.Comp_Supp(
50+
supp_id INT,--supp_id INT PRIMARY KEY --NOT NULL
51+
comp_id INT,--comp_id INT PRIMARY KEY --NOT NULL
52+
order_date DATE,
53+
quantity INT--NOT NULL
54+
);
55+
CREATE TABLE Component.Supplier(
56+
supp_id INT ,--NOT NULL,--supp_id INT PRIMARY KEY
57+
supp_name VARCHAR(50) ,--NOT NULL
58+
supp_location VARCHAR(50),
59+
supp_country VARCHAR(50),
60+
is_active BIT --NOT NULL
61+
62+
)
63+
64+
--- c) Define table constraints:
65+
66+
--for Product.Product table
67+
ALTER TABLE Product.Product
68+
ALTER COLUMN prod_id INT NOT NULL
69+
70+
ALTER TABLE Product.Product
71+
ALTER COLUMN prod_name VARCHAR(50) NOT NULL
72+
73+
ALTER TABLE Product.Product
74+
ALTER COLUMN quantity INT NOT NULL
75+
76+
ALTER TABLE Product.Product
77+
ADD CONSTRAINT pk_product PRIMARY KEY(prod_id)
78+
79+
--for Component.Component table
80+
ALTER TABLE Component.Component
81+
ALTER COLUMN comp_id INT NOT NULL
82+
83+
ALTER TABLE Component.Component
84+
ALTER COLUMN comp_name VARCHAR(50) NOT NULL
85+
86+
ALTER TABLE Component.Component
87+
ALTER COLUMN quantity_comp INT NOT NULL
88+
89+
ALTER TABLE Component.Component
90+
ADD CONSTRAINT pk_component PRIMARY KEY(comp_id)
91+
92+
--for Product.Prod_Comp table
93+
ALTER TABLE Product.Prod_Comp
94+
ALTER COLUMN quantity_comp INT NOT NULL
95+
96+
ALTER TABLE Product.Prod_Comp
97+
ADD CONSTRAINT fk_prod_id FOREIGN KEY(prod_id) REFERENCES Product.Product(prod_id) ON DELETE CASCADE ON UPDATE CASCADE
98+
99+
ALTER TABLE Product.Prod_Comp
100+
ADD CONSTRAINT fk_comp_id FOREIGN KEY(comp_id) REFERENCES Component.Component(comp_id) ON DELETE CASCADE ON UPDATE CASCADE
101+
102+
ALTER TABLE Product.Prod_Comp
103+
ALTER COLUMN prod_id INT NOT NULL;
104+
105+
ALTER TABLE Product.Prod_Comp
106+
ALTER COLUMN comp_id INT NOT NULL;
107+
108+
ALTER TABLE Product.Prod_Comp
109+
ADD CONSTRAINT pk_comp_prod PRIMARY KEY (comp_id, prod_id);
110+
111+
112+
--for Component.Supplier table
113+
ALTER TABLE Component.Supplier
114+
ALTER COLUMN supp_id INT NOT NULL
115+
116+
ALTER TABLE Component.Supplier
117+
ALTER COLUMN supp_name VARCHAR(50) NOT NULL
118+
119+
ALTER TABLE Component.Supplier
120+
ALTER COLUMN is_active BIT NOT NULL
121+
122+
ALTER TABLE Component.Supplier
123+
ADD CONSTRAINT pk_supplier PRIMARY KEY(supp_id)
124+
125+
--for Component.Comp_Supp table
126+
ALTER TABLE Component.Comp_Supp
127+
ALTER COLUMN quantity INT NOT NULL
128+
129+
ALTER TABLE Component.Comp_Supp
130+
ADD CONSTRAINT fk_supp_id FOREIGN KEY(supp_id) REFERENCES Component.Supplier(supp_id) ON DELETE CASCADE ON UPDATE CASCADE
131+
132+
ALTER TABLE Component.Comp_Supp
133+
ADD CONSTRAINT fk_comp_id FOREIGN KEY(comp_id) REFERENCES Component.Component(comp_id) ON DELETE CASCADE ON UPDATE CASCADE
134+
135+
ALTER TABLE Component.Comp_Supp
136+
ALTER COLUMN supp_id INT NOT NULL
137+
138+
ALTER TABLE Component.Comp_Supp
139+
ALTER COLUMN comp_id INT NOT NULL
140+
141+
ALTER TABLE Component.Comp_Supp
142+
ADD CONSTRAINT pk_supp_comp PRIMARY KEY (supp_id, comp_id)
143+
144+
145+

0 commit comments

Comments
 (0)