Merge branch 'master' of git.2li.ch:Nebucatnetzer/ibz

This commit is contained in:
Andreas Zweili 2018-01-11 22:21:14 +01:00
commit 4a14427082
12 changed files with 2035 additions and 0 deletions

View File

@ -0,0 +1,31 @@
-- A1
-- Attribut hinzufügen
ALTER TABLE ABTEILUNGEN
ADD GEHALTSSUMME INT;
-- A2
-- Gehaltssumme setzen
update Abteilungen
set gehaltssumme = (SELECT sum(gehalt)
FROM ANGESTELLTE
where abt_nr = Abteilungen.abt_nr);
-- A3
-- Trigger zur Tabelle Angestelle hinzufügen
set define off;
create or replace trigger gehaltssumme_ai_trg
after insert on angestellte
for each row
update abteilungen
set gehaltssumme = gehaltssumme + :new.gehalt
where abt_nr = :new.abt_nr
INSERT INTO ANGESTELLTE
VALUES (
30, 1, 'Manchmal sind die Frauen Chef', 'Betriebswirt', 'Müller', 'Josefine', 'w', TO_Date( '02/01/0091 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM')
, 10000, 3400, 'Köln', 'Memelerstr.', TO_Date( '03/13/2002 02:17:49 PM', 'MM/DD/YYYY HH:MI:SS AM'));
commit;

View File

@ -0,0 +1,31 @@
-- A1
-- Attribut hinzufügen
ALTER TABLE ABTEILUNGEN
ADD GEHALTSSUMME INT;
-- A2
-- Gehaltssumme setzen
update Abteilungen
set gehaltssumme = (SELECT sum(gehalt)
FROM ANGESTELLTE
where abt_nr = Abteilungen.abt_nr);
-- A3
-- Trigger zur Tabelle Angestelle hinzufügen
set define off;
create or replace trigger gehaltssumme_ai_trg
after insert on angestellte
for each row
update abteilungen
set gehaltssumme = gehaltssumme + :new.gehalt
where abt_nr = :new.abt_nr
INSERT INTO ANGESTELLTE
VALUES (
30, 1, 'Manchmal sind die Frauen Chef', 'Betriebswirt', 'Müller', 'Josefine', 'w', TO_Date( '02/01/0091 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM')
, 10000, 3400, 'Köln', 'Memelerstr.', TO_Date( '03/13/2002 02:17:49 PM', 'MM/DD/YYYY HH:MI:SS AM'));
commit;

View File

@ -0,0 +1,222 @@
--
-- Aufgabe Fahrrad
--
-- Erzeugt Primärschlüssel, Fremdschlüssel und andere CONSTRAINTS
PROMPT Creating Primary Key 'Primärschlüssel'
PROMPT Creating Primary Key on 'Abteilungen'
ALTER TABLE Abteilungen
ADD CONSTRAINT ABT_PK PRIMARY KEY
(Abt_Nr)
/
PROMPT Creating Primary Key on 'Angestellte'
ALTER TABLE Angestellte
ADD CONSTRAINT ANG_PK PRIMARY KEY
(Ang_Nr)
/
PROMPT Creating Primary Key on 'Artikel'
ALTER TABLE Artikel
ADD CONSTRAINT AR_PK PRIMARY KEY
(TNr)
/
PROMPT Creating Primary Key on 'Auftraege'
ALTER TABLE Auftraege
ADD CONSTRAINT AU_PK PRIMARY KEY
(AuftragsNr)
/
PROMPT Creating Primary Key on 'Auftragspositionen'
ALTER TABLE Auftragspositionen
ADD CONSTRAINT AR_AU_PK PRIMARY KEY
(TNr
,AuftragsNr)
/
PROMPT Creating Primary Key on 'GEH_KLASSEN'
ALTER TABLE GEH_KLASSEN
ADD CONSTRAINT G_PK PRIMARY KEY
(GEH_KLASSE)
/
PROMPT Creating Primary Key on 'KUNDEN'
ALTER TABLE KUNDEN
ADD CONSTRAINT KUN_PK PRIMARY KEY
(Kun_Nr)
/
PROMPT Creating Primary Key on 'Lager'
ALTER TABLE Lager
ADD CONSTRAINT LAG_PK PRIMARY KEY
(LaNr)
/
PROMPT Creating Primary Key on 'Lagerbestand'
ALTER TABLE Lagerbestand
ADD CONSTRAINT LAG_T_PK PRIMARY KEY
(LaNr
,TNr)
/
PROMPT Creating Primary Key on 'Lieferanten'
ALTER TABLE Lieferanten
ADD CONSTRAINT LIEF_PK PRIMARY KEY
(Lief_Nr)
/
PROMPT Creating Primary Key on 'Lieferungen'
ALTER TABLE Lieferungen
ADD CONSTRAINT LG_PK PRIMARY KEY
(Liefer_Nr
,Lief_Nr
,TNr)
/
PROMPT Creating Primary Key on 'Lieferprogramme'
ALTER TABLE Lieferprogramme
ADD CONSTRAINT LP_PK PRIMARY KEY
(Lief_Nr
,TNr)
/
PROMPT Creating Primary Key on 'Orte'
ALTER TABLE Orte
ADD CONSTRAINT O_PK PRIMARY KEY
(Ort
,Strasse)
/
PROMPT Creating Primary Key on 'Struktur'
ALTER TABLE Struktur
ADD CONSTRAINT S_PK PRIMARY KEY
(OTeil
,UTeil
,POSITION)
/
PROMPT Creating Primary Key on 'Teile'
ALTER TABLE Teile
ADD CONSTRAINT TE_PK PRIMARY KEY
(TNr)
/
PROMPT Creating Primary Key on 'Teile_Werke'
ALTER TABLE Teile_Werke
ADD CONSTRAINT T_WE_PK PRIMARY KEY
(TNr
,WNr)
/
PROMPT Creating Primary Key on 'Werke'
ALTER TABLE Werke
ADD CONSTRAINT WE_PK PRIMARY KEY
(WNr)
/
PROMPT Creating Foreign Keys on 'Angestellte'
ALTER TABLE Angestellte ADD CONSTRAINT
ANG_ABT_FK FOREIGN KEY
(Abt_Nr) REFERENCES Abteilungen
(Abt_Nr)
/
PROMPT Creating Foreign Keys on 'Artikel'
ALTER TABLE Artikel ADD CONSTRAINT
AR_T_FK FOREIGN KEY
(TNr) REFERENCES Teile
(TNr)
/
PROMPT Creating Foreign Keys on 'Auftraege'
ALTER TABLE Auftraege ADD CONSTRAINT
AU_KUN_FK FOREIGN KEY
(Kun_Nr) REFERENCES KUNDEN
(Kun_Nr) ADD CONSTRAINT
AU_ANG_FK FOREIGN KEY
(Ang_Nr) REFERENCES Angestellte
(Ang_Nr)
/
PROMPT Creating Foreign Keys on 'Auftragspositionen'
ALTER TABLE Auftragspositionen ADD CONSTRAINT
AR_AU_AR_FK FOREIGN KEY
(TNr) REFERENCES Artikel
(TNr) ADD CONSTRAINT
AR_AU_AU_FK FOREIGN KEY
(AuftragsNr) REFERENCES Auftraege
(AuftragsNr)
/
PROMPT Creating Foreign Keys on 'Lagerbestand'
ALTER TABLE Lagerbestand ADD CONSTRAINT
LAG_T_LAG_FK FOREIGN KEY
(LaNr) REFERENCES Lager
(LaNr) ADD CONSTRAINT
LAG_T_T_FK FOREIGN KEY
(TNr) REFERENCES Teile
(TNr)
/
PROMPT Creating Foreign Keys on 'Lieferprogramme'
ALTER TABLE Lieferprogramme ADD CONSTRAINT
LP_LIEF_FK FOREIGN KEY
(Lief_Nr) REFERENCES Lieferanten
(Lief_Nr) ADD CONSTRAINT
LP_T_FK FOREIGN KEY
(TNr) REFERENCES Teile
(TNr)
/
PROMPT Creating Foreign Keys on 'Lieferungen'
ALTER TABLE Lieferungen ADD CONSTRAINT
LG_LIEF_FK FOREIGN KEY
(Lief_Nr) REFERENCES Lieferanten
(Lief_Nr) ADD CONSTRAINT
LG_T_FK FOREIGN KEY
(TNr) REFERENCES Teile
(TNr)
/
PROMPT Creating Foreign Keys on 'Struktur'
ALTER TABLE Struktur ADD CONSTRAINT
S_T_FK2 FOREIGN KEY
(UTeil) REFERENCES Teile
(TNr) ADD CONSTRAINT
S_T_FK FOREIGN KEY
(OTeil) REFERENCES Teile
(TNr)
/
PROMPT Creating Foreign Keys on 'Teile_Werke'
ALTER TABLE Teile_Werke ADD CONSTRAINT
T_WE_T_FK FOREIGN KEY
(TNr) REFERENCES Teile
(TNr) ADD CONSTRAINT
T_WE_WE_FK FOREIGN KEY
(WNR) REFERENCES Werke
(WNR)
/
PROMPT Creating verschiedene CHECK-CONSTRAINTS
ALTER TABLE Auftraege ADD CONSTRAINT
Auftrags_Typ CHECK(Auftrags_Typ IN ('Angebot', 'Anfrage', 'Auftrag'))
/
ALTER TABLE Auftraege ADD CONSTRAINT
Datum CHECK(Bestelldatum <= Lieferdatum)
/
ALTER TABLE Angestellte ADD CONSTRAINT
Geschlecht CHECK( Geschlecht IN ('w', 'm'))
/
ALTER TABLE Teile ADD CONSTRAINT
Typ CHECK( Typ IN ('Artikel', 'Baugruppe', 'Material'))
/
ALTER TABLE Teile ADD CONSTRAINT
Bestand CHECK( Bestand >= Mindestbestand)
/

View File

@ -0,0 +1,212 @@
--
-- Aufgabe Fahrrad
--
-- Diese Datei erzeugt alle beteiligten Tabellen und Views
Prompt Creating TABLE 'Abteilungen'
CREATE TABLE Abteilungen
(Abt_Nr NUMBER(38) NOT NULL,
Leiter NUMBER(38) NOT NULL,
Name VARCHAR2(50) NOT NULL,
Ort VARCHAR2(50)
)
/
Prompt Creating TABLE 'Angestellte'
CREATE TABLE Angestellte
(Ang_Nr NUMBER(38) NOT NULL,
Abt_Nr NUMBER(38) NOT NULL,
Aufgabenbeschreibung VARCHAR2(50) NOT NULL,
Beruf VARCHAR2(50) NOT NULL,
Nachname VARCHAR2(50) NOT NULL,
Vorname VARCHAR2(50) NOT NULL,
Geschlecht CHAR(1) NOT NULL,
Eintrittsdatum DATE,
Gehalt NUMBER(9,2) Default 0,
Abzuege NUMBER(9,2) Default 0,
Ort VARCHAR2(50),
Strasse VARCHAR2(50),
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Artikel'
CREATE TABLE Artikel
(TNr NUMBER(38) NOT NULL,
Bezeichnung VARCHAR2(50) NOT NULL,
Artikel_Typ VARCHAR2(50) NOT NULL,
Verkaufspreis NUMBER,
Jahresumsatz NUMBER,
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Auftraege'
CREATE TABLE Auftraege
(AuftragsNr NUMBER(38) NOT NULL,
Auftrags_Typ VARCHAR2(50) NOT NULL,
Kun_Nr NUMBER(38) NOT NULL,
Ang_Nr NUMBER(38),
Bereits_Gezahlt NUMBER,
Bestelldatum DATE,
Lieferdatum DATE,
Rechnungsdatum DATE,
Zeitstempel DATE NOT NULL
)
/
Prompt Creating TABLE 'Auftragspositionen'
CREATE TABLE Auftragspositionen
(TNr NUMBER(38) NOT NULL,
AuftragsNr NUMBER(38) NOT NULL,
Menge NUMBER
)
/
Prompt Creating TABLE 'Geh_Klassen'
CREATE TABLE Geh_Klassen
(Geh_Klasse NUMBER(38) NOT NULL,
Max_Gehalt NUMBER NOT NULL,
Min_Gehalt NUMBER NOT NULL
)
/
Prompt Creating TABLE 'Kunden'
CREATE TABLE Kunden
(Kun_Nr NUMBER(38) NOT NULL,
Nachname VARCHAR2(50) NOT NULL,
Vorname VARCHAR2(50) NOT NULL,
Geschlecht VARCHAR2(1),
Ort VARCHAR2(50),
Strasse VARCHAR2(50),
TelefonNr VARCHAR2(50),
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Lager'
CREATE TABLE Lager
(LaNr NUMBER(38) NOT NULL,
Bezeichnung VARCHAR2(50) NOT NULL,
Ort VARCHAR2(50),
Strasse VARCHAR2(50)
)
/
Prompt Creating TABLE 'Lagerbestand'
CREATE TABLE Lagerbestand
(LaNr NUMBER(38) NOT NULL,
TNr NUMBER(38) NOT NULL,
Bestand NUMBER,
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Lieferanten'
CREATE TABLE Lieferanten
(Lief_Nr NUMBER(38) NOT NULL,
Name VARCHAR2(50) NOT NULL,
Ort VARCHAR2(50) NOT NULL,
Strasse VARCHAR2(50) NOT NULL,
TelefonNr VARCHAR2(50),
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Lieferprogramme'
CREATE TABLE Lieferprogramme
(Lief_Nr NUMBER(38) NOT NULL,
TNr NUMBER(38) NOT NULL,
BestellNr VARCHAR2(20),
Einkaufspreis NUMBER,
Gesamtmenge NUMBER,
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Lieferungen'
CREATE TABLE Lieferungen
(Liefer_Nr NUMBER(38) NOT NULL,
Lief_Nr NUMBER(38) NOT NULL,
TNr NUMBER(38) NOT NULL,
Lief_Datum DATE NOT NULL,
Menge NUMBER DEFAULT 1 NOT NULL,
Zeitstempel DATE NOT NULL
)
/
Prompt Creating TABLE 'Orte'
CREATE TABLE Orte
(Ort VARCHAR2(50) NOT NULL,
Strasse VARCHAR2(50) NOT NULL,
PLZ NUMBER(38)
)
/
Prompt Creating TABLE 'Struktur'
CREATE TABLE Struktur
(OTeil NUMBER(38) NOT NULL,
UTeil NUMBER(38) NOT NULL,
Position NUMBER(38) NOT NULL,
Menge NUMBER NOT NULL,
Ausschuss NUMBER,
Arbeitsgang NUMBER(38),
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Teile'
CREATE TABLE Teile
(TNr NUMBER(38) NOT NULL,
Me VARCHAR2(10),
Bezeichnung VARCHAR2(50),
Typ VARCHAR2(50),
Herstellkosten NUMBER,
Einkaufspreis NUMBER,
Mindestbestand NUMBER,
Bestand NUMBER,
Lieferzeit NUMBER,
Herstelldauer NUMBER,
Gewicht NUMBER,
Reserviert NUMBER,
Verfuegbar NUMBER,
Zeitstempel DATE
)
/
Prompt Creating TABLE 'Teile_Werke'
CREATE TABLE Teile_Werke
(TNr NUMBER(38) NOT NULL,
WNr NUMBER(38) NOT NULL
)
/
Prompt Creating TABLE 'Werke'
CREATE TABLE Werke
(WNr NUMBER(38) NOT NULL,
Bezeichnung VARCHAR2(50),
Ort VARCHAR2(50) NOT NULL,
Strasse VARCHAR2(50) NOT NULL
)
/
CREATE VIEW Rechnung AS
SELECT
Auftraege.Auftragsnr, Auftraege.Rechnungsdatum,
Kunden.Kun_nr, Kunden.Nachname,
Kunden.Vorname, Kunden.Ort,
Kunden.Strasse,Orte.Plz,
Auftragspositionen.TNr, Auftragspositionen.Menge,
Artikel.Bezeichnung
FROM Kunden, Auftraege, Auftragspositionen, Orte, Artikel
WHERE Kunden.Kun_Nr = Auftraege.Kun_Nr
AND Auftragspositionen.AuftragsNr = Auftraege.AuftragsNr
AND Kunden.Ort = Orte.Ort
AND Kunden.Strasse = Orte.Strasse
AND Artikel.TNR = Auftragspositionen.TNr
ORDER BY Auftraege.Auftragsnr
/
CREATE SEQUENCE liefer_nr
INCREMENT BY 1
/

View File

@ -0,0 +1,85 @@
--
-- Aufgabe Fahrrad
--
-- Datei generiert Indizes auf der Datenbank
PROMPT Creating Index 'ANG_ABT_FK_I'
CREATE INDEX ANG_ABT_FK_I ON Angestellte
(Abt_Nr)
/
PROMPT Creating Index 'AR_T_FK_I'
CREATE INDEX AR_T_FK_I ON Artikel
(TNr)
/
PROMPT Creating Index 'AU_ANG_FK_I'
CREATE INDEX AU_ANG_FK_I ON Auftraege
(Ang_Nr)
/
PROMPT Creating Index 'AU_KUN_FK_I'
CREATE INDEX AU_KUN_FK_I ON Auftraege
(Kun_Nr)
/
PROMPT Creating Index 'AR_AU_AR_FK_I'
CREATE INDEX AR_AU_AR_FK_I ON Auftragspositionen
(TNr)
/
PROMPT Creating Index 'AR_AU_AU_FK_I'
CREATE INDEX AR_AU_AU_FK_I ON Auftragspositionen
(AuftragsNr)
/
PROMPT Creating Index 'LAG_T_LAG_FK_I'
CREATE INDEX LAG_T_LAG_FK_I ON Lagerbestand
(LaNr)
/
PROMPT Creating Index 'LAG_T_T_FK_I'
CREATE INDEX LAG_T_T_FK_I ON Lagerbestand
(TNr)
/
PROMPT Creating Index 'LP_LIEF_FK_I'
CREATE INDEX LP_LIEF_FK_I ON Lieferprogramme
(Lief_Nr)
/
PROMPT Creating Index 'LP_T_FK_I'
CREATE INDEX LP_T_FK_I ON Lieferprogramme
(TNr)
/
PROMPT Creating Index 'LG_LIEF_FK_I'
CREATE INDEX LG_LIEF_FK_I ON Lieferungen
(Lief_Nr)
/
PROMPT Creating Index 'LG_T_FK_I'
CREATE INDEX LG_T_FK_I ON Lieferungen
(TNr)
/
PROMPT Creating Index 'T_WE_T_FK_I'
CREATE INDEX T_WE_T_FK_I ON Teile_Werke
(TNr)
/
PROMPT Creating Index 'T_WE_WE_FK_I'
CREATE INDEX T_WE_WE_FK_I ON Teile_Werke
(WNr)
/
PROMPT Creating Index 'Kunden_I'
CREATE INDEX Kunden_I ON Kunden
(Vorname, Nachname)
/
PROMPT Creating Index 'Struktur_I'
CREATE INDEX Struktur_I ON Struktur
(OTeil, UTeil)
/

View File

@ -0,0 +1,61 @@
--
-- Aufgabe Fahrrad
--
-- Diese Datei löscht alle beteiligten Tabellen
DROP TABLE ABTEILUNGEN CASCADE CONSTRAINTS
/
DROP TABLE ANGESTELLTE CASCADE CONSTRAINTS
/
DROP TABLE ARTIKEL CASCADE CONSTRAINTS
/
DROP TABLE AUFTRAEGE CASCADE CONSTRAINTS
/
DROP TABLE AUFTRAGSPOSITIONEN CASCADE CONSTRAINTS
/
DROP TABLE GEH_KLASSEN CASCADE CONSTRAINTS
/
DROP TABLE KUNDEN CASCADE CONSTRAINTS
/
DROP TABLE LAGER CASCADE CONSTRAINTS
/
DROP TABLE LAGERBESTAND CASCADE CONSTRAINTS
/
DROP TABLE LIEFERANTEN CASCADE CONSTRAINTS
/
DROP TABLE LIEFERPROGRAMME CASCADE CONSTRAINTS
/
DROP TABLE LIEFERUNGEN CASCADE CONSTRAINTS
/
DROP TABLE ORTE CASCADE CONSTRAINTS
/
DROP TABLE STRUKTUR CASCADE CONSTRAINTS
/
DROP TABLE TEILE CASCADE CONSTRAINTS
/
DROP TABLE TEILE_WERKE CASCADE CONSTRAINTS
/
DROP TABLE WERKE CASCADE CONSTRAINTS
/
DROP SEQUENCE liefer_nr
/
DROP VIEW Rechnungen
/

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
create user ordbms identified by ordbms
default tablespace users
temporary tablespace temp;
grant UNLIMITED tablespace to ordbms;
create role ordbmsrole;
grant connect, resource, create session, dba TO ordbmsrole;
grant ordbmsrole to ordbms;

View File

@ -0,0 +1,68 @@
-- Aufgabe 1.1 - 1.4
drop type personal_t;
drop type adresse_t;
create or replace type Adresse_t as object
(strasse varchar2(20),
hausnr number(5),
plz number(5),
ort varchar2(40));
create or replace type personal_t as object
(nachname varchar2(20),
vorname varchar(20),
geburtsdatum date,
gehalt number(7,2),
kinder number(5),
adresse adresse_t);
CREATE TABLE personal_o OF personal_t
OBJECT IDENTIFIER IS SYSTEM GENERATED;
insert into personal_o values (
personal_t('Hörler', 'Ivan', to_date('1999-12-01', 'YYYY-MM-DD'), 1000.00, 4,
adresse_t('musterstrasse', 2, 4900, 'Langenthal')));
insert into personal_o values (
personal_t('Strati', 'Michael', to_date('1998-12-01', 'YYYY-MM-DD'), 1200.00, 4,
adresse_t('musterstrasse', 2, 4800, 'Aarau')));
insert into personal_o values (
personal_t('Cadaroski', 'Ismail', to_date('1997-12-01', 'YYYY-MM-DD'), 1100.00, 4,
adresse_t('musterstrasse', 2, 4700, 'Bern')));
select p.NACHNAME, p.vorname, p.GEBURTSDATUM, p.gehalt, p.kinder, p.adresse.strasse, p.adresse.hausnr, p.adresse.plz, p.adresse.ort from personal_o p
where p.gehalt > 1100.00;
-- Aufgabe 1.1 - 1.4
-- Aufgabe 2.1
create or replace type abteilung_t as object
(abt_it varchar2(2),
bezeichnung varchar2(40),
adresse adresse_t);
CREATE TABLE abteilung_o OF abteilung_t
OBJECT IDENTIFIER IS SYSTEM GENERATED;
-- Aufgabe 2.2
create or replace type angestellter_t as object
(nachname varchar2(20),
vorname varchar2(20),
abteilung ref abteilung_t);
CREATE TABLE angestellter_o OF angestellter_t
OBJECT IDENTIFIER IS SYSTEM GENERATED;
-- Aufgabe 2.3
insert into abteilung_o
values(
abteilung_t(20, 'finanzen', adresse_t('musterstrasse', 2, 4700, 'Bern')));
insert into ANGESTELLTER_O
select angestellter_