Functionele afhankelijkheid in DBMS: typen met voorbeelden
โก Slimme samenvatting
Functionele afhankelijkheid is een beperking die bepaalt hoe het ene attribuut zich verhoudt tot het andere in een databasebeheersysteem (DBMS). Het vormt de basis voor normalisatie door bepalende factoren en afhankelijkheden te identificeren en wordt geclassificeerd in meerwaardige, triviale, niet-triviale en transitieve afhankelijkheden.

Wat is functionele afhankelijkheid?
Functionele afhankelijkheid (FD) Functionele afhankelijkheid is een beperking die de relatie tussen twee attributen in een databasemanagementsysteem (DBMS) bepaalt. Het helpt de kwaliteit van de gegevens in de database te waarborgen en speelt een cruciale rol bij het onderscheiden van een goed en een slecht databaseontwerp.
Een functionele afhankelijkheid wordt aangegeven met een pijl โโโ. De functionele afhankelijkheid van Y van X wordt weergegeven door X โ Y. Laten we functionele afhankelijkheid begrijpen aan de hand van een voorbeeld.
Voorbeeld:
| Werknemersnummer | Naam werknemer | Salaris | Plaats |
|---|---|---|---|
| 1 | Dana | 50000 | San Francisco |
| 2 | Francis | 38000 | Londen |
| 3 | Andrew | 25000 | Tokyo |
In dit voorbeeld kunnen we, als we het werknemersnummer kennen, de naam, de plaats, het salaris, enzovoort van de werknemer achterhalen. Hieruit kunnen we concluderen dat de plaats, de naam en het salaris functioneel afhankelijk zijn van het werknemersnummer.
kernbegrippen
Hieronder volgen enkele belangrijke termen voor functionele afhankelijkheid in een database:
| kernbegrippen | Beschrijving |
|---|---|
| Axiom | Axioma's zijn een reeks inferentieregels die worden gebruikt om alle functionele afhankelijkheden in een relationele database af te leiden. |
| Ontleding | Een regel die suggereert dat als je een tabel hebt die twee entiteiten lijkt te bevatten die worden bepaald door dezelfde primaire sleutel, je zou moeten overwegen om deze op te splitsen in twee afzonderlijke tabellen. |
| Afhankelijk | Het wordt weergegeven aan de rechterkant van het functionele afhankelijkheidsdiagram. |
| determinant | Het wordt aan de linkerkant van het functionele afhankelijkheidsdiagram weergegeven. |
| Unie | Het suggereert dat als twee tabellen gescheiden zijn en de primaire sleutel hetzelfde is, je zou moeten overwegen om ze samen te voegen. |
Regels van functionele afhankelijkheden (Armstrongs axioma's)
Hieronder staan โโde drie belangrijkste regels voor functionele afhankelijkheid in een database. Ze staan โโbekend als de axioma's van Armstrong, en elke andere inferentieregel kan daaruit worden afgeleid.
- Reflexieve regel: Als X een verzameling attributen is en Y een deelverzameling van X, dan geldt X โ Y.
- Uitbreidingsregel: Als X โ Y geldt en C een verzameling attributen is, dan geldt XC โ YC ook. Het toevoegen van attributen verandert de basisafhankelijkheid niet.
- Transitiviteitsregel: Vergelijkbaar met de transitieve regel in de algebra: als X โ Y geldt en Y โ Z geldt, dan geldt X โ Z ook.
Hieruit zijn nog drie regels afgeleid die in de praktijk constant worden toegepast:
- Unieregel: Als X โ Y en X โ Z, dan is X โ YZ.
- Ontledingsregel: Als X โ YZ, dan is X โ Y en X โ Z.
- Pseudo-transitiviteitsregel: Als X โ Y en WY โ Z, dan is WX โ Z.
Door deze regels herhaaldelijk toe te passen op een reeks afhankelijkheden, ontstaat het volgende resultaat. sluitingDe volledige set van afhankelijkheden die daar logischerwijs uit voortvloeien. De afsluiting van een attributenset is ook de manier waarop kandidaatsleutels worden gevonden, wat direct verband houdt met de studie van DBMS-sleutels.
Soorten functionele afhankelijkheden in DBMS
In databasesystemen bestaan โโhoofdzakelijk vier soorten functionele afhankelijkheden:
- Meerwaardige afhankelijkheid
- Triviale functionele afhankelijkheid
- Niet-triviale functionele afhankelijkheid
- Transitieve afhankelijkheid
Meerwaardige afhankelijkheid in DBMS
Een meerwaardige afhankelijkheid treedt op wanneer er meerdere onafhankelijke meerwaardige attributen in รฉรฉn tabel voorkomen. Een meerwaardige afhankelijkheid is een volledige beperking tussen twee sets attributen in een relatie, die vereist dat bepaalde tuples aanwezig zijn. Neem het volgende voorbeeld.
Voorbeeld:
| Auto model | Maf_jaar | Kleur |
|---|---|---|
| H001 | 2017 | Metalen |
| H001 | 2017 | Groen |
| H005 | 2018 | Metalen |
| H005 | 2018 | Blauw |
| H010 | 2015 | Metalen |
| H033 | 2012 | Gray |
In dit voorbeeld zijn Maf_year en Color onafhankelijk van elkaar, maar afhankelijk van Car_model. Deze twee kolommen worden multivalue-afhankelijk van Car_model genoemd. Dit wordt als volgt weergegeven:
auto_model โ maf_jaar
auto_model โ kleur
Triviale functionele afhankelijkheid in DBMS
Een triviale afhankelijkheid is een verzameling attributen die triviaal wordt genoemd als de verzameling attributen in dat attribuut is opgenomen. Dus, X โ Y is een triviale functionele afhankelijkheid als Y een subset van X is. Beschouw het onderstaande voorbeeld.
| 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
Een niet-triviale afhankelijkheid treedt op wanneer A โ B waar is en B geen deelverzameling van A is. Als attribuut B geen deelverzameling is van attribuut A, wordt de afhankelijkheid als niet-triviaal beschouwd.
| Over ons | CEO | Leeftijd |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| 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 subset van het bedrijf, en daarom is er sprake van een niet-triviale functionele afhankelijkheid.
Transitieve afhankelijkheid in DBMS
Een transitieve afhankelijkheid is een type functionele afhankelijkheid dat optreedt wanneer een eigenschap indirect wordt bepaald door twee functionele afhankelijkheden. Neem het onderstaande voorbeeld.
| Over ons | CEO | Leeftijd |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| 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).
Volgens de regel van transitieve afhankelijkheid zou daarom {Bedrijf} โ {Leeftijd} moeten gelden, wat logisch is, want als we de bedrijfsnaam weten, kunnen we de leeftijd achterhalen.
Let op: transitieve afhankelijkheid kan alleen voorkomen in een relatie met drie of meer attributen.
Wat is normalisatie?
Normalisatie is een methode om gegevens in een database te ordenen, waarmee redundantie en fouten bij het invoegen, bijwerken en verwijderen van gegevens worden 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 theorie van relationele databases. Het kan ertoe leiden dat gegevens over meerdere tabellen worden verdeeld, zodat elk gegeven slechts รฉรฉn keer wordt opgeslagen. Het volledige proces wordt beschreven in de handleiding. databasenormalisatie, wat direct voortbouwt op de bovenstaande afhankelijkheidstypen.
Voordelen van functionele afhankelijkheid
- Functionele afhankelijkheid voorkomt redundantie van gegevens, waardoor dezelfde gegevens niet op meerdere plaatsen in het systeem voorkomen. databank.
- Het helpt je de kwaliteit van de gegevens in de database te waarborgen.
- Het helpt je de betekenis en beperkingen van databases te definiรซren.
- Het helpt je slechte ontwerpen te herkennen.
- Het helpt je de feiten over het databaseontwerp te achterhalen.
