INF1300 Oblig 2 Øyvind Kolbu oyvink@ifi.uio.no
Oppgave 1, 2, 3 og 4 Se ORM-modellen etter oppgave 6. Antar at alle varer har et nummer, enten en PLU eller en strekkode. Oppgave 5 Ingen referansebegreper er blitt undertrykt, da alle er nødvendige for å realisere modellen. Oppgave 6 /******************************************************************* * PostgreSQL Database Description File for oblig2 * Generated by storm Norsync AS 2008 * Generation Date is 2008/10/21 * Model Number is 2 * Version Checksum is 75922 *******************************************************************/ /******************************************************************* * Table Definitions *******************************************************************/ CREATE TABLE Ansatt_forhold ( f_ fra_startdato _for del#hel_tid_i til_sluttdato CREATE TABLE Bestilling ( f_godkjente f_godkjente_b vare_i CREATE TABLE Butikk ( adr_for tlf for f_er_sjef VARCHAR(20) 2
fra_er_sjef _i CREATE TABLE Hylle ( _ B#F_ CREATE TABLE Person ( f_for _for adr_for konto for navn_for skatt_tab# for skatte_kommune_for tlf_fast_tlf_for tlf_mobil_for CREATE TABLE Rad ( CREATE TABLE Ramakort ( kontor for #_grense_paa aarsbonus_for kreditt_for CREATE TABLE Reol ( _ B#F_side_for _eier CREATE TABLE Segment ( B VARCHAR(20), VARCHAR(20) 3
B#F i CREATE TABLE avdeling ( f_er_avdsjef fra_er_avdsjef type_paa CREATE TABLE kasse ( _i CREATE TABLE kvitt#linje ( _B _ antall_paa CREATE TABLE kvittering ( B tidspunkt_paa _for CREATE TABLE pengeskrin ( f_bruker kontanter_i CREATE TABLE tlf ( tlf_for CREATE TABLE vare ( VARCHAR(20) 4
navn_paa CREATE TABLE vare_b ( Pris_i_kilopris CREATE TABLE vare_c ( Pris_i_pant CREATE TABLE vare_d ( Pris_i_stkpris CREATE TABLE varer ( vare antall_for /******************************************************************* * SERIAL columns *******************************************************************/ /******************************************************************* * Primary and Unique Key Definitions *******************************************************************/ ALTER TABLE Ansatt_forhold ADD PRIMARY KEY (f_,fra_startdato ALTER TABLE Bestilling ADD PRIMARY KEY ( ALTER TABLE Butikk ADD PRIMARY KEY ( ALTER TABLE Butikk ADD UNIQUE (adr_for ALTER TABLE Butikk ADD UNIQUE (tlf for ALTER TABLE Butikk ADD UNIQUE (f_er_sjef,fra_er_sjef 5
ALTER TABLE Hylle ADD PRIMARY KEY (,_,B#F_ ALTER TABLE Person ADD PRIMARY KEY (f_for ALTER TABLE Person ADD UNIQUE (_for ALTER TABLE Rad ADD PRIMARY KEY ( ALTER TABLE Ramakort ADD PRIMARY KEY ( ALTER TABLE Ramakort ADD UNIQUE (kontor for ALTER TABLE Reol ADD PRIMARY KEY (_,B#F_side_for ALTER TABLE Segment ADD PRIMARY KEY (_, B,B#F_, ALTER TABLE avdeling ADD PRIMARY KEY ( ALTER TABLE avdeling ADD UNIQUE (f_er_avdsjef,fra_er_avdsjef ALTER TABLE kasse ADD PRIMARY KEY ( ALTER TABLE kasse ADD UNIQUE (_i ALTER TABLE kvitt#linje ADD PRIMARY KEY ( ALTER TABLE kvitt#linje ADD UNIQUE (_B,_ ALTER TABLE kvittering ADD PRIMARY KEY ( ALTER TABLE pengeskrin ADD PRIMARY KEY ( ALTER TABLE tlf ADD PRIMARY KEY (tlf_for ALTER TABLE vare ADD PRIMARY KEY ( ALTER TABLE vare_b ADD PRIMARY KEY ( ALTER TABLE vare_c ADD PRIMARY KEY ( ALTER TABLE vare_d ADD PRIMARY KEY ( ALTER TABLE varer ADD PRIMARY KEY (vare 6
/******************************************************************* * Foreign Key Constraints *******************************************************************/ ALTER TABLE Ansatt_forhold ADD CONSTRAINT Person_Ansatt_forhold FOREIGN KEY (f_) REFERENCES Person (f_for ALTER TABLE Bestilling ADD CONSTRAINT Person_Bestilling FOREIGN KEY (f_godkjente) REFERENCES Person (f_for ALTER TABLE Bestilling ADD CONSTRAINT Person_Bestilling1 FOREIGN KEY (f_godkjente_b) REFERENCES Person (f_for ALTER TABLE Bestilling ADD CONSTRAINT varer_bestilling FOREIGN KEY (vare_i) REFERENCES varer (vare ALTER TABLE Butikk ADD CONSTRAINT Ansatt_forhold_Butikk FOREIGN KEY (f_er_sjef,fra_er_sjef) REFERENCES Ansatt_forhold (f_,fra_startdato ALTER TABLE Hylle ADD CONSTRAINT Reol_Hylle FOREIGN KEY (_,B#F_) REFERENCES Reol (_,B#F_side_for ALTER TABLE Person ADD CONSTRAINT tlf_person FOREIGN KEY (tlf_fast_tlf_for) REFERENCES tlf (tlf_for ALTER TABLE Person ADD CONSTRAINT tlf_person1 FOREIGN KEY (tlf_mobil_for) REFERENCES tlf (tlf_for ALTER TABLE Reol ADD CONSTRAINT Rad_Reol FOREIGN KEY (_) REFERENCES Rad ( ALTER TABLE Reol ADD CONSTRAINT avdeling_reol FOREIGN KEY (_eier) REFERENCES avdeling ( ALTER TABLE Segment ADD CONSTRAINT Hylle_Segment FOREIGN KEY (_, B,B#F_) REFERENCES Hylle (,_,B#F_ ALTER TABLE Segment ADD CONSTRAINT vare_segment FOREIGN KEY (_i) REFERENCES vare ( ALTER TABLE avdeling ADD CONSTRAINT Ansatt_forhold_avdeling FOREIGN KEY (f_er_avdsjef,fra_er_avdsjef) REFERENCES Ansatt_forhold (f_,fra_startda 7
ALTER TABLE kvitt#linje ADD CONSTRAINT vare_kvitt#linje FOREIGN KEY () REFERENCES vare ( ALTER TABLE kvitt#linje ADD CONSTRAINT kvittering_kvitt#linje FOREIGN KEY (_) REFERENCES kvittering ( ALTER TABLE kvittering ADD CONSTRAINT kasse_kvittering FOREIGN KEY (_) REFERENCES kasse ( ALTER TABLE kvittering ADD CONSTRAINT pengeskrin_kvittering FOREIGN KEY ( B) REFERENCES pengeskrin ( ALTER TABLE kvittering ADD CONSTRAINT Ramakort_kvittering FOREIGN KEY (_for) REFERENCES Ramakort ( ALTER TABLE pengeskrin ADD CONSTRAINT Person_pengeskrin FOREIGN KEY (f_bruker) REFERENCES Person (f_for ALTER TABLE vare_b ADD CONSTRAINT vare_vare FOREIGN KEY () REFERENCES vare ( ALTER TABLE vare_c ADD CONSTRAINT vare_vare1 FOREIGN KEY () REFERENCES vare ( ALTER TABLE vare_d ADD CONSTRAINT vare_vare2 FOREIGN KEY () REFERENCES vare ( /******************************************************************* * Index Definitions *******************************************************************/ CREATE INDEX Person_Ansatt_forhold ON CREATE INDEX TotalEq_1 ON CREATE INDEX Person_Bestilling ON CREATE INDEX Person_Bestilling1 ON CREATE INDEX varer_bestilling ON CREATE INDEX Exclud_3 ON Ansatt_forhold (f_ Ansatt_forhold (_for Bestilling (f_godkjente Bestilling (f_godkjente_b Bestilling (vare_i Bestilling (,f_godkjente_b 8
CREATE INDEX Exclud_3_A ON CREATE INDEX TotalEq_2 ON CREATE INDEX Reol_Hylle ON CREATE INDEX tlf_person ON CREATE INDEX tlf_person1 ON CREATE INDEX Exclud_5 ON CREATE INDEX Exclud_5_A ON CREATE INDEX Rad_Reol ON CREATE INDEX avdeling_reol ON CREATE INDEX Hylle_Segment ON CREATE INDEX vare_segment ON CREATE INDEX kvittering_kvitt#linje ON CREATE INDEX kasse_kvittering ON CREATE INDEX pengeskrin_kvittering ON CREATE INDEX Ramakort_kvittering ON CREATE INDEX Person_pengeskrin ON CREATE INDEX Exclud_1_A ON CREATE INDEX Exclud_1 ON Bestilling (,f_godkjente Butikk (_i Hylle (_,B#F_ Person (tlf_fast_tlf_for Person (tlf_mobil_for Person (tlf_fast_tlf_for,f_for Person (tlf_mobil_for,f_for Reol (_ Reol (_eier Segment (_, B,B#F_ Segment (_i kvitt#linje (_ kvittering (_ kvittering ( B kvittering (_for pengeskrin (f_bruker vare_b (,Pris_i_kilopris vare_d (,Pris_i_stkpris /* UNSUPPORTED CONSTRAINT: Referential Exclude "Exclud_1" */ /* UNSUPPORTED CONSTRAINT: Referential Exclude "Exclud_3" */ /* UNSUPPORTED CONSTRAINT: Referential Exclude "Exclud_5" */ 9
/* UNSUPPORTED CONSTRAINT: Referential Equal "TotalEq_1" */ /* UNSUPPORTED CONSTRAINT: Referential Equal "TotalEq_2" */ 10
tlf for Butikk adr for i avdeling har sjef del/hel tid er sjef har avdsjef type for er avdsjef i i er Ansatt forhold startet startdato fra for til sluttet sluttdato for skatt tab. for for konto skatte kommune for Person for f tlf fast tlf for har fasttlf for adr for tlf mobil for har mobil for navn storm, IT Liberator butikk-avdeling.orm : Person og butikk [1] Tuesday, October 21, 2008
vare for kontor for kreditt kvitt.linje antall Ramakort for årsbonus for %-grense kvittering i for total handel i kasse pengeskrin i benyttes av i bruker tidspunkt kontanter Person storm, IT Liberator butikk-avdeling.orm : Kvittering, Ramakort og kasse Tuesday, [2] October 21, 2008
Rad avdeling eier i tilhører Reol har side side for B/F i Hylle i Segment i vare storm, IT Liberator butikk-avdeling.orm : Rad, hyller og reoler [3] Tuesday, October 21, 2008
godkjent av godkjente Bestilling Person godkjent av godkjente i varer for vare antall storm, IT Liberator butikk-avdeling.orm : Bestilling [4] Tuesday, October 21, 2008
har stkpris i stkpris vare Pris har kilopris i kilopris har pant i pant navn storm, IT Liberator butikk-avdeling.orm : Vare [5] Tuesday, October 21, 2008