Advertisement
erehh

monacemta bazebi proeqti

Jun 6th, 2023
1,248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.53 KB | None | 0 0
  1. --factory table
  2. CREATE TABLE Factory(
  3. f_id INT PRIMARY KEY,
  4. f_name VARCHAR (255),
  5. f_location VARCHAR (255)
  6. );
  7.  
  8. --branch table
  9. CREATE TABLE Branch(
  10. branch_id INT PRIMARY KEY,
  11. branch_name VARCHAR(255),
  12. branch_factory_id int,
  13. FOREIGN KEY (branch_factory_id) REFERENCES Factory (f_id)
  14. );
  15.  
  16. --supplier table
  17. CREATE TABLE Supplier(
  18. supplier_id INT PRIMARY KEY,
  19. supplier_name VARCHAR(255)
  20. );
  21.  
  22. --water table
  23. --price of 1L of water - 0.3
  24. CREATE TABLE Water(
  25. water_id VARCHAR(5) PRIMARY KEY,
  26. water_source VARCHAR(255) NOT NULL,
  27. amount_obtained INT NOT NULL,
  28. water_price DECIMAL(4,2) DEFAULT 0.3,
  29. date_obtained DATE NOT NULL
  30. );
  31.  
  32. --bottle table
  33. CREATE TABLE Bottle(
  34. bottle_id VARCHAR(6) PRIMARY KEY,
  35. supplier_id INT,
  36. bottle_type VARCHAR(10) CHECK(bottle_type IN ('glass', 'plastic')),
  37. bottle_price DECIMAL(4,2) NOT NULL,
  38. bottle_amount INT NOT NULL,
  39. FOREIGN KEY (supplier_id) REFERENCES Supplier ( supplier_id)
  40. );
  41.  
  42. --update to the bottle table to set the price accordingly
  43. --if plastic -0.3, if glass - 1.5, else 0
  44. UPDATE Bottle
  45. SET bottle_price = CASE
  46.     WHEN bottle_type = 'glass' THEN 1.5
  47.     WHEN bottle_type = 'plastic' THEN 0.3
  48.     ELSE 0
  49. END;
  50.  
  51. --Product ( bottled water ) table
  52. CREATE TABLE Product(
  53. product_id VARCHAR(9) PRIMARY KEY,
  54. product_type VARCHAR(10) CHECK(product_type IN ('glass', 'plastic')),
  55. bottle_id VARCHAR(6),
  56. water_id VARCHAR(5),
  57. product_price DECIMAL(6,2),
  58. product_amount INT NOT NULL,
  59. date_produced DATE NOT NULL,
  60. date_shipped DATE,
  61. FOREIGN KEY (bottle_id) REFERENCES Bottle (bottle_id),
  62. FOREIGN KEY (water_id) REFERENCES Water (water_id)
  63. );
  64.  
  65. -- Update the price values using the calculated formula.
  66. --price is equal to the sum of bottle and water price, plus 45%
  67. UPDATE Product
  68. SET product_price =
  69. (SELECT (Bottle.bottle_price + Water.water_price) * 1.45
  70. FROM Bottle, Water WHERE Bottle.bottle_id = Product.bottle_id AND Water.water_id = Product.water_id);
  71.  
  72. --person table, will be used for the manager and employee table
  73. CREATE TABLE Person(
  74. ssn VARCHAR(11) PRIMARY KEY,
  75. );
  76.  
  77. --manager table
  78. CREATE TABLE Manager(
  79. manager_id VARCHAR(10) PRIMARY KEY,
  80. manager_ssn VARCHAR(11) NOT NULL,
  81. manager_name VARCHAR(255) NOT NULL,
  82. manager_lname VARCHAR(255) NOT NULL,
  83. factory_id INT NOT NULL,
  84. branch_id INT NOT NULL,
  85. FOREIGN KEY (manager_ssn) REFERENCES Person(ssn),
  86. FOREIGN KEY (factory_id) REFERENCES Factory(f_id),
  87. FOREIGN KEY (branch_id) REFERENCES Branch(branch_id)
  88. );
  89.  
  90. --employee table
  91. CREATE TABLE Employee(
  92. employee_ssn VARCHAR(11),
  93. employee_name VARCHAR(255) NOT NULL,
  94. employee_lname VARCHAR(255) NOT NULL,
  95. employee_factory INT NOT NULL,
  96. employee_branch INT NOT NULL,
  97. FOREIGN KEY (employee_ssn) REFERENCES Person(ssn),
  98. FOREIGN KEY (employee_factory) REFERENCES Factory(f_id),
  99. FOREIGN KEY (employee_branch) REFERENCES Branch(branch_id)
  100. );
  101.  
  102. --store table
  103. CREATE TABLE Store(
  104. store_id INT PRIMARY KEY,
  105. store_name VARCHAR(255) NOT NULL,
  106. product_id VARCHAR(9),
  107. product_price DECIMAL(6,2),
  108. product_amount_received INT,
  109. date_received DATE,
  110. FOREIGN KEY (product_id) REFERENCES Product(product_id)
  111. );
  112.  
  113. --update the Store table to calculate the revenue received
  114. UPDATE STORE
  115. SET product_price = (SELECT Product.product_price * Store.product_amount_received
  116.                      FROM Product, Store
  117.                      WHERE Product.product_id = Store.product_id);
  118.                      
  119.  
  120. --sales table
  121. CREATE TABLE Sales(
  122. store_id int,
  123. revenue_date DATE NOT NULL,
  124. revenue DECIMAL(7,2),
  125. FOREIGN KEY (store_id) REFERENCES Store(store_id)
  126. );
  127.  
  128. UPDATE Sales
  129. SET revenue_date = (SELECT Store.date_received
  130.                     FROM Store);
  131. UPDATE Sales
  132. SET revenue = (SELECT Store.product_price
  133.                 FROM Store);
  134.  
  135. CREATE TABLE Salaries(
  136. worker_ssn VARCHAR(11),
  137. worker_branch_id INT,
  138. worker_salary DECIMAL(7,2),
  139. FOREIGN KEY (worker_ssn) REFERENCES Person(ssn),
  140. FOREIGN KEY (worker_branch_id) REFERENCES Branch(branch_id)
  141. );
  142.  
  143.  
  144. --update to salaries table, each branch has its own salary
  145. UPDATE salaries
  146. SET worker_salary =
  147.     CASE
  148.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 2500
  149.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 1500
  150.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 5500
  151.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 3500
  152.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 1700
  153.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 900
  154.     END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement