Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Mange til mange sammenhengen Skremmende sammenfall av omstendigheter Daniel Webster.

Liknende presentasjoner


Presentasjon om: "Mange til mange sammenhengen Skremmende sammenfall av omstendigheter Daniel Webster."— Utskrift av presentasjonen:

1 Mange til mange sammenhengen Skremmende sammenfall av omstendigheter Daniel Webster

2 2 Et salgsskjema - kvittering

3 3 Mange til mange sammenhengen Skap en tredje entitet for å lage en m:m sammenheng Assosieringsentitet (Entitetisering) Den vertikale streken på kråkefoten indikerer at varelinje kan identifiseres ved å sette sammen salgnr og linjenr SALG *salgnr salgsdato salgstekst SALGSLINJE *linjenr antall linjepris VARE *varenr varenavn varetype varefarge

4 4 NB! Notasjonsforskjeller Boka følger ORACLES notasjonsstandard Vertikal strek betyr at én sidens identifikator er en del av mangesidens identifikator - mangesiden er en svak entitet Modelator Vertikal strek betyr en, med kråkefot en eller fler. Kan bare uttrykke svake entiteter indirekte UML markerer sammenhengen som non identifying - sterk entitet på mangesiden identifying - svak entitet på mangesiden

5 5 Modelator

6 6 Rational

7 7 Hvorfor den tredje entiteten? Lagre data om sammenhengen Betrakte en m:m sammenheng som to 1:m sammenhenger

8 8 Lage en relasjonsdatabase Bruke samme regler som tidligere Den assosiative tabellen har to fremmednøkler En for hver av entitetene i mange til mange forholdet En fremmednøkkel kan også være en del av primærnøkkelen til en assosiativ entitet salgslinje linje- nummer antallstykkprissalg- nummer vare- nummer

9 9 Lage relasjonsdatabasen CREATE TABLE salg ( salgnrNUMBER(8,0), salgsdatoDATE, salgstekstVARCHAR(50), PRIMARY KEY(salgnr)); CREATE TABLE vare ( varenrINTEGER, varenavnVARCHAR(30), varetypeCHAR(1), varefargeVARCHAR(10), PRIMARY KEY(varenr)); CREATE TABLE salgslinje ( linjenrINTEGER, antallINTEGER, prisDECIMAL(7,2), salgnrINTEGER, varenrINTEGER, PRIMARY KEY(linjenr, salgnr), CONSTRAINT fk_salgslinje_salg FOREIGN KEY(salgnr) REFERENCES salg, CONSTRAINT fk_salgslinje_vare FOREIGN KEY(varenr) REFERENCES vare);

10 10 En join med tre tabeller List opp navnene til alle tre tabeller etter FROM Spesifiser to vilkår som matcher den assosiative tabellen med de andre tabellene SELECT * FROM salg, salgslinje, vare WHERE salg.salgnr = salgslinje.salgnr AND vare.varenr = salgslinje.varenr;

11 11 En join med tre tabeller Finn navnene på varer, antall og verdi på varer solgt SELECT varenavn, antall, pris, antall*pris AS total FROM salg, salgslinje, vare WHERE salgslinje.salgnr = salg.salgnr AND vare.varenr = varelinje.varenr AND dato = ' '; varenavnantallpristotal Pocket knife—Avon10.00 Safari chair Hammock Tent—8 person Tent—2 person160.00

12 12 EXISTS Existential qualifier Returnerer true eller false Returnerer true hvis tabellen inneholder minst en rad som tilfredsstiller det vilkåret Finn alle klesvarer (type “C”) der det har funnet sted et salg SELECT varenavn, varefarge FROM vare WHERE varetype = 'C' AND EXISTS (SELECT * FROM varelinje WHERE varelinje.varenr = vare.varenr); varenavnfarge Hat—Polar ExplorerRed Boots—snake proofBlack Pith helmetWhite StetsonBlack

13 13 NOT EXISTS Returnerer true hvis tabellen ikke inneholder noen rader som stemmer med vilkåret Finn alle klesvarer (type “C”) som ikke har vært solgt SELECT varenavn, varefarge FROM vare WHERE varetype = 'C' AND NOT EXISTS (SELECT * FROM varelinje WHERE vare.varenr = varelinje.varenr); varenavnvarefarge Hat—Polar ExplorerWhite Boots—snake proofGreen Pith helmetKhaki StetsonBrown

14 14 For alle Den universelle kvantor for alle Finnes ikke direkte i SQL Implementer ved hjelp av 2 ggr NOT EXISTS Finn alle varer som er solgt i alle salg blir Finn varer slik at det ikke eksisterer salg der varen ikke eksisterer

15 15 For alle Finn varer som er med i alle salg SELECT varenr, varenavn FROM vare WHERE NOT EXISTS (SELECT * FROM salg WHERE NOT EXISTS (SELECT * FROM varelinje WHERE varelinje.varenr = vare.varenr AND varelinje.salgnr = salg.salgnr)); varenrvarenavn 2Pocket knife—Avon

16 16 For alle - alternativ løsning Finn varene som finnes i alle salg kan omskrives som Finn alle varer der antall salg som inkluderer varen er lik det totale antall salg. SELECT vare.varenr, vare.varenavn FROM vare, varelinje WHERE vare.varenr = varelinje.varenr GROUP BY vare.varenr, vare.varenavn HAVING COUNT(DISTINCT salgnr) = (SELECT COUNT(DISTINCT salgnr) FROM salg);

17 17 Mengdeoperasjoner UNION Ekvivalent med OR INTERSECT Ekvivalent med AND Mengdeoperasjonene krever at operandene har identiske kolonner

18 18 UNION Finn alle varer som ble solgt 16. januar 2003 eller er brune SELECT varenavn FROM vare, varelinje, salg WHERE vare.varenr = varelinje.varenr AND varelinje.salgnr = salg.salgnr AND dato = ' ' UNION SELECT varenavn FROM vare WHERE varefarge = 'Brown'; varenavn Hammock Map case Pocket knife—Avon Pocket knife—Nile Safari chair Stetson Tent—2 person Tent—8 person

19 19 INTERSECT Finn alle varer som ble solgt 16. januar 2003 og er brune SELECT varenavn FROM vare, varelinje, salg WHERE vare.varenr=varelinje.varenr AND varelinje.salgnr=salg.salgnr AND dato = ' ' INTERSECT SELECT varenavn FROM vare WHERE varefarge = 'Brown'; varenavn Pocket knife—Avon


Laste ned ppt "Mange til mange sammenhengen Skremmende sammenfall av omstendigheter Daniel Webster."

Liknende presentasjoner


Annonser fra Google