🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

01 Functionele Afhankelijkheid - 2021-11-03.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Functionele afhankelijkheid Damien Decorte Functionele afhankelijkheid Overzicht: Functionele Afhankelijkheid (FA) Functionele afhankelijkheid van attributen x --> y Functionele afhankelijkheid van attribuutverzamelingen X --> Y Irr...

Functionele afhankelijkheid Damien Decorte Functionele afhankelijkheid Overzicht: Functionele Afhankelijkheid (FA) Functionele afhankelijkheid van attributen x --> y Functionele afhankelijkheid van attribuutverzamelingen X --> Y Irreducibele nontriviale functionele afhankelijkheid X→Y Het verband tussen FA en UID Meerwaardige Functionele Afhankelijkheid Meerwaardige functionele afhankelijkheid X -->> Y Irreducibele nontriviale meerwaardige functionele afhankelijkheid X →→ Y Functioneel Afhankelijkheidsdiagram Functionele afhankelijkheid van attributen x --> y x --> y : attribuut y is functioneel afhankelijk van attribuut x  elke waarde van x gaat gepaard met slechts één waarde van y  als de waarde van x gekend is, dan is de waarde van y ook gekend  de waarde van x determineert de waarde van y  attribuut x is functioneel determinant van attribuut y Voorbeeld: Datum --> Weekdag (maar bijv. NIET Weekdag --> Datum ) Weekdag (“vrijdag”) is functioneel afhankelijk van Datum (“3/4/2020”) Datum Weekdag Dag Maand Jaar Zonsopkomst In Ukkel 3/4/2020 vrijdag 3 4 2020 07:13 21/6/2020 zondag 21 6 2020 05:29 Functionele afhankelijkheid van attribuutverzamelingen X --> Y X --> Y : attributenverzaming Y is functioneel afhankelijk van attributenverzaming X  elke combinatie van waarden van X gaat gepaard met slechts één combinatie van waarden van Y  als de waarden van X gekend zijn, dan zijn de waarden van Y ook gekend  de waarden van X determineren de waarden van X  attributenverzaming X is functioneel determinant van attributenverzaming Y Voorbeeld: { Dag, Maand, Jaar } --> { Weekdag, Zonsopkomst_In_Ukkel } Weekdag (“vrijdag”) en Zonsopkomst_In_Ukkel (“07:13”) zijn functioneel afhankelijk van de combinatie van Dag (“3”), Maand (“4”) en Jaar (“2020”). Datum Weekdag Dag Maand Jaar Zonsopkomst In Ukkel 3/4/2020 vrijdag 3 4 2020 07:13 21/6/2020 zondag 21 6 2020 05:29 Functionele afhankelijkheid van attribuutverzamelingen X --> Y X --> Y : attributenverzaming Y is functioneel afhankelijk van attributenverzaming X  elke combinatie van waarden van X gaat gepaard met slechts één combinatie van waarden van Y  als de waarden van X gekend zijn, dan zijn de waarden van Y ook gekend  de waarden van X determineren de waarden van X  attributenverzaming X is functioneel determinant van attributenverzaming Y Voorbeeld: { Dag, Maand, Jaar } --> { Weekdag, Zonsopkomst_In_Ukkel } Opm.: We noteren bij voorkeur (equivalente) FA’s met slechts één attribuut aan de rechterkant: { Dag, Maand, Jaar } --> { Weekdag } { Dag, Maand, Jaar } --> { Zonsopkomst_In_Ukkel } Datum Weekdag Dag Maand Jaar Zonsopkomst In Ukkel 3/4/2020 vrijdag 3 4 2020 07:13 21/6/2020 zondag 21 6 2020 05:29 Triviale vs. Nontriviale functionele afhankelijkheid Voorbeelden: { Datum} --> { Datum} is een triviale functionele afhankelijkheid, want Y bevat een attribuut uit X { Datum} --> { Weekdag} is een nontriviale functionele afhankelijkheid, want Y bevat geen attribuut uit X { Datum} --> { Weekdag, Datum} is een triviale functionele afhankelijkheid, want Y bevat een attribuut uit X { Datum, Weekdag} --> { Weekdag} is een triviale functionele afhankelijkheid, want Y bevat een attribuut uit X { Dag, Maand, Jaar} --> { Weekdag} is een nontriviale functionele afhankelijkheid, want Y bevat geen attribuut uit X { Dag, Maand, Jaar} --> { Weekdag, Dag, Jaar} is een triviale functionele afhankelijkheid, want Y bevat een attribuut uit X Y is nontriviaal functioneel afhankelijk van X X is nontriviaal functioneel determinant van Y  Y is functioneel afhankelijk van X ( X --> Y ) EN X en Y hebben geen gemeenschappelijk attribuut We zijn enkel geïnteresseerd in nontriviale functionele afhankelijkheden. Reducibele vs. Irreducibele functionele afhankelijkheid Voorbeelden: { Datum, Dag, Maand, Jaar } --> { Weekdag } is een reducibele functionele afhankelijkheid want je kan bijv. attribuut Datum weglaten uit X zonder dat X --> Y vervalt je kan bijv. ook Dag, Maand en/of Jaar weglaten uit X zonder dat X --> Y vervalt { Dag, Maand, Jaar } --> { Weekdag } is een irreducibele functionele afhankelijkheid want je kan geen attribuut weglaten uit X zonder dat X --> Y vervalt { Datum } --> { Weekdag } is een irreducibele functionele afhankelijkheid want je kan geen attribuut weglaten uit X zonder dat X --> Y vervalt Y is irreducibel functioneel afhankelijk van X X is irreducibel functioneel determinant van Y  Y is functioneel afhankelijk van X ( X --> Y ) EN je kan geen attribuut weglaten uit X zonder dat X --> Y vervalt We zijn enkel geïnteresseerd in irreducibele functionele afhankelijkheden. Irreducibele nontriviale functionele afhankelijkheid X→Y We zijn enkel geïnteresseerd in functionele afhankelijkheden die nontriviaal én irreducibel zijn. Een functionele afhankelijkheid X --> Y die nontriviaal én irreducibel is, noteren we met een ander pijltype: X → Y Gemakshalve, en ietwat slordig, zeggen we vaak kortweg “afhankelijkheid” i.p.v. “irreducibele nontriviale functionele afhankelijkheid”; “determinant” i.p.v. “irreducibele nontriviale functionele determinant”. Het lijdt echter geen twijfel: we bedoelen ALTIJD “irreducibel nontriviaal” erbij, want enkel de irreducibele nontriviale functionele afhankelijkheden interesseren ons. Het verband tussen FA en UID When we consider attributes within an entity: A Candidate UID (logical model) or Candidate Key (physical model) is an attribute / set of attributes that meets the following rules: is irreducibly unique across all instances of the entity. is mandatory (not-NULL) for each instance of the entity. has a value that never changes. Thereby, a Candidate UID or Candidate Key uniquely identifies each instance of the entity. A (set of) attribute(s) is Candidate UID / Candidate Key of an entity if and only if that (set of) attribute(s) is an irreducible determinant of all attributes of that entity. Meerwaardige functionele afhankelijkheid X -->> Y X -->> Y : attributenverzaming Y is meerwaardig functioneel afhankelijk van attributenverzaming X  elke combinatie van waarden van X gaat gepaard met slechts één verzameling van combinaties van waarden van Y  als de waarden van X gekend zijn, dan zijn de verzameling van waarden van Y ook gekend  de waarden van X determineren de verzameling van waarden van X Voorbeeld: { Dag, Maand } -->> { Internationale_Dag_Van } elke combinatie van waarden voor Dag (“21”) en Maand (“6”) determineert een verzameling van waarden voor Internationale_Dag_Van ( {“internationale dag van de yoga”, “internationale dag van de zonnewende”} ). Datum Weekdag Dag Maand Jaar Zonsopkomst In Ukkel Internationale Dag Van 3/4/2020 vrijdag 3 4 2020 07:13 / 21/6/2020 zondag 21 6 2020 05:29 internationale dag van de yoga internationale dag van de zonnewende Irreducibele nontriviale meerwaardige FA X →→ Y X →→ Y Y is irreducibel nontriviaal meerwaardig functioneel afhankelijk van X  Y is meerwaardig functioneel afhankelijk van X ( X -->> Y ) EN je kan geen attribuut weglaten uit X zonder dat X -->> Y vervalt EN X en Y hebben geen gemeenschappelijk attribuut Een meerwaardige functionele afhankelijkheid X -->> Y die nontriviaal én irreducibel is, noteren we met een ander pijltype: X →→ Y Voorbeeld: { Dag, Maand } →→ { Internationale_Dag_Van } Doordat we enkel geïnteresseerd zijn in meerwaardige FA’n die nontriviaal én irreducibel zijn, zullen we ook hierbij vaak gemakshalve, en ietwat slordig, “meerwaardige afhankelijkheid” zeggen i.p.v. “irreducibele nontriviale meerwaardige functionele afhankelijkheid”; Functioneel afhankelijkheidsdiagram Datum Weekdag Dag Maand Jaar Zonsopkomst In Ukkel Internationale Dag Van 3/4/2020 vrijdag 3 4 2020 07:13 / 21/6/2020 zondag 21 6 2020 05:29 internationale dag van de yoga internationale dag van de zonnewende { Datum } → { Dag, Maand, Jaar, Weekdag, Zonsopkomst_In_Ukkel } { Datum} →→ { Internationale_Dag_Van } { Dag, Maand, Jaar } → { Datum, Weekdag, Zonsopkomst_In_Ukkel } { Dag, Maand } →→ { Internationale_Dag_Van } Voorbeeld: een inventaris van schilderijen met bijhorende FA’n S_ID Titel Periode Naam Geboren Gestorven FA’n volgens de domeinexpert: S01 Vissershuis 1882 Monet 1840 1926 {S_ID} → {Titel} S02 De balletles 1872 Degas 1834 1917 {S_ID} → {Periode} S03 Mona Lisa 1499 Da Vinci 1452 1519 {S_ID} → {Naam} S05 Na het bad 1883 Degas 1834 1917 {S_ID} → {Geboren} {S_ID} → {Gestorven} {Titel, Naam} → {S_ID} {Titel, Naam} → {Periode} Teken het functioneel afhankelijkheidsdiagram {Naam} → {Geboren} {Naam} → {Gestorven} Voorbeeld: een inventaris van schilderijen met bijhorende FA’n S_ID Titel Periode Naam Geboren Gestorven FA’n volgens de domeinexpert: S01 Vissershuis 1882 Monet 1840 1926 {S_ID} → {Titel} S02 De balletles 1872 Degas 1834 1917 {S_ID} → {Periode} S03 Mona Lisa 1499 Da Vinci 1452 1519 {S_ID} → {Naam} S05 Na het bad 1883 Degas 1834 1917 {S_ID} → {Geboren} {S_ID} → {Gestorven} {Titel, Naam} → {S_ID} {Titel, Naam} → {Periode} {Naam} → {Geboren} {Naam} → {Gestorven} Oefening 1: Functionele afhankelijkheden en functioneel afhankelijkheidsdiagram Studentnr. Naam Vakcode Vak Punten 203591 John Doe B008 Databanken 16 206584 Jane Doe C010 Communicatie 14 210779 Alice Foo A007 Analyse 15 195520 Bob Bar A007 Analyse 12 195520 Bob Bar C010 Communicatie 14 206584 Jane Doe B008 Databanken 16 200154 Alice Foo B008 Databanken 18 200154 Alice Foo C010 Communicatie 15 Welke FA’n zijn hier mogelijk van toepassing? (om voor te leggen aan de domeinexpert) Stel die voor in een FA-diagram. Oefening 2: Kan je FA’n afleiden louter uit data? Welke van de volgende functionele afhankelijkheden kunnen er gelden voor de onderliggende relatie? Bij de afhankelijkheden die niet kunnen geldig zijn, verklaar waarom. {A} → {B}, {B} → {A} {A} → {C}, {C} → {A} {B} → {C}, {C} → {B}

Use Quizgecko on...
Browser
Browser