Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.47 KB | None | 0 0
  1. #----------------------------------------------------------------------------------------------------------#
  2. -- here is the failsafe method to turn off contraints and allows
  3. -- you to drop the tables safely then turn contraints back on
  4. SET FOREIGN_KEY_CHECKS=0;
  5. #table drops
  6. DROP TABLE IF EXISTS Hospital;
  7. DROP TABLE IF EXISTS Patients;
  8. DROP TABLE IF EXISTS Staff;
  9. DROP TABLE IF EXISTS Medication;
  10. DROP TABLE IF EXISTS Ward;
  11. #logical table drops
  12. DROP TABLE IF EXISTS patientMedication;
  13. DROP TABLE IF EXISTS patientsOnWard;
  14. DROP TABLE IF EXISTS prescribesMedication;
  15. DROP TABLE IF EXISTS hospitalPatients;
  16. #trigger drops
  17. DROP TABLE IF EXISTS table1_seq;
  18. DROP TABLE IF EXISTS table2_seq;
  19. DROP TABLE IF EXISTS table3_seq;
  20. DROP TABLE IF EXISTS table4_seq;
  21. DROP TABLE IF EXISTS table5_seq;
  22. SET FOREIGN_KEY_CHECKS=1;
  23. #----------------------------------------------------------------------------------------------------------#
  24.  
  25. CREATE TABLE IF NOT EXISTS Hospital (
  26. hospitalID VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0',
  27. hospitalName VARCHAR(50) NOT NULL,
  28. postcode CHAR(8) NOT NULL,
  29. generalPhone VARCHAR(14) NOT NULL,
  30. generalEmail VARCHAR(50),
  31. hospitalManager VARCHAR(50)
  32. ) ENGINE=INNODB;
  33.  
  34. CREATE TABLE table1_seq (
  35. hospitalID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  36. );
  37.  
  38. DELIMITER $$
  39. CREATE TRIGGER tg_table1_insert
  40. BEFORE INSERT ON Hospital
  41. FOR EACH ROW
  42. BEGIN
  43. INSERT INTO table1_seq VALUES (NULL);
  44. SET NEW.hospitalID = CONCAT('NHS', LPAD(LAST_INSERT_ID(), 3, '0'));
  45. END$$
  46. DELIMITER ;
  47.  
  48. CREATE TABLE IF NOT EXISTS Patients (
  49. nationalInsuranceNo VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0',
  50. patientForename VARCHAR(50) NOT NULL,
  51. patientSurname VARCHAR(50) NOT NULL,
  52. phoneNo CHAR(14),
  53. nextOfKin VARCHAR(50)
  54. );
  55.  
  56. CREATE TABLE table2_seq (
  57. nationalInsuranceNo INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  58. );
  59.  
  60. DELIMITER $$
  61. CREATE TRIGGER tg_table2_insert
  62. BEFORE INSERT ON Patients
  63. FOR EACH ROW
  64. BEGIN
  65. INSERT INTO table2_seq VALUES (NULL);
  66. SET NEW.nationalInsuranceNo = CONCAT('PAT', LPAD(LAST_INSERT_ID(), 3, '0'));
  67. END$$
  68. DELIMITER ;
  69.  
  70. CREATE TABLE IF NOT EXISTS Staff (
  71. staffID VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0',
  72. staffForename VARCHAR(50) NOT NULL,
  73. staffSurname VARCHAR(50) NOT NULL,
  74. salary DECIMAL(8 , 2 ),
  75. position VARCHAR(50)
  76. );
  77.  
  78. CREATE TABLE table3_seq (
  79. staffID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  80. );
  81.  
  82. DELIMITER $$
  83. CREATE TRIGGER tg_table3_insert
  84. BEFORE INSERT ON Staff
  85. FOR EACH ROW
  86. BEGIN
  87. INSERT INTO table3_seq VALUES (NULL);
  88. SET NEW.staffID = CONCAT('STA', LPAD(LAST_INSERT_ID(), 3, '0'));
  89. END$$
  90. DELIMITER ;
  91.  
  92. CREATE TABLE IF NOT EXISTS Medication (
  93. medID VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0',
  94. medicationName VARCHAR(50) NOT NULL,
  95. contraIndicator VARCHAR(50),
  96. medDose VARCHAR(50) NOT NULL,
  97. medUsage VARCHAR(50) NOT NULL
  98. );
  99.  
  100. CREATE TABLE table4_seq (
  101. medID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  102. );
  103.  
  104. DELIMITER $$
  105. CREATE TRIGGER tg_table4_insert
  106. BEFORE INSERT ON Medication
  107. FOR EACH ROW
  108. BEGIN
  109. INSERT INTO table4_seq VALUES (NULL);
  110. SET NEW.medID = CONCAT('MED', LPAD(LAST_INSERT_ID(), 3, '0'));
  111. END$$
  112. DELIMITER ;
  113.  
  114. CREATE TABLE IF NOT EXISTS Ward (
  115. wardID VARCHAR(10) NOT NULL PRIMARY KEY DEFAULT '0',
  116. staffID CHAR(10) NOT NULL,
  117. hospitalID CHAR(10) NOT NULL,
  118. wardName VARCHAR(50) NOT NULL,
  119. specialism VARCHAR(50) NOT NULL,
  120. FOREIGN KEY (staffID)
  121. REFERENCES Staff (staffID),
  122. FOREIGN KEY (hospitalID)
  123. REFERENCES Hospital (hospitalID)
  124. );
  125.  
  126. CREATE TABLE table5_seq (
  127. wardID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  128. );
  129.  
  130. DELIMITER $$
  131. CREATE TRIGGER tg_table5_insert
  132. BEFORE INSERT ON Ward
  133. FOR EACH ROW
  134. BEGIN
  135. INSERT INTO table5_seq VALUES (NULL);
  136. SET NEW.wardID = CONCAT('WAR', LPAD(LAST_INSERT_ID(), 3, '0'));
  137. END$$
  138. DELIMITER ;
  139.  
  140. -- logical
  141. CREATE TABLE IF NOT EXISTS hospitalPatients (
  142. nationalInsuranceNo CHAR(10) NOT NULL,
  143. hospitalID CHAR(10) NOT NULL,
  144. dateOfAdmission DATE NOT NULL,
  145. PRIMARY KEY (nationalInsuranceNo , hospitalID),
  146. FOREIGN KEY (nationalInsuranceNo)
  147. REFERENCES Patients (nationalInsuranceNo),
  148. FOREIGN KEY (hospitalID)
  149. REFERENCES Hospital (hospitalID)
  150. );
  151.  
  152. -- logical
  153. CREATE TABLE IF NOT EXISTS patientsOnWard (
  154. wardID CHAR(10) NOT NULL,
  155. nationalInsuranceNo CHAR(10) NOT NULL,
  156. hospitalID CHAR(10) NOT NULL,
  157. PRIMARY KEY (wardID , nationalInsuranceNo , hospitalID),
  158. FOREIGN KEY (wardID)
  159. REFERENCES Ward (wardID),
  160. FOREIGN KEY (nationalInsuranceNo)
  161. REFERENCES Patients (nationalInsuranceNo),
  162. FOREIGN KEY (hospitalID)
  163. REFERENCES Hospital (hospitalID)
  164. );
  165.  
  166. -- logical
  167. CREATE TABLE IF NOT EXISTS patientMedication (
  168. medID CHAR(10) NOT NULL,
  169. nationalInsuranceNo CHAR(10) NOT NULL,
  170. medStart DATE NOT NULL,
  171. medEnd DATE NOT NULL,
  172. PRIMARY KEY (medID , nationalInsuranceNo),
  173. FOREIGN KEY (medID)
  174. REFERENCES Medication (medID),
  175. FOREIGN KEY (nationalInsuranceNo)
  176. REFERENCES Patients (nationalInsuranceNo)
  177. );
  178.  
  179. -- logical
  180. CREATE TABLE IF NOT EXISTS prescribesMedication (
  181. medID CHAR(10) NOT NULL,
  182. staffID CHAR(10) NOT NULL,
  183. PRIMARY KEY (medID , staffID),
  184. FOREIGN KEY (medID)
  185. REFERENCES Medication (medID),
  186. FOREIGN KEY (staffID)
  187. REFERENCES Staff (staffID)
  188. );
  189.  
  190. #----------------------------------------------------------------------------------------------------------#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement