Advertisement
Guest User

Untitled

a guest
Dec 7th, 2016
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.09 KB | None | 0 0
  1. alter user aiws1617030
  2. identified by Weeddreams128;
  3.  
  4.  
  5. DROP TABLE Dozent
  6. CASCADE CONSTRAINTS;
  7.  
  8. DROP TABLE Student
  9. CASCADE CONSTRAINTS;
  10.  
  11. DROP TABLE Veranstaltung
  12. CASCADE CONSTRAINTS;
  13.  
  14. DROP TABLE Studiengang
  15. CASCADE CONSTRAINTS;
  16.  
  17. DROP TABLE Halten
  18. CASCADE CONSTRAINTS;
  19.  
  20. DROP TABLE BESUCHEN
  21. CASCADE CONSTRAINTS;
  22.  
  23. DROP TABLE Pruefung
  24. CASCADE CONSTRAINTS;
  25.  
  26. DROP TABLE FACHBEREICH
  27. CASCADE CONSTRAINTS;
  28.  
  29. DROP SEQUENCE doznr_Seq;
  30. DROP SEQUENCE matnr_Seq;
  31. DROP SEQUENCE vnr_seq;
  32. DROP SEQUENCE stgnr_seq;
  33. DROP SEQUENCE fbnr_seq;
  34.  
  35. CREATE TABLE Dozent
  36. (
  37. doznr INTEGER,
  38. name VARCHAR(20),
  39. vorname VARCHAR(20),
  40. gebdat DATE,
  41. geschlecht CHAR(1),
  42. buero VARCHAR(10),
  43. telnr VARCHAR(20),
  44. email VARCHAR(40),
  45. einstelldatum DATE,
  46. fachgebiet VARCHAR(30),
  47. fachbereich VARCHAR(30)
  48. );
  49.  
  50. CREATE TABLE Student
  51. (
  52. matnr INTEGER,
  53. name VARCHAR(20),
  54. vorname VARCHAR(20),
  55. gebdat DATE,
  56. geschlecht CHAR(1),
  57. email VARCHAR(40),
  58. eingeschrieben_seit DATE,
  59. stgnr INTEGER
  60. );
  61.  
  62. CREATE TABLE Veranstaltung
  63. (
  64. vnr INTEGER,
  65. vtitel VARCHAR(20),
  66. vtyp VARCHAR(20),
  67. stgnr INTEGER
  68. );
  69.  
  70. CREATE TABLE Studiengang
  71. (
  72. stgnr INTEGER,
  73. bezeichnung VARCHAR(30),
  74. fachbereich VARCHAR(30)
  75. );
  76.  
  77. CREATE TABLE Halten
  78. (
  79. doznr INTEGER,
  80. vnr INTEGER,
  81. semester VARCHAR(10)
  82. );
  83.  
  84. CREATE TABLE Besuchen
  85. (
  86. matnr INTEGER,
  87. vnr INTEGER,
  88. semester VARCHAR(10)
  89. );
  90.  
  91. CREATE TABLE Pruefung
  92. (
  93. doznr INTEGER,
  94. matnr INTEGER,
  95. vnr INTEGER,
  96. datum DATE,
  97. note DECIMAL(2,1)
  98. );
  99.  
  100. ALTER TABLE Dozent
  101. ADD CONSTRAINT pk_doz PRIMARY KEY(doznr);
  102.  
  103. ALTER TABLE Student
  104. ADD CONSTRAINT pk_stud PRIMARY KEY(matnr);
  105.  
  106. ALTER TABLE Veranstaltung
  107. ADD CONSTRAINT pk_ver PRIMARY KEY(vnr);
  108.  
  109. ALTER TABLE Studiengang
  110. ADD CONSTRAINT pk_studg PRIMARY KEY(stgnr);
  111.  
  112. ALTER TABLE Halten
  113. ADD CONSTRAINT pk_hal PRIMARY KEY(doznr,vnr,semester);
  114.  
  115. ALTER TABLE Besuchen
  116. ADD CONSTRAINT pk_bes PRIMARY KEY(matnr,vnr,semester);
  117.  
  118. ALTER TABLE Pruefung
  119. ADD CONSTRAINT pk_pruef PRIMARY KEY(doznr,matnr,vnr,datum);
  120.  
  121.  
  122. ALTER TABLE Student
  123. ADD CONSTRAINT fk_stud_Stg FOREIGN KEY(stgnr)
  124. REFERENCES Studiengang(stgnr);
  125.  
  126. ALTER TABLE Veranstaltung
  127. ADD CONSTRAINT fk_vera_stg FOREIGN KEY(stgnr)
  128. REFERENCES Studiengang(stgnr);
  129.  
  130. ALTER TABLE Halten
  131. ADD CONSTRAINT fk_hal_doz FOREIGN KEY(doznr)
  132. REFERENCES Dozent(doznr);
  133.  
  134. ALTER TABLE Halten
  135. ADD CONSTRAINT fk_hal_ver FOREIGN KEY(vnr)
  136. REFERENCES Veranstaltung(vnr);
  137.  
  138. ALTER TABLE Besuchen
  139. ADD CONSTRAINT fk_bes_ver FOREIGN KEY(vnr)
  140. REFERENCES Veranstaltung(vnr);
  141.  
  142. ALTER TABLE Besuchen
  143. ADD CONSTRAINT fk_bes_matr FOREIGN KEY(matnr)
  144. REFERENCES Student(matnr);
  145.  
  146. ALTER TABLE Pruefung
  147. ADD CONSTRAINT fk_pruef_doz FOREIGN KEY(doznr)
  148. REFERENCES Dozent(doznr);
  149.  
  150. ALTER TABLE Pruefung
  151. ADD CONSTRAINT fk_pruef_stud FOREIGN KEY(matnr)
  152. REFERENCES Student(matnr);
  153.  
  154. ALTER TABLE Pruefung
  155. ADD CONSTRAINT fk_pruef_ver FOREIGN KEY(vnr)
  156. REFERENCES Veranstaltung(vnr);
  157.  
  158. ALTER TABLE Dozent
  159. ADD CONSTRAINT c_dozges CHECK (UPPER(geschlecht)in ('M','W'));
  160.  
  161. ALTER TABLE Student
  162. ADD CONSTRAINT c_studges CHECK (UPPER(geschlecht) in ('M','W'));
  163.  
  164. ALTER TABLE Pruefung
  165. ADD CONSTRAINT c_preufnote CHECK(note in (1.0,1.3,1.7,2.0,2.3,2.7,3.0,3.3,3.7,4.0,5.0));
  166.  
  167. ALTER TABLE Veranstaltung
  168. ADD CONSTRAINT c_vertyp CHECK (vtyp='Vorlesung'OR vtyp='Uebung'OR vtyp='Praktikum'OR vtyp='Projekt');
  169.  
  170. ALTER Table Halten
  171. ADD CONSTRAINT c_halsem CHECK(semester LIKE 'SS____' OR semester LIKE 'WS____/__');
  172.  
  173. ALTER Table BESUCHEN
  174. ADD CONSTRAINT c_bessem CHECK(semester LIKE 'SS____' OR semester LIKE 'WS____/__');
  175.  
  176. CREATE SEQUENCE doznr_seq
  177. START WITH 1
  178. INCREMENT BY 1;
  179.  
  180.  
  181. CREATE SEQUENCE matnr_seq
  182. START WITH 1
  183. INCREMENT BY 1;
  184.  
  185. CREATE SEQUENCE vnr_seq
  186. START WITH 1
  187. INCREMENT BY 1;
  188.  
  189. CREATE SEQUENCE stgnr_seq
  190. START WITH 1
  191. INCREMENT BY 1;
  192.  
  193. CREATE TABLE Fachbereich
  194. (
  195. fbnr INTEGER,
  196. fbname VARCHAR(50)
  197. );
  198.  
  199. ALTER TABLE Fachbereich
  200. ADD CONSTRAINT pk_fachb PRIMARY KEY(fbnr);
  201.  
  202. CREATE SEQUENCE fbnr_seq
  203. START WITH 1
  204. INCREMENT BY 1;
  205.  
  206. ALTER TABLE Dozent
  207. ADD fbnr INTEGER;
  208.  
  209. ALTER TABLE Dozent
  210. ADD CONSTRAINT fk_dozfb FOREIGN KEY(fbnr)
  211. REFERENCES Fachbereich(fbnr);
  212.  
  213. ALTER TABLE Studiengang
  214. ADD fbnr INTEGER;
  215.  
  216. ALTER TABLE Studiengang
  217. ADD CONSTRAINT fk_studfb FOREIGN KEY(fbnr)
  218. REFERENCES Fachbereich(fbnr);
  219.  
  220. ALTER TABLE Dozent
  221. DROP COLUMN fachbereich;
  222.  
  223. ALTER TABLE Studiengang
  224. DROP COLUMN fachbereich;
  225.  
  226.  
  227. select * from Dozent;
  228. INSERT into Fachbereich values (fbnr_seq.nextval,'Informatik');
  229. INSERT into Dozent values (doznr_seq.nextval,'Paul','Guenther','01.01.1980','M','A125','01234/5678','paulguenther@gmail.com','02.04.2011','Systemarchitektur',fbnr_seq.currval);
  230. INSERT into Studiengang values(stgnr_seq.nextval,'Medieninformatik',fbnr_seq.currval);
  231. INSERT INTO Student values(matnr_seq.nextval,'Adrian','Phelix','03.05.1993','M','adrianwinchester@gmail.com','04.03.2015',stgnr_seq.currval);
  232. INSERT into Veranstaltung values(vnr_seq.nextval,'GDI','Vorlesung',stgnr_seq.currval);
  233.  
  234. INSERT into Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  235. INSERT into HALTEN values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  236. INSERT into Pruefung values (doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'13.01.11',3.7);
  237.  
  238. INSERT INTO dozent values(doznr_seq.nextval,'Brill','Manfred','05.08.1984','M','A134','424242/2424','mafredbrill@gmail.com','02.04.05','Computergrafik',fbnr_seq.currval);
  239. INSERT INTO Student values(matnr_seq.nextval,'Kowollik','Dennith','07.03.91','M','dennithwinchester@gmail.com','02.03.15',stgnr_seq.currval);
  240. INSERT INTO Veranstaltung values(vnr_seq.nextval,'MAT1','Vorlesung',stgnr_seq.currval);
  241. INSERT INTO Halten values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  242. INSERT INTO Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  243. INSERT INTO Pruefung values(doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'11.01.11',3.3);
  244.  
  245. INSERT INTO Veranstaltung values(vnr_seq.nextval,'GDI-Uebung','Uebung',stgnr_seq.currval);
  246. INSERT INTO Halten values(3,vnr_seq.currval,'WS2010/11');
  247. INSERT INTO BESUCHEN values(3,vnr_seq.currval,'WS2010/11');
  248.  
  249. INSERT INTO Veranstaltung values(vnr_seq.nextval,'GDI-Uebung','Uebung',stgnr_seq.currval);
  250. INSERT INTO Halten values(3,vnr_seq.currval,'WS2010/11');
  251. INSERT INTO BESUCHEN values(2,vnr_seq.currval,'WS2010/11');
  252.  
  253.  
  254. INSERT INTO dozent values(doznr_seq.nextval,'Hettel','Edgar','05.08.1970','M','A117','98765/5783','hetteledgar@gmail.com','09.02.03','Programmiertechniken',fbnr_seq.currval);
  255. INSERT INTO Student values(matnr_seq.nextval,'Sander','Marthel','13.11.89','M','sandermarthel@gemail.com','02.03.15',stgnr_seq.currval);
  256. INSERT INTO Veranstaltung values(vnr_seq.nextval,'Rechenarchitektur','Vorlesung',stgnr_seq.currval);
  257. INSERT INTO Halten values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  258. INSERT INTO Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  259. INSERT INTO Pruefung values(doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'27.01.11',2.3);
  260.  
  261. INSERT INTO dozent values(doznr_seq.nextval,'Steffens','Hans','27.01.1976','M','A008','987644578/456','steffenshans@gmail.com','17.12.00','Computerdesign',fbnr_seq.currval);
  262. INSERT INTO Student values(matnr_seq.nextval,'Bonny','Andreas','07.03.96','M','bonnyAndreas@gmail.com','02.03.14',stgnr_seq.currval);
  263. INSERT INTO Veranstaltung values(vnr_seq.nextval,'Prog2','Vorlesung',stgnr_seq.currval);
  264. INSERT INTO Halten values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  265. INSERT INTO Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  266. INSERT INTO Pruefung values(doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'20.01.11',1.0);
  267.  
  268. INSERT into Fachbereich values (fbnr_seq.nextval,'Mathe');
  269. INSERT into Studiengang values(stgnr_seq.nextval,'Mathematik',fbnr_seq.currval);
  270.  
  271. INSERT INTO dozent values(doznr_seq.nextval,'Mueller','Joerg','30.10.1990','M','A100','31431/2617','muellerjoerg@gmail.com','18.07.98','Logik',fbnr_seq.currval);
  272. INSERT INTO Student values(matnr_seq.nextval,'Kos','Amina','18.06.97','W','kosamina@gmail.com','02.03.15',stgnr_seq.currval);
  273. INSERT INTO Veranstaltung values(vnr_seq.nextval,'Logik','Vorlesung',stgnr_seq.currval);
  274. INSERT INTO Halten values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  275. INSERT INTO Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  276. INSERT INTO Pruefung values(doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'01.02.11',2.0);
  277.  
  278.  
  279. INSERT INTO dozent values(doznr_seq.nextval,'Mustermann','Max','01.01.2000','M','A001','9999/999','mustermannmax@gmail.com','01.01.01','Musterbereich',fbnr_seq.currval);
  280. INSERT INTO Student values(matnr_seq.nextval,'Luhan','Klaus','07.03.95','M','luhanklaus@gmail.com','02.03.15',stgnr_seq.currval);
  281. INSERT INTO Veranstaltung values(vnr_seq.nextval,'Mat2','Vorlesung',stgnr_seq.currval);
  282. INSERT INTO Halten values(doznr_seq.currval,vnr_seq.currval,'WS2010/11');
  283. INSERT INTO Besuchen values(matnr_seq.currval,vnr_seq.currval,'WS2010/11');
  284. INSERT INTO Pruefung values(doznr_seq.currval,matnr_seq.currval,vnr_seq.currval,'01.01.11',1.0);
  285.  
  286. UPDATE Dozent set buero ='H246' where doznr = 3;
  287. UPDATE Student set name = 'Trophobie' where matnr = 7;
  288. UPDATE Student set vorname= 'Klaus' where matnr = 7;
  289. UPDATE Pruefung set note = 2.3 where matnr = 7;
  290.  
  291. DELETE from besuchen where matnr= 5;
  292. DELETE from pruefung where matnr= 5;
  293. DELETE from Student where matnr = 5;
  294.  
  295. commit;
  296.  
  297.  
  298. rollback;
  299. drop trigger t_doznr;
  300. drop trigger t_vnr;
  301. drop trigger t_stgnr;
  302. drop trigger t_fbnr;
  303. drop trigger t_matnr;
  304. Drop Table Pruefungsprotokoll
  305. CASCADE Constraints;
  306. Drop SEQUENCE protnr_seq;
  307.  
  308. -- Aufgabe 1)
  309. -- a)
  310.  
  311. Create Trigger t_doznr
  312. before insert on dozent
  313. for each row
  314. begin
  315. select doznr_seq.nextval into :new.doznr from dual;
  316. End;
  317. /
  318.  
  319. Create Trigger t_vnr
  320. before insert on veranstaltung
  321. for each row
  322. begin
  323. select vnr_seq.nextval into :new.vnr from dual;
  324. End;
  325. /
  326.  
  327. Create Trigger t_stgnr
  328. before insert on Studiengang
  329. for each row
  330. begin
  331. select stgnr_seq.nextval into :new.stgnr from dual;
  332. End;
  333. /
  334.  
  335. Create Trigger t_fbnr
  336. before insert on Fachbereich
  337. for each row
  338. begin
  339. select fbnr_seq.nextval into :new.fbnr from dual;
  340. End;
  341. /
  342.  
  343. Create Trigger t_matnr
  344. before insert on Student
  345. for each row
  346. begin
  347. select matnr_seq.nextval into :new.matnr from dual;
  348. End;
  349. /
  350.  
  351. -- b)
  352. insert into Dozent values (null,'Cullmann','petra','04.04.1980','M','A222','6666/6666','cullmannpetra@gmx.com','01.01.2016','Deutsch',(select fbnr from Fachbereich where fbname='Informatik'));
  353. insert into Veranstaltung values(null,'was ist feuer','Vorlesung',(select stgnr from studiengang where bezeichnung = 'Mathematik'));
  354. insert into Studiengang values(null,'Philosophie',(select fbnr from Fachbereich where fbname ='Informatik'));
  355. insert into Fachbereich values(null,'fachsippeln');
  356. insert into Student values(null,'Lindenau','Hans','20.4.1904','M','420snoopdog@gmx.de','20.4.2004',(select stgnr from Studiengang where bezeichnung ='420'));
  357.  
  358.  
  359. --Aufgabe 2
  360. -- a)
  361.  
  362. Alter Table Dozent
  363. add einnahmen decimal(10,2) DEFAULT(0.0);
  364.  
  365. -- b)
  366. Update dozent d
  367. set einnahmen = (select count(Distinct vnr) from Pruefung p where d.doznr=p.doznr)*35;
  368.  
  369. --c)
  370. drop Trigger t_doz_einnahmen;
  371.  
  372. create Trigger t_doz_einnahmen
  373. After insert on Pruefung
  374. referencing new as pruef
  375. for each row
  376. begin
  377. Update dozent set einnahmen = einnahmen+35 where doznr = :pruef.doznr;
  378. End;
  379. /
  380.  
  381. --d)
  382. insert into Pruefung values(2,3,2,'10.3.2010',2.3);
  383. insert into Pruefung values(2,2,3,'10.3.2010',2.0);
  384.  
  385. -- Aufgabe 3
  386.  
  387. --a)
  388. Alter Table Student
  389. ADD avg_note decimal(2,1);
  390.  
  391. -- b)
  392. Update Student s
  393. set avg_note=(select avg(note) from Pruefung p where s.matnr = p.matnr);
  394.  
  395. -- c)
  396. Drop Trigger t_stud_avgnote;
  397.  
  398. create Trigger t_stud_avgnote
  399. After insert on pruefung
  400. begin
  401. Update Student s set avg_note=(select avg(note) from Pruefung p where s.matnr = p.matnr );
  402. End;
  403. /
  404.  
  405. -- d)
  406.  
  407. insert into Pruefung values(2,6,4,'10.10.2010',1.0);
  408. insert into Pruefung values(2,7,4,'10.10.2010',5.0);
  409. insert into Pruefung values(2,7,2,'10.11.2010',1.0);
  410.  
  411. --Aufgabe 4
  412.  
  413. --a)
  414. Create Table Pruefungsprotokoll
  415. (
  416. protnr INTEGER,
  417. datum date,
  418. benutzer Varchar(20),
  419. ereignis Varchar(50),
  420. preuf_datum_alt date,
  421. pruef_datum_neu date,
  422. pruef_note_alt Decimal(2,1),
  423. preuf_note_neu Decimal(2,1)
  424. );
  425.  
  426. Alter Table Pruefungsprotokoll
  427. ADD CONSTRAINT pk_preufprot PRIMARY KEY(protnr);
  428.  
  429. Create Sequence protnr_seq
  430. Start WITH 1
  431. INCREMENT BY 1;
  432.  
  433. -- b)
  434. Drop Trigger t_watchdog_pruefung;
  435.  
  436. CREATE Trigger t_watchdog_pruefung
  437. AFTER INSERT OR DELETE OR UPDATE on Pruefung
  438. for each row --GEHT EH NIT 80% SAVE CALL
  439.  
  440. BEGIN
  441. if inserting then
  442. INSERT into Pruefungsprotokoll values( protnr_seq.nextval,(select sysdate from dual),user,'INSERTING',NULL,:new.datum,NULL,:new.note);
  443. end if;
  444.  
  445. if deleting then
  446. INSERT into Pruefungsprotokoll values(protnr_seq.nextval,(select sysdate from dual),user,'DELETING',:old.datum,NULL,:old.note,NULL);
  447. end if;
  448.  
  449. if updating then
  450. INSERT into Pruefungsprotokoll values(protnr_seq.nextval,(select sysdate from dual),user,'UPDATING',:old.datum,:new.datum,:old.note,:new.note);
  451. end if;
  452. End;
  453. /
  454.  
  455. --c)
  456. insert into Pruefung values(3,2,9,'10.11.2010',2.0);
  457. Update Pruefung set note = 3.0 where matnr=2 AND vnr = 9;
  458. DELETE from Pruefung where matnr = 2 AND vnr = 9;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement