Functionele afhankelijkheid in DBMS: wat is, typen en voorbeelden
Wat is functionele afhankelijkheid?
Functionele afhankelijkheid (FD) is een beperking die de relatie van het ene attribuut tot het andere attribuut in een Database Management System (DBMS) bepaalt. Functionele afhankelijkheid helpt de kwaliteit van de gegevens in de database te behouden. Het speelt een cruciale rol bij het vinden van het verschil tussen goed en slecht databaseontwerp.
Een functionele afhankelijkheid wordt aangegeven met een pijl “→”. De functionele afhankelijkheid van X van Y wordt weergegeven door X → Y. Laten we de functionele afhankelijkheid in DBMS met een voorbeeld begrijpen.
Voorbeeld:
Werknemersnummer | Naam werknemer | Salaris | Plaats |
---|---|---|---|
1 | Dana | 50000 | San Francisco |
2 | Francis | 38000 | Londen |
3 | Andrew | 25000 | Tokyo |
Als we in dit voorbeeld de waarde van het werknemersnummer kennen, kunnen we de naam van de werknemer, de stad, het salaris, enz. verkrijgen. Hierdoor kunnen we zeggen dat de stad, de naam van de werknemer en het salaris functioneel afhankelijk zijn van het werknemersnummer.
Kernbegrippen
Hier volgen enkele belangrijke termen voor functionele afhankelijkheid in de database:
kernbegrippen | Beschrijving |
---|---|
Axioma | Axioma's zijn een reeks gevolgtrekkingsregels die worden gebruikt om alle functionele afhankelijkheden van een relationele database af te leiden. |
Ontleding | Het is een regel die suggereert dat als u een tabel heeft die twee entiteiten lijkt te bevatten die door dezelfde primaire sleutel worden bepaald, u moet overwegen deze in twee verschillende tabellen op te splitsen. |
Afhankelijk | Het wordt weergegeven op de rechterkant van het functionele afhankelijkheidsdiagram. |
determinant | Het wordt weergegeven aan de linkerkant van het functionele afhankelijkheidsdiagram. |
Unie | Het suggereert dat als twee tabellen gescheiden zijn en de PK hetzelfde is, je zou moeten overwegen om ze te plaatsen. samen |
Regels voor functionele afhankelijkheden
Hieronder staan de drie belangrijkste regels voor functionele afhankelijkheid in de database:
- Reflexieve regel –. Als X een set attributen is en Y is_subset_van X, dan heeft X de waarde Y.
- Augmentatieregel: Als x -> y geldt, en c is een attribuut ingesteld, dan geldt ook ac -> bc. Dat betekent het toevoegen van attributen die de fundamentele afhankelijkheden niet veranderen.
- Transitiviteitsregel: Deze regel lijkt sterk op de transitieve regel in de algebra als x -> y geldt en y -> z geldt, dan geldt x -> z ook. X -> y wordt functioneel genoemd en bepaalt y.
Soorten functionele afhankelijkheden in DBMS
Er zijn hoofdzakelijk vier typen functionele afhankelijkheid in DBMS. Hieronder volgen de typen functionele afhankelijkheden in DBMS:
- Meerwaardige afhankelijkheid
- Triviale functionele afhankelijkheid
- Niet-triviale functionele afhankelijkheid
- Transitieve afhankelijkheid
Meerwaardige afhankelijkheid in DBMS
Multivalued dependency treedt op in de situatie waarin er meerdere onafhankelijke multivalued attributen in één tabel staan. Een multivalued dependency is een complete beperking tussen twee sets attributen in een relatie. Het vereist dat bepaalde tupels aanwezig zijn in een relatie. Bekijk het volgende Multivalued Dependency Example om het te begrijpen.
Voorbeeld:
Auto model | Maf_jaar | Kleur |
---|---|---|
H001 | 2017 | Metalen |
H001 | 2017 | Groen |
H005 | 2018 | Metalen |
H005 | 2018 | Blue |
H010 | 2015 | Metalen |
H033 | 2012 | Gray |
In dit voorbeeld zijn maf_year en color onafhankelijk van elkaar, maar afhankelijk van car_model. In dit voorbeeld wordt gezegd dat deze twee kolommen meerdere waarden hebben, afhankelijk van auto_model.
Deze afhankelijkheid kan als volgt worden weergegeven:
automodel -> maf_jaar
auto_model-> kleur
Triviale functionele afhankelijkheid in DBMS
De triviale afhankelijkheid is een reeks attributen die triviaal worden genoemd als de reeks attributen in dat attribuut is opgenomen.
Dus X -> Y is een triviale functionele afhankelijkheid als Y een subset van X is. Laten we het begrijpen met een triviaal functioneel afhankelijkheidsvoorbeeld.
Bijvoorbeeld:
Emp_id | Werk_naam |
---|---|
AS555 | Harry |
AS811 | George |
AS999 | Kevin |
Beschouw deze tabel met twee kolommen Emp_id en Emp_name.
{Emp_id, Emp_name} -> Emp_id is een triviale functionele afhankelijkheid, aangezien Emp_id een subset is van {Emp_id,Emp_name}.
Niet-triviale functionele afhankelijkheid in DBMS
Functionele afhankelijkheid, ook bekend als een niet-triviale afhankelijkheid, treedt op wanneer A->B waar is en B geen subset van A is. Als attribuut B in een relatie geen subset is van attribuut A, wordt het beschouwd als een niet-triviale afhankelijkheid. afhankelijkheid.
Bedrijf | CEO | Leeftijd |
---|---|---|
Microsoft | Satya Nadella | 51 |
Kopen Google Reviews | Sundar Pichai | 46 |
Appel | Tim Cook | 57 |
Voorbeeld:
(Bedrijf} -> {CEO} (als we het bedrijf kennen, kennen we de naam van de CEO)
Maar de CEO is geen onderdeel van het bedrijf, en daarom is het een niet-triviale functionele afhankelijkheid.
Transitieve afhankelijkheid in DBMS
Een Transitive Dependency is een type functionele afhankelijkheid die optreedt wanneer "t" indirect wordt gevormd door twee functionele afhankelijkheden. Laten we het begrijpen met het volgende Transitive Dependency Example.
Voorbeeld:
Bedrijf | CEO | Leeftijd |
---|---|---|
Microsoft | Satya Nadella | 51 |
Kopen Google Reviews | Sundar Pichai | 46 |
Alibaba | Jack Ma | 54 |
{Bedrijf} -> {CEO} (als we het bedrijf kennen, kennen we de naam van de CEO)
{CEO } -> {Leeftijd} Als we de CEO kennen, kennen we de leeftijd
Daarom volgens de regel van transitieve afhankelijkheid:
{Bedrijf} -> {Leeftijd} zou moeten gelden, dat is logisch, want als we de bedrijfsnaam kennen, kunnen we ook zijn leeftijd weten.
Opmerking: u moet niet vergeten dat transitieve afhankelijkheid alleen kan voorkomen in een relatie van drie of meer attributen.
Wat is normalisatie?
Normalisatie is een methode voor het organiseren van de gegevens in de database, waarmee u gegevensredundantie, invoeg-, update- en verwijderingsafwijkingen kunt voorkomen. Het is een proces waarbij de relatieschema's worden geanalyseerd op basis van hun verschillende functionele afhankelijkheden en primaire sleutel.
Normalisatie is inherent aan de relationele databasetheorie. Het kan tot gevolg hebben dat dezelfde gegevens in de database worden gedupliceerd, wat kan resulteren in het maken van extra tabellen.
Voordelen van functionele afhankelijkheid
- Functionele afhankelijkheid vermijdt gegevensredundantie. Daarom worden dezelfde gegevens niet op meerdere locaties herhaald databank
- Het helpt u de kwaliteit van de gegevens in de database te behouden
- Het helpt u bij het definiëren van betekenissen en beperkingen van databases
- Het helpt je slechte ontwerpen te identificeren
- Het helpt u de feiten over het databaseontwerp te vinden
Samenvatting
- Er is sprake van functionele afhankelijkheid wanneer één attribuut een ander attribuut in a bepaalt DBMS-systeem.
- Axioma, Decomposition, Dependent, Determinant, Union zijn sleutelbegrippen voor functionele afhankelijkheid
- Vier soorten functionele afhankelijkheid zijn 1) Meerwaardig 2) Triviaal 3) Niet-triviaal 4) Transitief
- Meerwaardige afhankelijkheid doet zich voor in de situatie waarin er meerdere onafhankelijke meerwaardige attributen in één tabel voorkomen
- De triviale afhankelijkheid treedt op wanneer een reeks attributen die triviaal worden genoemd als de reeks attributen in dat attribuut is opgenomen
- Niet-triviale afhankelijkheid treedt op wanneer A->B waar is en B geen deelverzameling van A is
- Een transitieve is een soort functionele afhankelijkheid die optreedt wanneer deze indirect wordt gevormd door twee functionele afhankelijkheden
- Normalisatie is een methode om de gegevens in de database te ordenen, waardoor u gegevensredundantie kunt voorkomen