Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1. -- Generated by Oracle SQL Developer Data Modeler 18.4.0.339.1536
  2. -- at: 2019-04-21 17:13:10 EDT
  3. -- site: Oracle Database 11g
  4. -- type: Oracle Database 11g
  5.  
  6.  
  7.  
  8. CREATE TABLE appointment (
  9. appointment_id INTEGER NOT NULL,
  10. doctor_id INTEGER NOT NULL,
  11. patient_id INTEGER NOT NULL,
  12. reason VARCHAR2(30 BYTE),
  13. appointment_date VARCHAR2(50 BYTE)
  14. );
  15.  
  16. ALTER TABLE appointment ADD CONSTRAINT appointment_pk PRIMARY KEY ( appointment_id );
  17.  
  18. CREATE TABLE contacts (
  19. product_id INTEGER NOT NULL,
  20. brand VARCHAR2(50 BYTE),
  21. type VARCHAR2(50 BYTE),
  22. color VARCHAR2(50 BYTE)
  23. );
  24.  
  25. ALTER TABLE contacts ADD CONSTRAINT contacts_pk PRIMARY KEY ( product_id );
  26.  
  27. CREATE TABLE doctor (
  28. doctor_id INTEGER NOT NULL,
  29. first_name VARCHAR2(20 BYTE),
  30. last_name VARCHAR2(20 BYTE),
  31. specialization VARCHAR2(20 BYTE)
  32. );
  33.  
  34. ALTER TABLE doctor ADD CONSTRAINT doctor_pk PRIMARY KEY ( doctor_id );
  35.  
  36. CREATE TABLE frames (
  37. product_id INTEGER NOT NULL,
  38. brand VARCHAR2(50 BYTE),
  39. "Size" VARCHAR2(50 BYTE),
  40. color VARCHAR2(50 BYTE),
  41. material VARCHAR2(50 BYTE)
  42. );
  43.  
  44. ALTER TABLE frames ADD CONSTRAINT frames_pk PRIMARY KEY ( product_id );
  45.  
  46. CREATE TABLE medical_insurance (
  47. patient_id INTEGER NOT NULL,
  48. insurance_name VARCHAR2(30 BYTE),
  49. member_id INTEGER,
  50. group_number INTEGER,
  51. insurance_type VARCHAR2(10 BYTE),
  52. co_pay FLOAT
  53. );
  54.  
  55. ALTER TABLE medical_insurance ADD CONSTRAINT medical_insurance_pk PRIMARY KEY ( patient_id );
  56.  
  57. CREATE TABLE order_line (
  58. product_id INTEGER NOT NULL,
  59. quantity INTEGER,
  60. order_id INTEGER NOT NULL
  61. );
  62.  
  63. ALTER TABLE order_line ADD CONSTRAINT order_line_pk PRIMARY KEY ( product_id,
  64. order_id );
  65.  
  66. CREATE TABLE orders (
  67. order_id INTEGER NOT NULL,
  68. order_date VARCHAR2(50 BYTE),
  69. order_total INTEGER,
  70. patient_id INTEGER NOT NULL
  71. );
  72.  
  73. ALTER TABLE orders ADD CONSTRAINT orders_pk PRIMARY KEY ( order_id );
  74.  
  75. CREATE TABLE patient (
  76. patient_id INTEGER NOT NULL,
  77. first_name VARCHAR2(30 BYTE),
  78. last_name VARCHAR2(30 BYTE),
  79. sex VARCHAR2(10 BYTE),
  80. dob VARCHAR2(50 BYTE),
  81. phone_number VARCHAR2(20 BYTE),
  82. address VARCHAR2(50 BYTE),
  83. city VARCHAR2(20 BYTE),
  84. state VARCHAR2(10 BYTE),
  85. zip VARCHAR2(10 BYTE),
  86. ssn VARCHAR2(20 BYTE),
  87. preferred_pharmacy VARCHAR2(50 BYTE),
  88. preferred_pharmacy_address VARCHAR2(50 BYTE)
  89. );
  90.  
  91. ALTER TABLE patient ADD CONSTRAINT patient_pk PRIMARY KEY ( patient_id );
  92.  
  93. CREATE TABLE prescription (
  94. rx_id INTEGER NOT NULL,
  95. doctor_id INTEGER NOT NULL,
  96. patient_id INTEGER NOT NULL,
  97. rx_date VARCHAR2(50 BYTE),
  98. drug VARCHAR2(50 BYTE),
  99. dosage VARCHAR2(50 BYTE)
  100. );
  101.  
  102. ALTER TABLE prescription ADD CONSTRAINT prescription_pk PRIMARY KEY ( rx_id );
  103.  
  104. CREATE TABLE product (
  105. product_id INTEGER NOT NULL,
  106. product_name VARCHAR2(50 BYTE),
  107. product_description VARCHAR2(50 BYTE),
  108. unit_price NUMBER(10, 10),
  109. product_type VARCHAR2(8) NOT NULL
  110. );
  111.  
  112. ALTER TABLE product
  113. ADD CONSTRAINT ch_inh_product CHECK ( product_type IN (
  114. 'Contacts',
  115. 'Frames'
  116. ) );
  117.  
  118. ALTER TABLE product ADD CONSTRAINT product_pk PRIMARY KEY ( product_id );
  119.  
  120. CREATE TABLE vision_plan (
  121. patient_id INTEGER NOT NULL,
  122. plan_name VARCHAR2(30),
  123. member_id INTEGER,
  124. group_number INTEGER,
  125. plan_type VARCHAR2(20 BYTE)
  126. );
  127.  
  128. ALTER TABLE vision_plan ADD CONSTRAINT vision_plan_pk PRIMARY KEY ( patient_id );
  129.  
  130. ALTER TABLE appointment
  131. ADD CONSTRAINT appointment_doctor_fk FOREIGN KEY ( doctor_id )
  132. REFERENCES doctor ( doctor_id );
  133.  
  134. ALTER TABLE appointment
  135. ADD CONSTRAINT appointment_patient_fk FOREIGN KEY ( patient_id )
  136. REFERENCES patient ( patient_id );
  137.  
  138. ALTER TABLE contacts
  139. ADD CONSTRAINT contacts_product_fk FOREIGN KEY ( product_id )
  140. REFERENCES product ( product_id );
  141.  
  142. ALTER TABLE frames
  143. ADD CONSTRAINT frames_product_fk FOREIGN KEY ( product_id )
  144. REFERENCES product ( product_id );
  145.  
  146. ALTER TABLE medical_insurance
  147. ADD CONSTRAINT medical_insurance_patient_fk FOREIGN KEY ( patient_id )
  148. REFERENCES patient ( patient_id );
  149.  
  150. ALTER TABLE order_line
  151. ADD CONSTRAINT order_line_orders_fk FOREIGN KEY ( order_id )
  152. REFERENCES orders ( order_id );
  153.  
  154. ALTER TABLE order_line
  155. ADD CONSTRAINT order_line_product_fk FOREIGN KEY ( product_id )
  156. REFERENCES product ( product_id );
  157.  
  158. ALTER TABLE orders
  159. ADD CONSTRAINT orders_patient_fk FOREIGN KEY ( patient_id )
  160. REFERENCES patient ( patient_id );
  161.  
  162. ALTER TABLE prescription
  163. ADD CONSTRAINT prescription_doctor_fk FOREIGN KEY ( doctor_id )
  164. REFERENCES doctor ( doctor_id );
  165.  
  166. ALTER TABLE prescription
  167. ADD CONSTRAINT prescription_patient_fk FOREIGN KEY ( patient_id )
  168. REFERENCES patient ( patient_id );
  169.  
  170. ALTER TABLE vision_plan
  171. ADD CONSTRAINT vision_plan_patient_fk FOREIGN KEY ( patient_id )
  172. REFERENCES patient ( patient_id );
  173.  
  174. CREATE OR REPLACE TRIGGER arc_fkarc_2_frames BEFORE
  175. INSERT OR UPDATE OF product_id ON frames
  176. FOR EACH ROW
  177. DECLARE
  178. d VARCHAR2(8);
  179. BEGIN
  180. SELECT
  181. a.product_type
  182. INTO d
  183. FROM
  184. product a
  185. WHERE
  186. a.product_id = :new.product_id;
  187.  
  188. IF ( d IS NULL OR d <> 'Frames' ) THEN
  189. raise_application_error(-20223, 'FK Frames_Product_FK in Table Frames violates Arc constraint on Table Product - discriminator column Product_TYPE doesn''t have value ''Frames'''
  190. );
  191. END IF;
  192.  
  193. EXCEPTION
  194. WHEN no_data_found THEN
  195. NULL;
  196. WHEN OTHERS THEN
  197. RAISE;
  198. END;
  199. /
  200.  
  201. CREATE OR REPLACE TRIGGER arc_fkarc_2_contacts BEFORE
  202. INSERT OR UPDATE OF product_id ON contacts
  203. FOR EACH ROW
  204. DECLARE
  205. d VARCHAR2(8);
  206. BEGIN
  207. SELECT
  208. a.product_type
  209. INTO d
  210. FROM
  211. product a
  212. WHERE
  213. a.product_id = :new.product_id;
  214.  
  215. IF ( d IS NULL OR d <> 'Contacts' ) THEN
  216. raise_application_error(-20223, 'FK Contacts_Product_FK in Table Contacts violates Arc constraint on Table Product - discriminator column Product_TYPE doesn''t have value ''Contacts'''
  217. );
  218. END IF;
  219.  
  220. EXCEPTION
  221. WHEN no_data_found THEN
  222. NULL;
  223. WHEN OTHERS THEN
  224. RAISE;
  225. END;
  226. /
  227.  
  228.  
  229.  
  230. -- Oracle SQL Developer Data Modeler Summary Report:
  231. --
  232. -- CREATE TABLE 11
  233. -- CREATE INDEX 0
  234. -- ALTER TABLE 23
  235. -- CREATE VIEW 0
  236. -- ALTER VIEW 0
  237. -- CREATE PACKAGE 0
  238. -- CREATE PACKAGE BODY 0
  239. -- CREATE PROCEDURE 0
  240. -- CREATE FUNCTION 0
  241. -- CREATE TRIGGER 2
  242. -- ALTER TRIGGER 0
  243. -- CREATE COLLECTION TYPE 0
  244. -- CREATE STRUCTURED TYPE 0
  245. -- CREATE STRUCTURED TYPE BODY 0
  246. -- CREATE CLUSTER 0
  247. -- CREATE CONTEXT 0
  248. -- CREATE DATABASE 0
  249. -- CREATE DIMENSION 0
  250. -- CREATE DIRECTORY 0
  251. -- CREATE DISK GROUP 0
  252. -- CREATE ROLE 0
  253. -- CREATE ROLLBACK SEGMENT 0
  254. -- CREATE SEQUENCE 0
  255. -- CREATE MATERIALIZED VIEW 0
  256. -- CREATE MATERIALIZED VIEW LOG 0
  257. -- CREATE SYNONYM 0
  258. -- CREATE TABLESPACE 0
  259. -- CREATE USER 0
  260. --
  261. -- DROP TABLESPACE 0
  262. -- DROP DATABASE 0
  263. --
  264. -- REDACTION POLICY 0
  265. --
  266. -- ORDS DROP SCHEMA 0
  267. -- ORDS ENABLE SCHEMA 0
  268. -- ORDS ENABLE OBJECT 0
  269. --
  270. -- ERRORS 0
  271. -- WARNINGS 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement