Advertisement
erehh

kumisis wyaro chasworebuli

Jun 6th, 2023
1,286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.93 KB | None | 0 0
  1. --factory table
  2. CREATE TABLE Factory(
  3. factory_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 (factory_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. --director table
  78. CREATE TABLE Director(
  79. director_ssn VARCHAR(11),
  80. factory_id INT,
  81. FOREIGN KEY (director_ssn) REFERENCES Person(ssn),
  82. FOREIGN KEY (factory_id) REFERENCES Factory(factory_id)
  83. );
  84. --manager table
  85. CREATE TABLE Manager(
  86. manager_id VARCHAR(10) PRIMARY KEY,
  87. manager_ssn VARCHAR(11) NOT NULL,
  88. manager_name VARCHAR(255) NOT NULL,
  89. manager_lname VARCHAR(255) NOT NULL,
  90. factory_id INT NOT NULL,
  91. branch_id INT NOT NULL,
  92. FOREIGN KEY (manager_ssn) REFERENCES Person(ssn),
  93. FOREIGN KEY (factory_id) REFERENCES Factory(factory_id),
  94. FOREIGN KEY (branch_id) REFERENCES Branch(branch_id)
  95. );
  96.  
  97. --employee table
  98. CREATE TABLE Employee(
  99. employee_ssn VARCHAR(11),
  100. employee_name VARCHAR(255) NOT NULL,
  101. employee_lname VARCHAR(255) NOT NULL,
  102. employee_factory INT NOT NULL,
  103. employee_branch INT NOT NULL,
  104. FOREIGN KEY (employee_ssn) REFERENCES Person(ssn),
  105. FOREIGN KEY (employee_factory) REFERENCES Factory(factory_id),
  106. FOREIGN KEY (employee_branch) REFERENCES Branch(branch_id)
  107. );
  108.  
  109. --store table
  110. CREATE TABLE Store(
  111. store_id INT PRIMARY KEY,
  112. store_name VARCHAR(255) NOT NULL,
  113. product_id VARCHAR(9),
  114. product_price DECIMAL(6,2),
  115. product_amount_received INT,
  116. date_received DATE,
  117. FOREIGN KEY (product_id) REFERENCES Product(product_id)
  118. );
  119.  
  120. --update the Store table to calculate the revenue received
  121. UPDATE STORE
  122. SET product_price = (SELECT Product.product_price * Store.product_amount_received
  123.                      FROM Product, Store
  124.                      WHERE Product.product_id = Store.product_id);
  125.                      
  126.  
  127. --sales table
  128. CREATE TABLE Sales(
  129. store_id int,
  130. revenue_date DATE NOT NULL,
  131. revenue DECIMAL(7,2),
  132. FOREIGN KEY (store_id) REFERENCES Store(store_id)
  133. );
  134.  
  135. --update to Sales, revenue date is the same as the day the store received the products
  136. UPDATE Sales
  137. SET revenue_date = (SELECT Store.date_received
  138.                     FROM Store);
  139.  
  140. ----update to Sales, revenue is the same as the price paid by the store
  141. UPDATE Sales
  142. SET revenue = (SELECT Store.product_price
  143.                 FROM Store);
  144.  
  145. --salaries table
  146. CREATE TABLE Salaries(
  147. worker_ssn VARCHAR(11),
  148. worker_branch_id INT,
  149. worker_salary DECIMAL(7,2),
  150. FOREIGN KEY (worker_ssn) REFERENCES Person(ssn),
  151. FOREIGN KEY (worker_branch_id) REFERENCES Branch(branch_id)
  152. );
  153.  
  154.  
  155. --update to salaries table, each branch has its own salary
  156. UPDATE salaries
  157. SET worker_salary =
  158.     CASE
  159.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 2500
  160.         WHEN worker_branch_id = 1 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 1500
  161.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 5500
  162.         WHEN worker_branch_id = 2 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 3500
  163.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT manager_ssn FROM Manager) THEN 1700
  164.         WHEN worker_branch_id = 3 AND worker_ssn IN (SELECT employee_ssn FROM Employee) THEN 900
  165.     END;
  166.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement