Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

En til en og rekursive sammenhenger

Liknende presentasjoner


Presentasjon om: "En til en og rekursive sammenhenger"— Utskrift av presentasjonen:

1 En til en og rekursive sammenhenger
Self-reflection is the school of wisdom Baltastar Gracián

2 Et organisasjonskart

3 Modellering av et 1:1 forhold
AVDELING ANSATT *avdnavn *ansattnr avdetasje ansattnavn avdtlf ansattlonn Avdelingsleder 1:1 sammenhengen er merket med navn Sammenhengsbeskrivelse Selvsagte sammenhenger merkes ikke med navn

4 Modellering av en rekursiv sammneheng
En rekursiv sammenheng binder sammen en entitet med seg selv Rekursive sammenhenger skal merkes AVDELING ANSATT *avdelingsnavn *ansattnr avdelingsetasje ansattfnavn avdelingstlf ansattlonn avdelingsleder overordnet

5 Mapping av en 1:1 sammenheng
De vanlige reglene gjelder Hvor plasserer du fremmednøkkelen? AVDELING? ANSATT? BEGGE TABELLER? regel: Plasser fremmednøkkelen slik at det blir færrest mulig NULL - her avdeling

6 Mapping av rekursive sammenhenger
Vanlige regler 1:m Entiteten får en ekstra kolonne for fremmednøkkelen Må ha eget navn forskjellig fra primærnøkkel

7 Fremmednøkkel avdelingsleder
Resultater av mapping Fremmednøkkel avdelingsleder AVDELINGS AVDELINGSNAVN AVDELINGS- ETASJE AVDELINGSTLF ANSATT- NR Management 5 2001 1 Marketing 2002 2 Accounting 4 2003 Purchasing 2004 7 Personnel & PR 2005 9 ANSATT ANSATT- NR ANSATT- FNAVN ANSATT- LONN AVDELINGS- NAVN OVER- ORDNET- NR 1 Alice 75000 Management 2 Ned 45000 Marketing 3 Andrew 25000 4 Clare 22000 5 Todd 38000 Accounting 6 Nancy 7 Brier 43000 Purchasing 8 Sarah 56000 9 Sophie 35000 Personnel & PR

8 Hvorfor mangler referanseintegritet for OVERORDNET?
Å lage tabellene CREATE TABLE AVDELING ( AVDELINGSNAVN VARCHAR(15), AVDELINGSETASJE SMALLINT NOT NULL, AVDELINGSTLF SMALLINT NOT NULL, ANSATTNR SMALLINT NOT NULL, PRIMARY KEY(AVDELINGSNAVN) ); CREATE TABLE ANSATT ( ANSATTNR SMALLINT, ANSATTFNAVN VARCHAR(10), ANSATTLONN DECIMAL(7,0), AVDELINGSNAVN VARCHAR(15), OVERORDNET SMALLINT, PRIMARY KEY(ANSATTNR), CONSTRAINT FK_EMP_AVDELINGS FOREIGN KEY(AVDELINGSNAVN) REFERENCES AVDELING Hvorfor mangler referanseintegritet for OVERORDNET?

9 Spørring i et 1:1 forhold List lønna for hver avdelingsleder.
SELECT ANSATTFNAVN, AVDELINGSNAVN, ANSATTLONN FROM ANSATT WHERE ANSATTNR IN (SELECT ANSATTNR FROM AVDELING); ANSATTFNAVN AVDELINGSNAVN ANSATTLONN Alice Management 75000 Ned Marketing 45000 Todd Accounting 38000 Brier Purchasing 43000 Sophie Personnel & PR 35000

10 Spørring fra en rekursiv sammenheng
Finn lønna til Nancys sjef. SELECT UNDERORDNET.ANSATTFNAVN, UNDERORDNET.ANSATTLONN, OVERORDNET.ANSATTFNAVN, OVERORDNET.ANSATTLONN FROM ANSATT UNDERORDNET, ANSATT OVERORDNET WHERE UNDERORDNET.ANSATTFNAVN = 'NANCY' AND UNDERORDNET.OVERORDNETNR = OVERORDNET.ANSATTNR; UNDERORDNET.ANSATTFNAVN UNDERORDNET. ANSATTLONN OVERORDNET. ANSATTFNAVN OVERORDNET. ANSATTLONN Nancy 22000 Todd 38000

11 Å joine en tabell med seg selv
ANSATT ANSATTN R ANSATT FNAVN ANSATTLONN AVDELINGSNAVN OVERORD NETNR 1 Alice 75000 Management 2 Ned 45000 Marketing 3 Andrew 25000 4 Clare 22000 5 Todd 38000 Accounting 6 Nancy 7 Brier 43000 Purchasing 8 Sarah 56000 9 Sophie 35000 Personnel & PR UNDERORDNET ANSATT ANSATT NR ANSATT FNAVN ANSATTLONN AVDELINGSNAVN OVERORD NETNR 1 Alice 75000 Management 2 Ned 45000 Marketing 3 Andrew 25000 4 Clare 22000 5 Todd 38000 Accounting 6 Nancy 7 Brier 43000 Purchasing 8 Sarah 56000 9 Sophie 35000 Personnel & PR OVERORDNET

12 Spørring fra en rekursiv sammenheng
Finn navnene til ansatte som tjener mer enn sine overordnede SELECT UNDERORDNET.ANSATTFNAVN FROM ANSATT UNDERORDNET, ANSATT OVERORDNET WHERE UNDERORDNET.OVERORDNETNO = OVERORDNET.ANSATTNR AND UNDERORDNET.ANSATTLONN > OVERORDNET.ANSATTLONN; underordnet overordnet ansattnr ansatt fnavn ansattlonn avdelingsnavn overordn etno ansattfn avn overordne tno 2 Ned 45,000 Marketing 1 Alice 75,000 Management 3 Andrew 25,000 4 Clare 22,000 5 Todd 38,000 Accounting 6 Nancy 7 Brier 43,000 Purchasing 8 Sarah 56,000 9 Sophie 35,000 Personnel & PR ansattfnavn Sarah

13 Modeling a 1:1 recursive relationship
The English monarchy

14 Mapping a 1:1 recursive relationship
monarch montype monname monnum rgnbeg premonname premonnum Queen Victoria I 1837/6/20 William IV King Edward VII 1901/1/22 George V 1910/5/6 VIII 1936/1/20 VI 1936/12/11 Elizabeth II 1952/2/6

15 Creating the table CREATE TABLE monarch ( montype VARCHAR(5),
monname VARCHAR(15) NOT NULL, monnum VARCHAR(5) NOT NULL, rgnbeg DATE, premonname VARCHAR(15), premonnum VARCHAR(5), PRIMARY KEY(monname,monnum));

16 Spørring fra en 1:1 rekursiv sammenheng
Hvem regjerte før Elizabeth II? SELECT premonname, premonnum FROM monark WHERE monname = 'Elizabeth' and MONNUM = 'II'; premonname premonnum George VI

17 Querying a 1:1 recursive relationship
Was Elizabeth II's predecessor a king or queen? SELECT pre.montype FROM monarch cur, monarch pre WHERE cur.premonname = pre.monname AND cur.premonnum = pre.monnum AND cur.monname = 'Elizabeth' AND cur.monnum = 'II'; montype King

18 Querying a 1:1 recursive relationship
List the kings and queens of England in ascending chronological order. SELECT montype, monname, monnum, rgnbeg FROM monarch ORDER BY rgnbeg; montype monname monnum rgnbeg Queen Victoria I King Edward VII George V VIII VI Elizabeth II

19 Modellering av en m:m rekursiv sammenheng
Bill of materials (materialliste) problem Et produkt kan være en del av mange andre produkter og kan være satt sammen av mange andre produkter PRODUKT *prodid prodbeskr prodkostnad prodpris SAMMENSETNING antall

20 Mapping av en m:m rekursiv sammenheng
PRODUkT PRODID PRODBESKR PROD KOSTNAD PRODPRIS 1000 Animal photography kit 725 101 35mm camera 150 300 102 Camera case 10 15 103 zoom lens 125 200 104 28-85 zoom lens 115 185 105 Photographer’s vest 25 40 106 Lens cleaning cloth 1 1.25 107 Tripod 35 45 108 24 exposure, 100 ASA, 35mm color negative film .85 SAMMEN- SETNING ANTALL PRODID SUBPRODID 1 1000 101 102 103 104 105 2 106 107 10 108

21 Å lage tabellene CREATE TABLE PRODUKT ( PRODID INTEGER,
PRODBESKR VARCHAR(30), PRODKOSTNAD DECIMAL(9,2), PRODPRIS DECIMAL(9,2), PRIMARY KEY(PRODID)); CREATE TABLE SAMMENSETNING ( QUANTITY INTEGER NOT NULL, SUBPRODID INTEGER, PRIMARY KEY(PRODID, SUBPRODID), CONSTRAINT FK_SAMMENSETNING_PRODUKT FOREIGN KEY(PRODID)REFERENCES PRODUKT, CONSTRAINT FK_SAMMENSETNING_SUBPRODUKT FOREIGN KEY(SUBPRODID)REFERENCES PRODUKT);

22 Spørring mot en m:m rekursiv sammenheng
Finn produktid for hver del av dyrefotograferingspakken. SELECT SUBPRODID FROM PRODUKT, SAMMENSETNING WHERE PRODBESKR = 'Animal photography kit' AND PRODUKT.PRODID = SAMMENSETNING.PRODID; SUBPRODID 101 106 107 105 104 103 102 108

23 Spørring mot en m:m rekursiv sammenheng
Finn produktbeskrivelse og kostnad for hver komponent av dyrefotograferingspakken. SELECT PRODBESKR, PRODKOSTNAD FROM PRODUKT WHERE PRODID IN (SELECT SUBPRODID FROM PRODUKT, SAMMENSETNING WHERE PRODBESKR = 'Animal photography kit' AND PRODUKT.PRODID = SAMMENSETNING.PRODID); PRODBESKR PRODKOSTNAD 35mm camera 150.00 Camera case 10.00 zoom lens 125.00 28-85 zoom lens 115.00 Photographer’s vest 25.00 Lens cleaning cloth 1.00 Tripod 35.00 24 exp. 100ASA 35mm col neg 0.85


Laste ned ppt "En til en og rekursive sammenhenger"

Liknende presentasjoner


Annonser fra Google