110 likes | 339 Views
Databaser: Relasjonsmodellen, del I. En relasjon er en matematisk mengde side 2 Egenskaper ved relasjoner side 3 Entitetsintegritet side 4-5 Referanseintegritet side 6-7 Å definere entitetsregler i SQL side 8 Autogenererte løpenummer som primærnøkkel side 9 . Basisreferansen er:
E N D
Databaser: Relasjonsmodellen, del I En relasjon er en matematisk mengde side 2 Egenskaper ved relasjoner side 3 Entitetsintegritet side 4-5 Referanseintegritet side 6-7 Å definere entitetsregler i SQL side 8 Autogenererte løpenummer som primærnøkkel side 9 Basisreferansen er: E.F. Codd (IBM): ”A Relational Model of Data for Large Shared Data Banks” Comm. ACM, juni 1970 Se ellers læreboka, side 43-58, 104-114
En relasjon er en matematisk mengde • En mengde er en samling dataverdier som kan være enkeltverdier eller sammensatte verdier. Ingen av verdiene kan forekomme mer enn én gang i mengden og verdiene er ikke ordnet på noen bestemt måte. • Det kartesiske produktet av to mengder A og B, A x B, er mengden av alle ordnede par <a, b> hvor a є A og b є B. • En relasjon mellom A og B er den delmengden av det kartesiske produktet AxB slik at <a,b> er sann. • Den mengden av verdier som et attributt kan anta, kalles attributtets domene. • Tabellformen er en måte å presentere relasjonen på. • Vis på tavla Datamodellering og databaserElse Lervik
Egenskaper ved relasjoner • Tabeller som framstiller relasjoner har en del egenskaper som ”vanlige tabeller” ikke har. Disse egenskapene følger av at relasjonene er matematiske mengder. • Egenskaper ved slike tabeller: • Duplikater eksisterer ikke • Tuplene (radene) er uordnet • Attributtene (kolonnene) er uordnet • Verdiene er atomiske (relasjonen kalles normalisert) • Relasjonens grad = antall attributter (kolonner) (binær, trinær, n-ær) • Relasjonens kardinalitet = antall tupler (relasjonens tilstand, varierer over tid) • En relasjonsdatabase er en samling navngitte, normaliserte relasjoner (kun atomiske verdier) med forskjellige navn. • Relasjonsmodellen har innebygd to integritetsregler • integritet = ”korrekthet” • entitetsintegritet, som er knyttet til primærnøkkelen • referanseintegritet, som er knyttet til fremmednøkkelen Datamodellering og databaserElse Lervik
Entitetsintegritet • En entitet i databaseverden svarer til et objekt uten operasjoner i objektorientert tankegang. • Hver tuppel i en relasjon inneholder data om en entitet. • På samme måte som entiteter (objekter) i den virkelige verden er identifiserbare, skal også den enkelte tuppel i en relasjon være identifiserbar. • En mengde attributter som gjør en tuppel entydig kalles en supernøkkel. • En kandidatnøkkel er en minimal supernøkkel. • En primærnøkkel er den kandidatnøkkelen vi velger til å identifisere en tuppel. Hele eller deler av denne kan ikke være NULL (det betyr at verdien mangler, det er ikke det samme som en tekststreng som består av blanke tegn, og heller ikke tallverdien 0). • Kandidatnøkler som ikke velges til primærnøkkel, kalles alternative nøkler. • En surrogatnøkkel er ofte et godt alternativ til en informasjonsbærende primærnøkkel. Gjerne løpenummer generert av databasesystemet. Datamodellering og databaserElse Lervik
Eksempler på forskjellige typer nøkler • ansatt(ansNr, fnr, navn, postnr, adr) Datamodellering og databaserElse Lervik
Tilbake til eksemplet fra forrige gang • Lag database: • studnr, navn, adresse, postnr, poststed, fagkode, fagnavn, karakter (kun én karakter pr. student og fag) • Hvilke tabeller? • Prøv! forslag fra salen: to tabeller, fungerte ikke – riktig svar er fem tabeller • Tenk objektorientert, finn objekter (klasser) og fordel attributtene. • Tegn klassediagram uten operasjoner («datamodell») Datamodellering og databaserElse Lervik
Fra datamodell til tabeller, første intro. studnr, navn, adresse, postnr, poststed, fagkode, fagnavn, karakter (kun én karakter pr. student og fag) • Lag tabellene. • Hva karakteriserer en databasetabell? Datamodellering og databaserElse Lervik
Referanseintegritet • Fremmednøkler brukes til å kople sammen tabeller. • En fremmednøkkel er et attributt (eller en kombinasjon av attributter) i en relasjon R2 med verdier som skal eksistere som primærnøkkel i en relasjon R1. Fremmednøkkelen i R2 og primærnøkkelen i R1 må være definert på samme domene. Fremmednøkler (men ikke deler av fremmednøkler) kan ha verdien NULL. R1 og R2 kan være samme relasjon. • Eksempel på tavla Datamodellering og databaserElse Lervik
Et eksempel til • Fremmednøkkelen refererer til primærnøkkel i samme relasjon Datamodellering og databaserElse Lervik
CREATE TABLE student( studnr INTEGER, fornavn VARCHAR(30) NOT NULL, ettenavn VARCHAR(30) NOT NULL, adresse VARCHAR(30) NOT NULL, postnr SMALLINT NOT NULL, CONSTRAINT student_pk PRIMARY KEY(studnr)); CREATE TABLE poststed( postnr SMALLINT, sted VARCHAR(20) NOT NULL, CONSTRAINT poststed_pk PRIMARY KEY(postnr)); CREATE TABLE ansatt( idnr INTEGER, fornavn VARCHAR(30) NOT NULL, ettenavn VARCHAR(30) NOT NULL, leder INTEGER, CONSTRAINT ansatt_pk PRIMARY KEY(idnr)); CREATE TABLE fag( fagkode CHAR(6), fagnavn VARCHAR(30) NOT NULL, CONSTRAINT fag_pk PRIMARY KEY(fagkode)); CREATE TABLE studerer( studnr INTEGER, fagkode CHAR(6), karakter CHAR(1), CONSTRAINT studerer_pk PRIMARY KEY(studnr, fagkode)); ALTER TABLE student ADD CONSTRAINT student_fk1 FOREIGN KEY (postnr) REFERENCES poststed; ALTER TABLE studerer ADD CONSTRAINT studerer_fk1 FOREIGN KEY (studnr) REFERENCES student; ALTER TABLE studerer ADD CONSTRAINT studerer_fk2 FOREIGN KEY (fagkode) REFERENCES fag; ALTER TABLE ansatt ADD CONSTRAINT ansatt_fk1 FOREIGN KEY (leder) REFERENCES ansatt; Å definere integritetsregler i SQL Prøv enkle SQL-setninger, også for å teste integritetsreglene Datamodellering og databaserElse Lervik
Autogenererte løpenummer som primærnøkkel • Oracle-syntaks: CREATE SEQUENCE person_sekvens; CREATE TABLE person( pnr INTEGER NOT NULL, andre attributter .... INSERT INTO person VALUES( person_sekvens.NEXTVAL, ... andre data ...); • Java DB CREATE TABLE bok( bok_id INTEGER GENERATED ALWAYS AS IDENTITY, andre attributter .... CONSTRAINT bok_pk PRIMARY KEY(bok_id)); INSERT INTO bok VALUES(DEFAULT, ... andre data ...); Drøft fordeler og ulemper med informasjonsbærende nøkler Datamodellering og databaserElse Lervik