Databasteknik, 2I-1075 Introduktion till informationssystem Från verklighet till relationsdatabas Konceptuell modellering och databasmodellering Modelleringsmönster Kursens mål Momentet ger grundläggande kunskaper och färdigheter i databasteknik, inklusive kunskaper om begrepp, metoder och verktyg som används vid utformning och implementering av relationsdatabaser. Målet med kursen är att förmedla kunskaper om logisk och fysisk design av databaser för relationsmodellen. Givet användarkrav ska en normaliserad relationsdatabasmodell kunna definieras och senare implementeras i ett relationsdatabashanteringssystem. 1
Databasteknik Tre kursfordringar: Seminarier Projektuppgift Tentamen All information hittas i kurskompendiet och på kursens hemsida: http://www.dsv.su.se/~maria/ 2i1075 Kursen har även en FCkonferens: DBTEKNIK Databasteknik Försäljning av kompendier, utdelning av diskar EFTER dagens föreläsning Konton (WinXP/FC/Daisy /Unix) hämtas hos Lotta Arnbom, lotta@dsv.su.se, rum 6607, plan 6 Programvaror på kursen: DB2 v8.2 MS Access 2003 Rational Rose och/eller argouml (argouml.tigris.org) 2
Vad är ett informationssystem? Informationssystem: datoriserat system som stödjer en organtions informationsförsörjning VERKSAMHET avbildar INFORMATIONS SYSTEM ANVÄNDARE presenterar Exempel på informationssystem Ordermottagning Lagerhantering Fakturering Platsbokning Flygresor Medicinska behandlingar Personaladministration Banksystem Informations system 3
Från verklighet till system Verklighet Urval Modell Produkt Order Kund Informationssystem Arkitektur hos ett informationssystem Presentation Användargränssnitt via en browser Applikationslogik Java servlets som exekverar på en server Data Data från en databashanterare 4
Relationsdatabaser KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid Pia Eriksson Storg. 12 171 55 Torget 88 77 66 155 666 777 11/01 Ulf Eriksson Storg. 12 171 55 Torget 88 77 66 234 555 678 11/00 Ola Hansson Lillg. 2 218 43 Landet 55 44 11 666 222 111 09/01 Bo Eriksson Storg. 12 171 55 Torget 88 77 66 432 654 221 11/01 Bo Johnsson Eriksg. 45 171 55 Torget 99 77 21 123 444 321 11/01 My Hansson Lillg. 2 218 43 Landet 55 44 11 666 222 111 09/01 Relationsdatabasstruktur PRODUKT(Namn, Typ, Höjd, Bredd, Djup, Material, Vikt, Pris, Bild-liten, Bild-Stor) KUND(Namn, Gatuadress, Postnummer, Postadress, Telefon, Kontokort, Giltighetstid) BESTÄLLNING(Best-nummer, Kund, Gatuadress, Postnummer, Postadress, Datum, Fraktkostnad) BESTÄLLNINGSRAD(Best-nummer, Produktnamn, Antal) LEVERANS(Best-nummer, Produktnamn, Leveransbil, Avtalatdatum, Avtaladtid, Avgångsdatum, Avgångstid, Leveransdatum, Leveranstid) 5
Frågespråk Hur kommer applikationsprogrammen åt data i databasen? Genom ett frågespråk. SELECT Namn FROM PRODUKT WHERE Typ = Stol Presentation Gränssnittet ger möjlighet att nå applikationsprogrammen och därmed data i databasen. 6
MODELLER Modell: Struktur som avbildar vissa aspekter av någon del av verkligheten Exempel: Kartor Differentialekvationer Konceptuella modeller Syfte med modeller: Studera verkligheten indirekt genom att studera modellen Underlätta kommunikation Utgöra underlag för vidare implementering Building the right system Universe of Discourse Conceptual Model (CM) Use of CM? = < > ANIMAL belongs_to Weight 1 1 my_animal MEMBERSHIP 1 Date myflock SPECIES Mean_weight FLOCK Number Contract Database System Education, Reverse Engineering 7
MODELLER - problem? Modell: En struktur som avbildar vissa aspekter av någon del av verkligheten Ex på modell - KARTA Modeller förenklar Modeller förvanskar - Grönland, Afrika Modeller fokuserar - topografisk, politisk Modelleringsspråk: Komplexa språk med många symboler versus enklare språk som är lättare att förstå/förklara/validera av lekmän som kan domänen men inte språket Modellering fortsättning Kontroll av data skall ske så tidigt (så nära källan) som möjligt! Systemet skall inte kontrollera att data inte är fel, utan undanröja möjligheterna till att det blir fel Lättare sagt än gjort: Man måste modellera RÄTT (inte bara på rätt sätt), modelleringsspråket måste vara rikt nog för att kunna representera alla sakförhållanden. 8
Samma ord - olika begrepp (homonymer) På vilka sätt används ordet bok i meningarna nedan? Jules Verne skrev många böcker Biblioteket i Vällingby har många böcker Nazi Tyskland förbjöd många böcker Bokhandlaren i Jönköping sålde många böcker Samma begrepp - olika ord (synonymer) Avskeda - Friställa Arbetsgivare Arbetsköpare Städerska - Lokalvårdare 9
Ogdens triangel TERM EXTENSION INTENSION Konceptuell modellering En konceptuell modell beskriver data och datasamband på ett representationsoberoende sätt. Vad modellen sen ska implementeras som/i får inte påverka modellens utformning! Vanliga sätt att beskriva konceptuella scheman: via UML klasschema Via ER-scheman, etc. 10
Grafiskt språk för konceptuella modeller: ER-scheman (Entity-Relationship schemas) Entitet Relation Entitet APA ÄTER BANAN Annat notation: APA 0 äter 1 BANAN Namn: Sträng Grafisk notation för konceptuella scheman: UML-klassschema Vi kommer att använda UML-klasscheman som ER-scheman Klass association (relation) APA Namn : Sträng 0..1 äter BANAN attribut Avbildningsregel (för associationen, attributet) 11
Avbildningsregler för associationer i UML BIL Regno : Sträng ägs_av 1 PERSON Namn: Sträng En association ( pil ) har avbildningsregler (kardinalitetsregler). Man kan sas läsa pilen i två riktningar och för varje riktning måste vi avgöra vilka avbildningsregler som gäller. Vi använder oss av en Minimum..Maximum -notation (alternativ finns...). I minimum-posistionen kan vi skriva värdet 0 eller 1. I maximimum -positionen kan vi skriva värdet 1 eller *, där * står för många. Det ger oss fyra möjliga avbildningsregler: 0..1,, och. I praktiken brukar man förkorta till 1. För att förstå vad de olika max..min-värdena står för kan vi börja med att betrakta relations-pilen från BIL:ens synvinkel. Om en BIL kan ägas av HÖGST EN PERSON så skriver vi en 1:a i max-positionen (annars *). Om en BIL måste ägas av NÅGON PERSON sätter vi en 1:a i min-positionen (annars 0). I just detta fall fattades beslutet att en BIL kan ägas av högst en person och att alla bilar ägas av någon. Dvs avbildningsregeln blev, vilket vi förkortade till 1. Om en PERSON kan äga HÖGST EN BIl skriv en 1:a i max-position (annars *). Om en PERSON måste äga minst en BIL, skriv en 1:a i min-position (annars 0). Här tyckte vi att en PERSON kan äga många BIL:ar men inte nödvändigvis måste äga någon BIL,! Associationer i UML forts. Navigabilitet vs konceptuell riktning BIL Regno: String ägs_av PERSON Pnr: String Envärd? Om en bil kan ägas av högst en person så ja, annars nej. Total? Om en bil måste ägas av minst en person så ja, annars nej. Injektiv? Om en person kan äga högst en bil så ja, annars nej. Surjektiv? Om en person måste äga minst en bil så ja, annars nej. Vad betyder associationen? Namngivning i funktionell riktning? Namngivning av både associationen och båda rollerna? 12
Avbildningsregler Avbildningsregler för ATTRIBUT i UML... BIL Regno : Sträng ägs_av 1 PERSON Namn: Sträng Även attribut (som t ex Regno och Namn) behöver få sina avbildningsregler bestämda. Detta kan i vissa notationer vs grafiskt i det konceptuella schemat (vilket har många fördelar). Ett sätt är att explicit rita ut relationen (via en pil) mellan entiteten i fråga och attributet: Regno BIL 0..1 Ska utläsas varje BIL har högst ett registreringsnummer, Ett givet värde i mängden av text-strängar (t ex ABC123 ) kan vara relaterad till högst en BIL via attributet Regno. En BIL måste ha ett registreringnummer och, slutligen, det finns text-strängar (t ex Maria Bergholtz ) som inte utgör registreringsnummer. 1 Som synes används samma princip som för avbildningsregler Sträng för relationer mellan entiteter. BIL Regno: Sträng UNIK Ett alternativ är att använda notationen ovan, den har nästan samma informationskapacitet som notationen till vänster ( en BIL kan ha högst ett värde på registreringsnummer, och minst ett värde på registreringsnummer (dvs Regno är totalt ). Med UNIK avses att ingen annan kan använda ett Regno som en viss BIL använder). Däremot vr inte notationen ovan om det finns sträng-värden som inte utgör reg.nummer. Multiplicitet - regler i systemet vs common sense BIL Regno: Sträng ägs_av PERSON Pnr: Sträng 13
Multiplicitet - en övning PERSON har_mor Envärd? Total? Injektiv? Surjektiv? Avbildningsregler som mått på en modells kvalitet? Tumregel: Alla attribut i en klass bör vara totala (= ha minvärde 1) Ett stort antal attribut med partiella attribut (attribut med minvärde = 0) betyder att inte alla instanser (objekt) av klassen har något värde på attributen/egenskaperena ifråga vilket tyder på att man blandat flera fenomen i en och samma klass. DJUR Namn: Skatt_betald: 0..1 Adress: 0..1 Vikt: Medelvikt: 0..1 Utbredningsområde: 0..1 DJUR Namn: Adress: Vikt: ART Utbredningsområde Medelvikt HUND Skatt_betald: Tumregel: Associationer bör vara åtminstone totala eller surjektiva! BIL Regno: Sträng ägs_av PERSON Pnr: Sträng 14
Så hur gör man då? I en verklig situation intervjuas användare, manualer läses, eventuella existerande system studeras, verksamheten studeras, etc Ibland har man bara tillgång till textuella beskrivningar av det system man ska modellera Hur angripa dessa? Verb, substantiv, adjektiv? Modelleringsmönster, så kallade data-abstractions, tumregler, med mera... Att göra urvalet Ett företag önskar sälja sina produkter, som är möbler, genom en webbutik. Kunderna skall kunna lägga beställningar på möblerna med hjälp av webbutiken. Produkterna levereras sedan med lastbil till kunderna. För att kunderna skall få en bra bild av möblerna så behöver de veta deras vikt, typ, storlek och det material de är tillverkade av; det behövs också foton på möblerna. Utöver kostnaderna för de enskilda möblerna måste kunden också betala för fraktkostnaden som baseras på den sammanlagda vikten. Kunden kan begära att få leverans inte bara till sin egen adress utan också till andra adresser. Kunden kan önska en tid då leveransen skall ske - det inträffar dock ibland att den verkliga leveranstiden avviker från den önskade. För att kunden skall veta om en leverans gått iväg eller inte behövs information om avgångstider för leveranser. Företaget eftersträvar att samtidigt skicka iväg alla de produkter som ingår i en beställning men man lyckas inte alltid med det, och då kan det behövas flera leveranser för en beställning. Kunden betalar med kontokort. 15
16 BESTÄLLNING KUND PRODUKT LEVERANS Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid BESTÄLLNING KUND PRODUKT LEVERANS Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad BESTÄLLNINGS- RAD Antal Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid
Modelleringsmönster- Analysmönster - Data abstractions Modelleringsmönster: Arv Arv Vilken verklighet man än vill avbilda så förekommer hierarkiska strukturer. Det betyder att vi måste fånga dessa strukturer i vår modell av samma verklighet. Djur Gräsätare Däggdjur Rovdjur Fåglar Pingvin Hovdjur Gnagare Tax Gnu Kanin Konceptuell modell av en hierarkisk struktur: DJUR DÄGG- DJUR FÅGLAR HOVDJUR GRÄS- ÄTARE GNAGARE ROV- DJUR TAX PINGVIN GNU HARE 17
Arv MAN Militärtjänstort: String: PERSON Namn: String UNIK KVINNA Arv HUND Skatt: Integer DJUR Namn: String UNIK KATT MAN och KVINNA är ömsesidigt uteslutande och uttömmande map PERSON HUND och KATT är ömsesidigt uteslutande men inte uttömmande map DJUR En arvs-hierarki består av sub- och supertyper. Subtyperna utgör en delmängd av supertypen. Om subtyperna täcker upp hela supertypen säger man att de är uttömmande (eng. exhaustive). Om en och samma instans inte kan tillhöra till flera subtyper säger man att subtyperna är ömsesidigt uteslutande (eng. mutually independent). Arv forts. En objekttyp kan ärva en annan objekttyp En objekttyp som ärver kallas subtyp Den objekttyp som ärvs från kallas supertyp Subtypen har samma attribut och samband som supertypen Subtypen kan ha ytterligare attribut och samband En supertyp kan vara abstrakt, dvs den kan inte instansieras 18
Arv Kund Kontohavare Konto Kundnr: Integer 1 Kontonr: Integer UNIK UNIK Namn : String Företag Börsnoterad: String Person Arbetar_hos Bankbok Saldo: Integer Lån Lånesumma : Integer Hur hade schemat blivit om -relationer inte använts? arbetar_hos 0..1 Person Kundnr: Integer UNIK Namn : String Börsnoterad: String 0..1 Kontohavare 1 Konto Kontonr: Integer Saldo: Integer 0..1 Lånesumma: Integer 0..1 Annat sätt? 19
Arv forts. Om subtyper har alla attribut och relationer gemensamma: Överväg att kombinera dem till en subtyp. Lägg ev. till ett extra attribut i entiteten som tjänas som typ-beteckning. Om en subtyp är uttömmande map supertypen: Låt subtypen uppgå i supertypen. Om flera subtyper inte har några egna attribut eller relationer: Överväg att göra dem till en subtyp. Reifiering Reifiering SJUKDOM botar blir: botas SJUKDOM BOT 1 Procent: Float BEHANDLING botmedel 1 BEHAND- LING Relationen botar är M:M. Om man vill lagra information som berör relationen botar måste relationen reifieras, dvs göras till ett objekt. Övriga M:M kan lämnas som de är på modelleringsnivå, men måste brytas upp när man skapar en relationsdatabas! 20
21 PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid 0..1 PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid BESTÄLLNINGS- RAD Antal: l 0..1
22 PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid BESTÄLLNINGS- RAD Antal: l PRODUKT Namn Typ Höjd Bredd Djup Material Vikt Pris Bild-liten Bild-stor KUND Namn Gatuadress Postnummer Postadress Telefon Kontokort Giltighetstid BESTÄLLNING Best-nummer Gatuadress Postnummer Postadress Datum Fraktkostnad LEVERANS Leveransbil Avtalatdatum Avtaladtid Avgångsdatum Avgångstid Leveransdatum Leveranstid BESTÄLLNINGS- RAD Antal: l DEL- LEVERANS Delantal: Leveransbil
Övning reifiering PERSON Namn: Sträng UNIK, TOTAL är_medlem_i 1 0 KLUBB Klubb_namn: Sträng UNIK, TOTAL Uttöka det konceptuella schemat ovan så att det klarar av att representera att en viss person gick in i en viss klubb vid ett visst tillfälle! Består-av-ingår-i (rekursiva strukturer) ingår i Komponent består av Komponent består av (ingår i) Komponent består av ingår i Delkomponent 23
Rekursiva strukturer ARTIKEL består_av Som synes egentligen ett specialfall av reifiering! blir: SPECIFIKATION Procent : Float del_i 1 1 ARTIKEL 1 består_ av Template-Copy strukturer (power types) Template-Copy strukturer (power types) Vissa objekt kan ses som mallar för andra objekt, kopior. En mall beskriver de generella dragen hos kopiorna som i sin tur kan innehålla ett antal idividuella drag. Mallar är ofta abstrakta objekt medan kopior är konkreta objekt. Kopior kan ses som materialiseringar av mallar. BOK är ett typiskt exempel på en mall, boken som ett litterärt verk. BOK:en har en titel, en författare osv. De individuella kopiorna är de fysiska exemplaren av det litterära verket som kan ha egenskaper som vikt, antal sidor etc. Observera att KOPIA inte utgör en delmängd av BOK. Template- Copies är inte samma sak som supertyp-subtyp. BOK titel Författare: String UNIK Titel: String 1 av_typ KOPIA Vikt: String Antal_sidor 24
Samma ord - olika begrepp På vilka sätt används ordet bok i meningarna nedan? Jules Verne skrev många böcker Biblioteket i Vällingby har många böcker Nazi Tyskland förbjöd många böcker Bokhandlaren i Jönköping sålde många böcker Kurskod Kursnamn Startdatum Antal poäng Kursansvarig KURS Kurskod Kursnamn Antal_poäng tillhör KURSTILL- FÄLLE Startdatum Kursansvarig 25