Databasdesign Kapitel 6 Databasdesign E-R-modellen sid Modellering och design av databaser 1 E-R-modellen 3 Grundläggande begrepp 4 Begränsningar 10 E-R-diagram 14 E-R-design 16 Svaga entitetsmängder 19 Utvidgade E-R drag 20 Exempel 25 Reducering av E-R-diagram till tabeller 26
Databasdesign 6-1 Tre aspekter på att studera databashanteringssystem (DBHS): Modellering och design av databaser Design av en databas innebär att man skisserar upp de strukturer som behövs. Detta tillåter diskussion i förenklade termer innan man slår fast hur databasen implementeras. Designnotationer: Entitet/relationskap (E-R) Object Description Language (ODL) Programmering - förfrågningar och operationer som uppdaterar databasen (SQL). DBHS implementering. Modellering och design av databaser Faser vid utformning av en databas Kravspecifikation Specificerar vilka krav användarna har på databasen. Tekniker för att representera användarnas krav som diagram finns. (tas ej upp i dennna kurs utan kraven framställs verbalt) Begreppsmässig design Utformning av databasens logiska struktur. Val av datamodell (t.ex. E-R-modellen) Skapa ett begreppmässigt schema för databasen genom att tillämpa begreppen i datamodellen på kraven. Dvs. för E-R-modellen: schemat specificerar de entiteter som är representerade i databasen, deras attribut, relationerna mellan dem samt deras begränsningar.
Databasdesign 6-2 Den begreppsmässiga designfasen resulterar då i ett E-R-diagram som ger en grafisk representation av schemat. Specifikation av funktionella krav De funktionella kraven indikeras av schemat och beskriver de transaktioner (operationer) som kommer att utföras på databasen. Logisk design Schemat konverteras till en implementations/datamodell för databasen. Typiskt används den relationella datamodellen, dvs. det begreppsmässiga schemat konverteras till relationsschema (relationstabeller). För både E-R-scheman och ODL-designnotation finns det halvautomatiska sätt att konvertera till relationsdesign. (från E-R-diagram -> relationstabeller) Fysisk design Specifikation av de fysiska egenskaperna för databasen (t.ex. filorganisation, intern datastruktur )
E-R-modellen 6-3 E-R-modellen E-R datamodellen baseras på en uppfattning av en verklig värld som består av objekt kallande entiteter och relationskaper bland dessa objekt. En entitet är ett objekt som existerar och kan skiljas från andra objekt. Distinktionen sker genom att associera attribut, som beskriver objektet, med varje entitet. En relationskap är en association bland flera entiteter. En avbildningskardinalitet uttrycker antalet entiteter till vilka en entitet kan vara associerad via en relationskap. Från ett databasperspektiv måste distinktionen mellan individuella entiteter och relationskaper ske i termer av deras attribut. För att göra detta tillordnas en primärnyckel åt varje entitetsmängd. En entitetsmängd som inte har tillräckligt med attribut för att bilda en primärnyckel kallas en svag entitetsmängd, annars stark. Grafiskt: E-R-diagram
E-R-modellen, Grundläggande begrepp 6-4 Grundläggande begrepp Entitet Begreppet entitet är svårt att definiera formellt. Implicit är en entitet ett ting eller objekt som existerar och kan skiljas från andra objekt m.h.a. sina egenskaper. Ex.: bil person myra? En entitet kan vara konkret (person, bil) abstrakt (lån, semester) Entitetsmängd Representeras i E-R-diagram med en rektangel. En entitetsmängd (ej precist definierat) är en mängd av "liknande" entiteter, dvs. de har en mängd gemensamma karakteristika ("attribut"). Ex.: alla personer alla rödhåriga personer alla bilar Entitetsmängder är på schemanivå. Motsvarande på instansnivå är aktuella delmängder av alla element av en given entitetsmängd som finns i databasen. Ex.: Registercentralen kunde ha entitetsmängden bilar. I den aktuella instansen av denna entitetsmängd finns alla registrerade bilar i Finland, inte alla bilar i världen. Entitetsmängderna i en databas behöver inte vara disjunkta, t.ex. i en bankdatabas kan en viss person tillhöra både entitetsmängden customer och employee.
E-R-modellen, Grundläggande begrepp 6-5 Attribut Representeras i E-R-diagram med ellips, cirkel. En entitet representeras av en mängd attribut, dvs. beskrivande egenskaper hos alla element i en entitetsmängd. Ex.: customer = ( customer_id, customer_name, customer_street, customer_city ) Varje entitet har ett värde för varje attribut (värdet kan vara null). Mängden av tillåtna värden för ett attribut kallas attributets domän. Ex.: Attribut customer_city kan ha värdet Åbo. Formellt är ett attribut för en entitetsmängd en funktion som avbildar från entitetsmängden till en domän. Eftersom en entitetsmängd kan ha flera attribut kan varje entitet beskrivas med en mängd av par (attribut, datavärde), ett par per attribut. Ex.: { (kurs_id, 456302 ) (kurs_namn, Databaser ) } Attributtyper Enkelt / sammansatt attribut - är ej/ är uppdelat i flere delar, delattribut Ex.: adress kan bestå av delarna gatuadress, postnummer, stad. och gatuadress kan i sin tur vara indelat i gatunamn och nummer. adress gatuadress postnummer stad gatunamn nummer
E-R-modellen, Grundläggande begrepp 6-6 En-värt / flervärt attribut - kan ha ett / flere värden Flervärda attribut kan ges övre och undre gränser. Ex.: ett attribut telefon_nummer är flervärt om en person tillåts ha flere telefonnummer. Härlett attribut - värdet kan beräknas ur andra attribut Värdet för ett härlett attribut lagras ej utan beräknas då det behövs. Ex.: ålder kan beräknas givet ett födelsedatum
E-R-modellen, Grundläggande begrepp 6-7 Relationskap En relationskap sammanbinder två (binär relationskap) eller flera entiteter. Ex.: Vi kan definiera en relationskap som associerar studerande Calle med kurs 456302 vilket specificerar att Calle åhör kurs 456302. kurs studerande 456103 Logik 5 2 456302 Databaser 5 3 451100 Intro 5 1 Calle DT M Brita DT K Lasse IS M Relationskapsmängd Entitetsmängd Representeras i E-R-diagram av ruter (diamond) <> En relationskapsmängd är en mängd av relationskaper av samma typ. Formellt är den en matematisk relation på n (n > 2, ev. icke-distinkta) entitetsmängder. Om E 1,E 2,..., E n är entitetsmängder, så är en relationskapsmängd R en delmängd av { (e 1, e 2,..., e n ) e 1 E 1, e 2 E 2,..., e n E n } där (e 1, e 2,..., e n ) är en relationskap. "Värdet" på en relationskapsmängd kan ses som en tabell. Varje rad representerar de entiteter som deltar i relationskapen: studerande kurser Calle 456302 Brita 456302 Lasse 451100 {(Calle, 456302),(Brita,456302),(Lasse,451100)} kurs 456103 Logik 5 2 456302 Databaser 5 3 451100 Intro 5 1 studerande Calle DT M Brita DT K Lasse IS M
E-R-modellen, Grundläggande begrepp 6-8 Vanligen räcker binära relationskaper (sammanbinder två entitetsmängder) men i vissa fall måste tre eller flera entitetsmängder sammanbindas med en relationskap. Ex.: Relationskap mellan studerande, kurser och RÖassistenter (RÖ-grupper hålls av RÖassistenter) 2-vägsrelationskaper räcker för att associera en RÖ-assistent med en student, om varje kurs har bara en RÖ-assistent. studerande Sambandet mellan studenter och RÖassistenter går via kurser. åhör kurser En 3-vägsrelationskap behövs om RÖ-grupperna kan ha olika RÖ-assistenter. RÖassist. studerande assist- erar kurser åhör RÖassist. studerande kurser RÖassistent Calle 456302 Ulla Brita 456302 Annamari Lasse 451100 Ulla
E-R-modellen, Grundläggande begrepp 6-9 Deskriptiva attribut En relationskapsmängd kan ha deskriptiva attribut. Ex.: Ett attribut access_date kan associeras till depositor för att specificera datum då kunden senast accesserade sitt konto. customer (customer_name) depositor(...,access_date) account(account_number) Adams Brooks Curry 2 jan 2007 15 juli 2006 15 feb 2007 A-101 A-215 A-306 En relationskapsinstans i en relationskapsmängd måste kunna identifieras entydigt utan att utnyttja deskriptiva attribut.
E-R-modellen, Begränsningar 6-10 Avbildningskardinaliteter Uttrycker antalet entiteter till vilka en annan entitet kan vara associerad via en relationskapsmängd. Mest användbar för binära relationskapsmängder. För en binär relationskapsmängd måste avbildningskardinaliteten vara en av följande typer: En till en (1-1) En till många (1-m) Många till en (m-1) Många till många (m-m) I E-R-diagram anges "en" som en riktad linje ( ->) och många som en oriktad linje ( ) customer-id Ex.: en-till-en Ett lån associeras med högst customer-name customer-city en kund via relationskapen customer borrower och en kund associeras med högst ett lån via borrower Ex.: en-till-många customer-id Ett lån associeras med högst customer-name en kund via relationskapen customer borrower men en kund kan associeras med många (även 0) lån via borrower customer-street customer-street customer-city borrower borrower loan-number loan-number Ex.: många-till-en Ett lån kan associeras med flera customer-id customer-street kunder (även 0) men en kund kan customer-name customer-city associeras med högst ett lån Ex.: många-till-många customer borrower Ett lån kan associeras med flera kunder (även 0) och en kund kan associeras till flere lån (även 0). loan loan loan-number amount loan amount amount customer-id customer-street loan-number amount customer-name customer-city customer borrower loan
E-R-modellen, Begränsningar 6-11 Existensberoenden Entitet x säges vara existensberoende av entitet y om existensen av x är beroende av y. y kallas dominerande entitet (loan i exemplet) och x kallas underordnad entitet (payment i exemplet) Att x är existensberoende av y medför att om y strykes så strykes även x. Ex.: Om en loan-entitet strykes, så måste även alla dess associerade payment-entiteter strykas. loan loan-paym payment
E-R-modellen, Begränsningar 6-12 Nycklar Det är viktigt att specificera hur entiteter inom en given entitetsmängd och relationskaper inom en given relationskapsmängd skiljes åt. Från databasperspektivet måste skillnaden mellan dem uttryckas i termer av deras attribut. Begreppet nyckel gör det möjligt att göra en dylik identifikation. Entitetsmängder: Supernyckel: ett eller flera attribut som entydigt identifierar en entitet i en entitetsmängd. Kandidatnyckel: en minimal supernyckel (ingen äkta delmängd är en supernyckel). Primärnyckel: en kandidatnyckel vald av databaskonstruktören som den viktigaste för att identifiera entiteter i entitetsmängden ifråga. Relationskapsmängder: En relationskapsmängd måste även har en kandidatnyckel - en primärnyckel (som identifierar individuella relationskaper i relationskapsmängden) som i stort sett består av de attribut som utgör primärnycklarna för de entitetsmängder som definierar relationskapsmängden. Låt R vara en relationskapsmängd som involverar entitetsmängderna E 1, E 2,..., E n. Låt pn (E i ) beteckna mängden av alla attribut som bildar primärnyckeln för E i. Antag att attributnamnen är entydiga, om ej byt namn. Antag att R inte har några attribut. Då är attributen som beskriver individuella relationskaper för R: attribut(r) = pn (E 1 ) pn (E 2 )... pn(e n )
E-R-modellen, Begränsningar 6-13 Om R har deskriptiva attribut {a 1, a 2,..., a m }, så beskriver mängden pn(e 1 ) pn(e 2 )... pn(e n ) {a 1, a 2,..., a m } av attribut en individuell relationskapsmängd i R. I vardera fallet bildar attributmängden pn(e 1 ) pn(e 2 )... pn(e n ) en supernyckel för R. Sammansättningen av primärnyckeln beror på avbildningskardinalitet och på strukturen av attributassociationer med relationskapsmängden: Ex.: type-ass. customer-id customer-street emp-name address customer-name customer-city customer Om kunden bara har en bankir, dvs. cust-banker-relationen är m-1, så är primärnyckeln för cust-banker helt enkelt primärnyckeln för customer. För 1-1-relationer kan vardera primärnyckeln användas. cust- banker employee relationskapsmängden cust-banker representerar en association mellan en kund och dennes bankir. cust-banker har attributet type-ass som representerar naturen av relationskapen (t.ex. lånebeviljare, personlig bankir) Om cust-banker relationen är m-m består primärnyckeln av unionen av primärnycklarna för customer och employee