2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i artikeln A relational model for large shared data banks i Communications of the ACM, juni 1970 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 27 Relationsmodellen Relation är den matematiska termen för tabell En databas ses som en mängd relationer DB = {R1, R2, Rn} 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 28 Karlstads Universitet, Datavetenskap 1
2003-01-20 Relationsmodellen Beskriver ett sätt att se på data från en logisk synvinkel Tre aspekter av data datastrukturer (eller objekt) huvudsakligen tabeller datamanipulation (eller operationer) operationer är bl. a SELECT, PROJECT och JOIN dataintegritet de viktigaste reglerna är de om entitetsintegritet och referensintegritet 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 29 Domäner En domän är en namngiven mängd av skalära värden, alla av samma typ Varje attributs värden måste tas från exakt en underliggande domän En domän är vad man i moderna programspråk kallar en datatyp De flesta av dagens relationsdatabaser stödjer dock bara primitiva datatyper som CHARACTER, INTEGER och FLOAT 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 30 Exempel på domäner typedef enum{london, Paris, Athens, New York, Stockholm, Rome} City; Detta skapar en datatyp City i ett C-program. Alla variabler av typen City måste ha som värde en av de uppräknade städerna 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 31 Karlstads Universitet, Datavetenskap 2
2003-01-20 Exempel på domäner CREATE DOMAIN City Char(9) DEFAULT??? CHECK (VALUE IN ( London, Paris, Athens, New York, Stockholm, Rome,??? ) ) 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 32 Relationer En relations schema består av en mängd attribut R = {A1, A2, An} Varje attribut är definierat på exakt en underliggande domän Attributnamnen i en relation måste vara unika Flera attribut kan dock vara definierade på samma domän 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 33 Relationer En relations tillstånd eller värde vid en viss tidpunkt benämns r och består av en mängd tupler t (0 eller flera) r = {t1,t2, tn} Varje tuple t består av en mängd värden v där varje värde är hämtat från motsvarande domän t = {v1,v2, vn} 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 34 Karlstads Universitet, Datavetenskap 3
2003-01-20 Relationer Antalet tupler i en relation kallas relationens kardinalitet Antalet attribut i en relation kallas relationens grad En eller flera attribut som unikt identifierar en tuple kallas för relationens primärnyckel 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 35 Egenskaper hos en relation Det finns inga duplicerade tupler Tuplerna är oordnade det finns ingen första eller sista tuple Attributen är oordnaded det finns inget första eller sista attribut Alla värden är atomära (skalära) (detta betyder att en relation alltid är i första normalformen) 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 36 Olika sorters relationer En namngiven relation är en relation som har definierats i databasen En basrelation är en relation som inte är en härledd relation, utan existerar på riktigt En härledd relation är en relation som är definierad i termer av andra relationer 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 37 Karlstads Universitet, Datavetenskap 4
Olika sorters relationer En vy är en namngiven härledd relation som är virtuell den existerar bara som ett uttryck Ett frågeresultat är en icke namngiven härledd relation som är resultatet av att en specifik fråga exekveras 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 38 Vyer (virtuella relationer) En vy är en härledd relation som är namngiven relationen finns bara som ett uttryck och brukar därför kallas en virtuell relation Vyer har flera användningsområden, men det viktigaste är att de kan användas för att skapa logiskt dataoberoende 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 39 Logiskt dataoberoende Ett system har logiskt dataoberoende om användare och applikationer inte påverkas av ändringar i databasens logiska struktur Logiskt dataoberoende kan bara uppnås om systemet stödjer operationer på vyer på ett korrekt sätt! 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 40 Karlstads Universitet, Datavetenskap 5
2003-01-20 Logiskt dataoberoende Två aspekter Om databasen växer, d v s om t ex ett attribut läggs till en relation eller en relation läggs till databasen, kan dessa ändringar gömmas med hjälp av vyer Om databasen omstruktureras, t ex om en relation bryts ner i två stycken, kan vyer användas för skapa illusionen om att det fortfarande är en enda relation 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 41 Andra fördelar med vyer Vyer tillåter att samma data kan ses av olika användare på olika sätt samtidigt Vyer kan användas som "macron Vyer kan användas för att gömma data (av säkerhetsskäl) 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 42 Integritet Integritet handlar om att se till att data i databasen är korrekt Vid varje tillfälle innehåller en databas en mängd datavärden som skall representera en viss del av "verkligheten Vissa värden kan inte tillåtas eftersom de inte representerar något som finns i verkligheten (t ex negativa löner) När databasen definieras måste därför också vissa integritetsregler läggas till. Dessa gör det möjligt för DBHS att hindra att inkorrekta värden läggs in i databasen 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 43 Karlstads Universitet, Datavetenskap 6
Exempel på integritetsregler Integritetsregler i COMPANY-databasen - SALARY i relationen EMPLOYEE måste vara större än noll SEX i relationen EMPLOYEE måste ha värdet M eller F SSN i relationen EMPLOYEE måste bestå av nio siffror 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 44 Integritetsregler Reglerna i exemplet är databas-specifika (eller semantiska), dvs. de gäller bara för en specifik databas Relationsmodellen innehåller också två generella integritetsregler, dvs. regler som gäller för alla databaser kandidatnycklar (och primärnycklar) främmandenycklar 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 45 Definition av en kandidatnyckel Låt R vara en relation. Då är en kandidatnyckel för R en delmängd av Rs mängd av attribut, säg K, så att vid varje givet tillfälle, så har två olika tupler i R inte samma värde på K (K är unik) om K är sammansatt, så kan ingen del av K tas bort och K fortfarande vara unik (K är ej reducerbar) 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 46 Karlstads Universitet, Datavetenskap 7
Enkla och sammansatta kandidatnycklar En kandidatnyckel som består av mer en ett attribut sägs vara sammansatt En kandidatnyckel som består av exakt ett attribut sägs vara enkel 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 47 Kandidatnycklar Kandidatnycklar definieras som mängder av attribut Skälet till att kandidatnycklar är så viktiga är att det enda sättet att adressera en speciell tuple är genom att använda ett värde på en kandidatnyckel 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 48 Exempel kandidatnycklar Ex i COMPANY: Employee: Project: Works_on: K = {SSN} K = {PNUMBER} K = {ESSN,PNO} 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 49 Karlstads Universitet, Datavetenskap 8
Primärnycklar och alternativa nycklar Primärnyckel en nyckel som väljs från mängden kandidatnycklar Alternativ nyckel den återstående mängden kandidatnycklar när primärnyckeln har tagits bort 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 50 Sekundärnyckel En sekundärnyckel är en nyckel som när den används för sökning kan returnera en relation med fler än en tuple Ex. SELECT SSN from EMPLOYEE WHERE DNO = 5; DNO är här en sekundärnyckel 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 51 Nycklar och saknad information (nulls) Nulls är något som används i databaser för att handskas med saknad information För varje attribut i en relation kan man specificera NULLS ALLOWED eller NULLS NOT ALLOWED 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 52 Karlstads Universitet, Datavetenskap 9
Tolkningar av NULL Vissa logiska svårigheter värde okänt egenskapen ej relevant värde finns inte värde odefinierat 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 53 Regeln om entitetsintegritet Ingen del av primärnyckeln i en basrelation får vara null I en relationsdatabas lagrar vi inte information om någonting vi inte kan identifiera! 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 54 Definition av främmandenyckel (FK) Låt R2 vara en basrelation. Då är en främmandenyckel i R2 en delmängd av mängden attribut i R2, säg FK, så att det finns en basrelation R1 (R1 och R2 behöver ej vara olika) med en kandidatnyckel CK, och för varje tillfälle, så är varje värde på FK i relationen R2 antingen helt och hållet null eller identiskt med värdet på CK i någon tuple i R1 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 55 Karlstads Universitet, Datavetenskap 10
Främmandenycklar Varje attribut i en främmandenyckel måste definieras på samma domän som det motsvarande attributet i den matchande kandidatnyckeln 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 56 Främmandenycklar Främmande-till-kandidatnyckel referenser sägs ibland vara det "lim" som håller ihop databasen. Dessa sägs representera relationer mellan olika tupler 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 57 Regeln om referensintegritet Databasen får inte innehålla några icke matchande värden på främmandenycklar dvs. om B refererar till A, så måste A existera 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 58 Karlstads Universitet, Datavetenskap 11
2003-01-20 Regler för främmandenycklar Vad ska då systemet göra om en operation försöker utföras som skulle bryta mot regeln om referensintegritet? För varje främmandenyckel i databasen skall databasdesignern specificera vad som skall hända vid delete eller update av den matchande kandidatnyckeln 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 59 Exempel på regler för främmandenycklar Vad skall t ex hända om någon försöker ta bort eller uppdatera 123456789 i relationen EMPLOYEE? Två möjligheter (åtminstone) finns för båda operationerna: RESTRICTED - operationerna är förbjudna om 123456789 också finns i WORKS_ON CASCADES - operationerna utförs också på de tupler som innehåller 123456789 i SHIPMENT 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 60 Semantiska integritetsregler Även kallade business rules Gäller för en specifik databas 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 61 Karlstads Universitet, Datavetenskap 12
Exempel på semantiska integritetsregler Regler av typen Ingen kan ha en lön som är mindre än 10000 kan specificeras med domänregler Regler av typen Varje anställd måste tillhöra en avdelning specificeras genom att ange NOT NULL för attributet DNO i EMPLOYEE Regler av typen Ingen anställd får ha högre lön än sin chef kan specificeras genom triggers eller assertions 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 62 Karlstads Universitet, Datavetenskap 13