Laboration 6, Databashantering med MySQL- ModelleringAv: Marcus Rejås <marcus@rejas.se>I denna labb skall vi för omväxlings skull inte jobba med datorn. Vi skall istället titta på hur datamodellering går till. Vi skall lära oss en enkel form av modellering och skall även praktiskt utföra den. Från förra laborationenVi kommer inte att använda någonting från föregående laborationer. Man kan om man vill göradenna laboration som första laboration men jag rekommenderar att man gör dem i ordning. Man tillgodogör sig denna laboration lättare om man har gjort de andra. DatamodelleringI nästan alla vetenskaper, inom industri och snart sagt överallt använder man sig av modeller.Det gör man även inom databashanteringen. Modeller använder man som en avbild av en verklighet för att se hur den beter sig i olika situationer. Man använder också modeller för att se hur någon produkt eller annat alster kommer att se ut och fungera när det är klart. Ofta bygger man modeller för att: • De är billigare än den verkliga produkten eller miljön. • De är mindre eller större än den verkliga produkten eller miljön. Det är lättare att ändra och testa saker på en modell som är mindre än tunneln under engelska kanalen eller större än en atomkärna. • De är inte lika farliga som den riktiga miljön. • De är lättare att visa upp eller få en helhetsbild över. • De är enklare att ändra än den riktiga miljön. Inom databashanteringen är det i huvudsak de två sista argumenten som gör att jobbar med modeller. Om man skall göra en databas är det enklare att starta med en modell på en whiteboard eller papper innan man börjar skapa tabeller och liknande i MySQL eller vilken databashanterare man nu valt. Det finns standarder för hur modellering skall gå till men vi kommer att använda en lite förenklad variant. Den variant vi använder i denna laboration liknar en modell som heter ER. Den stämmer dock inte helt överens. Är du intresserad av att lära dig ER-modellering ”på riktigt” så rekommenderar jag att du läser följande länk där det står väldigt bra förklarat hur ER-modellering fungerar. Den kan dock ses som överkurs. http://www.ida.liu.se/~tompa/databaser/er/ Nedan följer ett exempel på en mycket enkel datamodell. Titta tillbaka på den och lägg den på minnet. Titta sedan på den igen när du läser resten av denna text och när du gör uppgifterna. ![]() Figur 1: Exempel på en enkel datamodell Identifiera objekten (entiteterna)När man skapar en modell så utgår man oftast från den verklighet vi känner. Skall vi skapa endatamodell över till exempel ett företag så börjar vi med att ta reda på vilka objekt i detta företag som skall vara med i vår datamodell och i förlängningen i vår databas. Objekten är sådant som går att ta på (man kanske inte kan ta på dem alltid, men det är oftast substantiv). Exempel på objekt kan vara faktura, bil, person, räkning, m.m. Objekten kallas ibland för entiteter. Dessa blir sedan oftast tabeller i den färdiga databasen. Normalt sätt så ritar man objekten som fyrkanter med namnet i mitten. Om vi skall göra en databas över bilar och vilka som äger bilarna kan bra objekt vara bil och person. AttributVarje objekt (eller entitet som det ju också kallas) har ett visst antal attribut. Attribut är olikaegenskaper som det aktuella objektet har. Det kan vara till exempel att bilen är röd, den har ett visst registreringsnummer eller den är av ett visst märke eller en viss modell. Alla dessa saker är attribut. Vi ritar attributen som ovaler med namnet i mitten och ett streck till det objekt attributet hör. Det kan finnas flera attribut med samma namn i modellen men de måste vara anslutna till olika objekt. Ett objekt kan alltså inte ha två attribut med samma namn. NycklarEtt attribut som på något sätt unikt identifierar en instans av ett objekt kallas för en nyckel. Detvill säga om jag med hjälp av ett enda attribut säkert kan peka ut en enda post av objektet så är det en nyckel. Till exempel så kan ett registreringsnummer på en bil användas för att hitta just en bil. Det är ingen risk att det finns två bilar med samma registreringsnummer. Registreringsnummer är i det fallet en bra nyckel. Alla objekt bör ha en nyckel. Har objektet ingen naturlig nyckel att använda så kan enkelt skapa en egen nyckel med till exempel ett löpnummer. Ofta kallas dessa för ”id”. Ibland kan det vara bra att man, trots att det finns en naturlig nyckel, ändå skapar en egen. Detta används ofta inom till exempel arbetsplatser och inom föreningar. Alla personer i Sverige har ju ett personnummer, ändå får man nästan alltid ett medlemsnummer eller anställningsnummer när man läggs upp i en medlemsdatabas eller en databas på ett företag. Det gör man för att alla kanske inte vill att deras personnummer skall finnas med i databasen. Genom att skapa en annan nyckel kan man stoppa in även personer som inte vill dela med sig av sitt personnummer i databasen. Man kan ändå ha personnummer som ett vanligt attribut om man vill det. Det attribut som är nyckel stryker man under med en heldragen linje. RelationerRelationer inför man för att man vill visa hur de olika objekten är relaterade till varandra. Iexemplet ovan är till exempel är objektet bilar relaterat till personer. Ofta vill man sätta namn på relationer med, då skulle man kunna kalla denna relationen för ”äger”, det vill säga en person äger en bil. Vi markerar ut om det är fråga om en 1:1-, 1:N- eller N:N-relation. I en N:N relation måste ett kopplingsobjekt skapas. Ett exempel på ett kopplingsobjekt kan vara följande. Antag att du skall göra en databas åt ett flygbolag. Ett flygbolag har ett antal flygkaptener och ett antal flygplan. Flygkaptenerna kan flyga flera plan och ett plan kan flygas av flera kapterner. Alltså har vi en N:N-relation. Men vi vet att en kapten kan bara flyga ett flygplan i taget. Varje sådant tillfälle brukar kallas en flight. En flight binder samman en kapten med ett flygplan och dessutom kan man lägga till extra information i objektet flight, till exempel tider, destinationer och annat. Tittar man på relationerna nu så ser vi att en kapten kan vara på många flighter men en flight kan bara ha en kapten (1:N) precis samma sak gäller flygplanen. Nu har vi ingen N:N- relation utan bara 1:N-relationer. Eftersom vi vet att den främmande nyckeln skall vara på många-sidan har vi inga problem att sätta ut den. Främmande nycklar Normalt sett så skriver man inte ut främmande nycklar när man modellerar. Dessa kan man ju lista ut i efterhand vilka de skall vara. Men när man vet att man modellerar för en relationsdatabas som vi gör så är det lika bra att rita ut dem. Tänk på att den främmande nyckeln alltid skall vara på många-sidan (N) av en relation. Ett sätt att märka ut en främmande nyckel är att stryka under den med en streckad linje. Att svara påI denna labb så svarar du på separata blad som du lämnar in till laborationshandledaren. Nijobbar en och en. Glöm inte att skriva namn på det du lämnar in. Uppgift 1 I denna uppgift skall du göra en databas för ett bokförlag. Förlaget vill kunna lägga in de böcker de har men också olika författare. Du börjar förstås med att göra en datamodell. Du gör också den lilla förenklingen att en bok bara kan ha en författare. Din datamodell, den är uppgift 1. Uppgift 2 Lägg till i din modell från den förra uppgiften att en bok kan ha flera författare. Uppgift 3* Den här gången skall du göra en databas till ett bussbolag. Bussbolaget vill ha en databas med alla deras bussar och alla deras chaufförer. De vill dessutom hålla reda på vilken chaufför som kör vilken buss vid ett bestämt tillfälle. Börja som tidigare med att identifiera objekten. Forstätt sedan med relationerna och se sedan om du fått med allt. Din datamodell lämnar du in. Skriv gärna en liten text också med förklaringar där det kan vara nödvändigt. * Uppgift som är lite svårare Copyright © 2004 Rejås Datakonsult Var och en äger rätt att kopiera, sprida och/eller förändra detta dokument under villkoren i licensen "GNU Free Documentation License", version 1.2 eller senare publicerad av Free Software Foundation, utan oföränderliga avsnitt, utan framsidestexter och utan baksidestexter. En kopia av denna licens finns på http://rejas.se/gnu/. Detta dokument, i ett format lämpligt för redigering, hittas på http://rejas.se/docs/laboration6-mysql.sxw |
Databashantering > SQL labbar >