1 / 15

Relationsdatabaser og SQL

B e n t M ø l l e r M a d s e n. Relationsdatabaser og SQL. Del 4 af 4: Normalisering og dataintegritet Aalborg Universitet, d. 6. september 2006. Normalisering. Optimering af et databasedesign Undgå redundans Medfører opdeling til flere tabeller

niabi
Download Presentation

Relationsdatabaser og SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BentMøllerMadsen Relationsdatabaser og SQL Del 4 af 4: Normalisering og dataintegritet Aalborg Universitet, d. 6. september 2006

  2. Normalisering • Optimering af et databasedesign • Undgå redundans • Medfører opdeling til flere tabeller • Disse skal kunne samles (joines) igen uden datatab • 6 normalformer • 1., 2., 3., Boyce-Codd, 4. og 5. normalform • Mest almindelige er 1. til 3. normalform + evt. Boyce Codd normalformen (BCNF)

  3. Første Normalform (1NF) • Mindstekrav til en relationel database • Krav til tabeller på 1NF: • For hver række gælder det, at kun én værdi må indtastes i hver kolonne. • Der må ikke forekomme repeterende grupper • Der skal eksistere en primærnøgle

  4. 1. normalform - et eksempel

  5. Anden normalform (2NF) • Krav til en tabel på 2NF: • Tabellen skal være på 1NF • Alle ikke-nøgle attributter skal være fuldt funktionelt afhængige af primærnøglen • Dvs. at ikke-nøgle attributter ikke må være afhængige af en delmængde af primærnøglen. • Kun relevant, hvis primærnøglen består af 2 eller flere kolonner

  6. 2. normalform - et eksempel

  7. Tredje normalform (3NF) • Krav til en tabel på 3NF: • Tabellen skal være på 2NF • Ingen ikke-nøgle attributter er transitivt afhængige af primærnøglen • Dvs. at attributterne kun må være afhængig af primærnøglen og ikke andre, heller ikke en kombination af andre attributter • Transitiv afhængighed • A  B og B  C  A  C

  8. 3. normalform - et eksempel

  9. Boyce-Codd normalform (BCNF) • Krav til en tabel på BCNF: • Alle determinanter skal være kandidatnøgler • En determinant er en eller flere attributter, der bestemmer (determinerer) andre attributters værdi • En kandidatnøgle er en potentiel primærnøgle • Eller på dansk: En tabel er på BCNF, når alle felter eller sammensatte felter, der kan bruges som nøgle for en del af tabellen, også kan bruges som primærnøgle for hele tabellen. • BCNF er et alternativ til 1.-3. normalform + at den opfanger et specialtilfælde der ikke dækkes af 1.-3. normalform

  10. Normalisering - opsamling • Normaliser til 3. normalform eller BCNF • Brug sund fornuft • Overvejelser i forbindelse med undtagelser for normalisering og denormalisering • Konsekvenser for performance • Konsekvenser for integritet

  11. Integritet • Fjerne fejl i databasen • Sikre at der er sammenhæng i databasen, og at denne opretholdes og fungerer • Sikre at data bliver indtastet det rigtige sted • Sikre overensstemmelse mellem virkeligheden og informationer i databasen

  12. Typer af integritet • Entitetsintegritet: • Alle rækker i en tabel skal være identificerbare • Referentiel integritet • Integriteten mellem tabeller • Semantisk integritet: • Betydning af data

  13. Sikring af integritet • Entitetsintegritet: • Primærnøgle • Referentiel integritet: • Fremmednøgler • Semantisk integritet: • Datatyper • Not Null • Unikke nøgler • Check betingelser

  14. Sikring af integritet - eksempel CREATE TABLE medarbejdere (id NUMBER(4) PRIMARY KEY , navn VARCHAR2(50) NOT NULL, loen NUMBER(7,2) NOT NULL, koen CHAR(1), afd_id NUMBER(3), CONSTRAINT med_afd_fk FOREIGN KEY (afd_id) REFERENCES afdelinger (id) ON DELETE CASCADE, CONSTRAINT min_loen CHECK (loen >= 15000), CONSTRAINT koen_cc CHECK (koen IN (’m’,’k’));

  15. ?

More Related