Advertisement
Guest User

Untitled

a guest
Nov 30th, 2015
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 10.60 KB | None | 0 0
  1. BEGIN
  2. FOR c IN (SELECT TABLE_NAME FROM user_tables) loop
  3. EXECUTE immediate ('drop table '||c.TABLE_NAME||' cascade constraints');
  4. END loop;
  5. END;
  6. /
  7. BEGIN
  8. FOR c IN (SELECT * FROM user_objects) loop
  9. EXECUTE immediate ('drop '||c.object_type||' '||c.object_name);
  10. END loop;
  11. END;
  12. /
  13.  
  14. -- Tables
  15.  
  16.  
  17. CREATE TABLE Departments (
  18. dabbreviation VARCHAR(10),
  19. dname VARCHAR(30),
  20. UNIQUE (dabbreviation),
  21. PRIMARY KEY (dname)
  22. );
  23. --hur gör vi denna unique?
  24.  
  25. CREATE TABLE Programmes (
  26. pabbreviation VARCHAR(3),
  27. pname VARCHAR(30),
  28. PRIMARY KEY (pname)
  29. );
  30.  
  31. CREATE TABLE Branches (
  32. programme REFERENCES programmes(pname),
  33. bname VARCHAR(30),
  34. PRIMARY KEY (bname, programme)
  35. );
  36.  
  37. CREATE TABLE Students (
  38. idnr INT,
  39. sname VARCHAR(30),
  40. cid VARCHAR(10),
  41. programme REFERENCES programmes(pname),
  42. UNIQUE (programme, idnr),
  43. PRIMARY KEY (idnr)
  44. );
  45.  
  46. CREATE TABLE Courses (
  47. courseid VARCHAR(6),
  48. cname VARCHAR(30),
  49. credits INT,
  50. CONSTRAINT NonNegativeCredits CHECK (credits > 0 ),
  51. department REFERENCES departments(dname),
  52. PRIMARY KEY(courseid)
  53. );
  54.  
  55. CREATE TABLE LimitedCourses (
  56. nrmaxstudents INT,
  57. courseid REFERENCES courses(courseid),
  58. CONSTRAINT NoNegativeSpace CHECK (nrmaxstudents > 0),
  59. PRIMARY KEY (courseid)
  60. );
  61.  
  62. CREATE TABLE classifications (
  63. TYPE VARCHAR(30),
  64. PRIMARY KEY (TYPE)
  65. );
  66.  
  67. --RELATIONER--
  68.  
  69. CREATE TABLE hosts (
  70. department REFERENCES departments(dname),
  71. programme REFERENCES programmes(pname),
  72. PRIMARY KEY (department, programme)
  73. );
  74.  
  75. CREATE TABLE READ (
  76. course REFERENCES courses(courseid),
  77. student REFERENCES students(idnr),
  78. grade VARCHAR(1),
  79. CONSTRAINT PossibleGrades CHECK (grade IN ('U',3,4,5)),
  80. PRIMARY KEY(course, student)
  81. );
  82.  
  83. CREATE TABLE isType (
  84. classification REFERENCES classifications(TYPE),
  85. course REFERENCES courses(courseid),
  86. PRIMARY KEY (classification, course)
  87. );
  88.  
  89. CREATE TABLE waiting (
  90. student REFERENCES students(idnr),
  91. limitedCourse REFERENCES limitedCourses(courseid),
  92. nrqueue INT,
  93. UNIQUE(nrqueue, limitedCourse),
  94. CONSTRAINT NoNegativeNrQueue CHECK (nrqueue > 0),
  95. PRIMARY KEY (student, limitedCourse)
  96. );
  97.  
  98. --CREATE TABLE regBranch (
  99. --student REFERENCES students(idnr),
  100. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  101. --FOREIGN KEY (student, programme) REFERENCES students(idnr, programme),
  102. --PRIMARY KEY (student)
  103. --);
  104. --BRANCHES är tokig? VARFÖR?
  105.  
  106. CREATE TABLE regCourse (
  107. student REFERENCES students(idnr),
  108. course REFERENCES courses(courseid),
  109. PRIMARY KEY (student, course)
  110. );
  111.  
  112. CREATE TABLE programmeMandatory (
  113. programme REFERENCES programmes(pname),
  114. course REFERENCES courses(courseid),
  115. PRIMARY KEY (programme, course)
  116. );
  117. --
  118. --CREATE TABLE branchMandatory (
  119. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  120. --course REFERENCES courses(courseid),
  121. --PRIMARY KEY (branch, programme, course)
  122. --);
  123.  
  124. --CREATE TABLE branchRecommended (
  125. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  126. --course REFERENCES courses(courseid),
  127. --PRIMARY KEY (branch, programme, course)
  128. --);
  129.  
  130. CREATE TABLE prerequisites (
  131. required REFERENCES courses(courseid),
  132. notrequired REFERENCES courses(courseid),
  133. PRIMARY KEY (required, notrequired)
  134. );
  135.  
  136.  
  137.  
  138.  
  139. --INSERT
  140. --PROGRAMME
  141. INSERT INTO Programmes
  142.   VALUES ('I', 'Industriell Ekonomi');
  143. INSERT INTO Programmes
  144.   VALUES ('V', 'Väg och Vatten');
  145. INSERT INTO Programmes
  146.   VALUES ('F', 'Fysik');
  147. INSERT INTO Programmes
  148.   VALUES ('D', 'Data');
  149.  
  150. --Branches
  151.  
  152. INSERT INTO Branches
  153.   VALUES ('Industriell Ekonomi', 'IT');
  154. INSERT INTO Branches
  155.   VALUES ('Industriell Ekonomi', 'Kemi');
  156. INSERT INTO Branches
  157.   VALUES ('Väg och Vatten', 'IT');
  158. INSERT INTO Branches
  159.   VALUES ('Väg och Vatten', 'Geo');
  160. INSERT INTO Branches
  161.   VALUES ('Väg och Vatten', 'Båtar');
  162. INSERT INTO Branches
  163.   VALUES ('Fysik', 'IT');
  164. INSERT INTO Branches
  165.   VALUES ('Fysik', 'Matte');
  166. INSERT INTO Branches
  167.   VALUES ('Fysik', 'Heisenberg');
  168. INSERT INTO Branches
  169.   VALUES ('Data', 'Matte');
  170. INSERT INTO Branches
  171.   VALUES ('Data', 'Databaser');
  172.  
  173. --Students
  174. INSERT INTO Students
  175.   VALUES ('9309206341', 'Amanda Axman', 'AXMANA', 'Industriell Ekonomi');
  176. INSERT INTO Students
  177.   VALUES ('9309206342', 'Amanda Bxman', 'AXMBNA', 'Väg och Vatten');
  178. INSERT INTO Students
  179.   VALUES ('9309206343', 'Amanda Cxman', 'AXMCNA', 'Fysik');
  180. INSERT INTO Students
  181.   VALUES ('9309206344', 'Amanda Dxman', 'AXMDNA', 'Data');
  182.  
  183. --Departments
  184. INSERT INTO Departments
  185.   VALUES ('DA','DepartementA');
  186. INSERT INTO Departments
  187.   VALUES ('DB','DepartementB');
  188. INSERT INTO Departments
  189.   VALUES ('DC','DepartementC');
  190.  
  191. --Courses
  192. INSERT INTO Courses
  193.   VALUES ('TDA357', 'Databaser A', 15, 'DepartementA');
  194. INSERT INTO Courses
  195.   VALUES ('TDA457', 'Databaser B', 15,'DepartementA');
  196. INSERT INTO Courses
  197.   VALUES ('TDA666', 'Databaser C', 25, 'DepartementB');
  198. INSERT INTO Courses
  199.   VALUES ('ADS999', 'Databaser F', 5, 'DepartementB');
  200. INSERT INTO Courses
  201.   VALUES ('FDS123', 'Databaser T', 3, 'DepartementC');
  202.  
  203. --Classification
  204. INSERT INTO Classifications
  205.   VALUES ('Matematik');
  206. INSERT INTO Classifications
  207.   VALUES ('Fysik');
  208. INSERT INTO Classifications
  209.   VALUES ('Kemi');
  210. INSERT INTO Classifications
  211.   VALUES ('Ekonomi');
  212.  
  213.  --
  214. --Limited Courses
  215.  
  216.  
  217.  
  218. BEGIN
  219. FOR c IN (SELECT TABLE_NAME FROM user_tables) loop
  220. EXECUTE immediate ('drop table '||c.TABLE_NAME||' cascade constraints');
  221. END loop;
  222. END;
  223. /
  224. BEGIN
  225. FOR c IN (SELECT * FROM user_objects) loop
  226. EXECUTE immediate ('drop '||c.object_type||' '||c.object_name);
  227. END loop;
  228. END;
  229. /
  230.  
  231. -- Tables
  232.  
  233.  
  234. CREATE TABLE Departments (
  235. dabbreviation VARCHAR(10),
  236. dname VARCHAR(30),
  237. UNIQUE (dabbreviation),
  238. PRIMARY KEY (dname)
  239. );
  240. --hur gör vi denna unique?
  241.  
  242. CREATE TABLE Programmes (
  243. pabbreviation VARCHAR(3),
  244. pname VARCHAR(30),
  245. PRIMARY KEY (pname)
  246. );
  247.  
  248. CREATE TABLE Branches (
  249. programme REFERENCES programmes(pname),
  250. bname VARCHAR(30),
  251. PRIMARY KEY (bname, programme)
  252. );
  253.  
  254. CREATE TABLE Students (
  255. idnr INT,
  256. sname VARCHAR(30),
  257. cid VARCHAR(10),
  258. programme REFERENCES programmes(pname),
  259. UNIQUE (programme, idnr),
  260. PRIMARY KEY (idnr)
  261. );
  262.  
  263. CREATE TABLE Courses (
  264. courseid VARCHAR(6),
  265. cname VARCHAR(30),
  266. credits INT,
  267. CONSTRAINT NonNegativeCredits CHECK (credits > 0 ),
  268. department REFERENCES departments(dname),
  269. PRIMARY KEY(courseid)
  270. );
  271.  
  272. CREATE TABLE LimitedCourses (
  273. nrmaxstudents INT,
  274. courseid REFERENCES courses(courseid),
  275. CONSTRAINT NoNegativeSpace CHECK (nrmaxstudents > 0),
  276. PRIMARY KEY (courseid)
  277. );
  278.  
  279. CREATE TABLE classifications (
  280. TYPE VARCHAR(30),
  281. PRIMARY KEY (TYPE)
  282. );
  283.  
  284. --RELATIONER--
  285.  
  286. CREATE TABLE hosts (
  287. department REFERENCES departments(dname),
  288. programme REFERENCES programmes(pname),
  289. PRIMARY KEY (department, programme)
  290. );
  291.  
  292. CREATE TABLE READ (
  293. course REFERENCES courses(courseid),
  294. student REFERENCES students(idnr),
  295. grade VARCHAR(1),
  296. CONSTRAINT PossibleGrades CHECK (grade IN ('U',3,4,5)),
  297. PRIMARY KEY(course, student)
  298. );
  299.  
  300. CREATE TABLE isType (
  301. classification REFERENCES classifications(TYPE),
  302. course REFERENCES courses(courseid),
  303. PRIMARY KEY (classification, course)
  304. );
  305.  
  306. CREATE TABLE waiting (
  307. student REFERENCES students(idnr),
  308. limitedCourse REFERENCES limitedCourses(courseid),
  309. nrqueue INT,
  310. UNIQUE(nrqueue, limitedCourse),
  311. CONSTRAINT NoNegativeNrQueue CHECK (nrqueue > 0),
  312. PRIMARY KEY (student, limitedCourse)
  313. );
  314.  
  315. --CREATE TABLE regBranch (
  316. --student REFERENCES students(idnr),
  317. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  318. --FOREIGN KEY (student, programme) REFERENCES students(idnr, programme),
  319. --PRIMARY KEY (student)
  320. --);
  321. --BRANCHES är tokig? VARFÖR?
  322.  
  323. CREATE TABLE regCourse (
  324. student REFERENCES students(idnr),
  325. course REFERENCES courses(courseid),
  326. PRIMARY KEY (student, course)
  327. );
  328.  
  329. CREATE TABLE programmeMandatory (
  330. programme REFERENCES programmes(pname),
  331. course REFERENCES courses(courseid),
  332. PRIMARY KEY (programme, course)
  333. );
  334. --
  335. --CREATE TABLE branchMandatory (
  336. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  337. --course REFERENCES courses(courseid),
  338. --PRIMARY KEY (branch, programme, course)
  339. --);
  340.  
  341. --CREATE TABLE branchRecommended (
  342. --FOREIGN KEY (branch, programme) REFERENCES branches(bname, programme),
  343. --course REFERENCES courses(courseid),
  344. --PRIMARY KEY (branch, programme, course)
  345. --);
  346.  
  347. CREATE TABLE prerequisites (
  348. required REFERENCES courses(courseid),
  349. notrequired REFERENCES courses(courseid),
  350. PRIMARY KEY (required, notrequired)
  351. );
  352.  
  353.  
  354.  
  355.  
  356. --INSERT
  357. --PROGRAMME
  358. INSERT INTO Programmes
  359.   VALUES ('I', 'Industriell Ekonomi');
  360. INSERT INTO Programmes
  361.   VALUES ('V', 'Väg och Vatten');
  362. INSERT INTO Programmes
  363.   VALUES ('F', 'Fysik');
  364. INSERT INTO Programmes
  365.   VALUES ('D', 'Data');
  366.  
  367. --Branches
  368.  
  369. INSERT INTO Branches
  370.   VALUES ('Industriell Ekonomi', 'IT');
  371. INSERT INTO Branches
  372.   VALUES ('Industriell Ekonomi', 'Kemi');
  373. INSERT INTO Branches
  374.   VALUES ('Väg och Vatten', 'IT');
  375. INSERT INTO Branches
  376.   VALUES ('Väg och Vatten', 'Geo');
  377. INSERT INTO Branches
  378.   VALUES ('Väg och Vatten', 'Båtar');
  379. INSERT INTO Branches
  380.   VALUES ('Fysik', 'IT');
  381. INSERT INTO Branches
  382.   VALUES ('Fysik', 'Matte');
  383. INSERT INTO Branches
  384.   VALUES ('Fysik', 'Heisenberg');
  385. INSERT INTO Branches
  386.   VALUES ('Data', 'Matte');
  387. INSERT INTO Branches
  388.   VALUES ('Data', 'Databaser');
  389.  
  390. --Students
  391. INSERT INTO Students
  392.   VALUES ('9309206341', 'Amanda Axman', 'AXMANA', 'Industriell Ekonomi');
  393. INSERT INTO Students
  394.   VALUES ('9309206342', 'Amanda Bxman', 'AXMBNA', 'Väg och Vatten');
  395. INSERT INTO Students
  396.   VALUES ('9309206343', 'Amanda Cxman', 'AXMCNA', 'Fysik');
  397. INSERT INTO Students
  398.   VALUES ('9309206344', 'Amanda Dxman', 'AXMDNA', 'Data');
  399.  
  400. --Departments
  401. INSERT INTO Departments
  402.   VALUES ('DA','DepartementA');
  403. INSERT INTO Departments
  404.   VALUES ('DB','DepartementB');
  405. INSERT INTO Departments
  406.   VALUES ('DC','DepartementC');
  407.  
  408. --Courses
  409. INSERT INTO Courses
  410.   VALUES ('IT101', 'Databaser A', 15, 'DepartementA');
  411. INSERT INTO Courses
  412.   VALUES ('MA101', 'MatteB', 15,'DepartementA');
  413. INSERT INTO Courses
  414.   VALUES ('FY101', 'Fysik C', 25, 'DepartementB');
  415. INSERT INTO Courses
  416.   VALUES ('EK101', 'Ekonomi F', 5, 'DepartementB');
  417. INSERT INTO Courses
  418.   VALUES ('KE101', 'Kemi T', 3, 'DepartementC');
  419.  
  420. --Classifications
  421. INSERT INTO Classifications
  422.   VALUES ('Matematik');
  423. INSERT INTO Classifications
  424.   VALUES ('Fysik');
  425. INSERT INTO Classifications
  426.   VALUES ('Kemi');
  427. INSERT INTO Classifications
  428.   VALUES ('Ekonomi');
  429. INSERT INTO Classifications
  430.   VALUES ('IT');
  431.  
  432. --isType
  433. INSERT INTO isType
  434.   VALUES ('Matematik', 'MA101');
  435. INSERT INTO isType
  436.   VALUES ('Fysik', 'FY101');
  437. INSERT INTO isType
  438.   VALUES ('Kemi', 'KE101');
  439. INSERT INTO isType
  440.   VALUES ('Ekonomi', 'EK101');
  441. INSERT INTO isType
  442.   VALUES ('IT', 'IT101');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement