gedeeltelijke afhankelijkheid (databases)

Ik heb een definitie gefabriceerd dat een gedeeltelijke afhankelijkheid is wanneer velden indirect afhankelijk zijn van de primaire sleutel of gedeeltelijk afhankelijk, maar ook afhankelijk zijn van andere sleutels die afhankelijk zijn van het primaire zodanig dat als het veld waarvan een ander veld afhankelijk is, dan dat is verwijderd veld zal nog steeds bestaan ​​vanwege de afhankelijkheid van de primaire sleutel. Ik weet niet zeker of het correct is. Ik heb onderzocht en elke definitie klinkt misleidend. Is mijn definitie correct en zo niet wat is?


Antwoord 1, Autoriteit 100%

Een FD (functionele afhankelijkheid) die in een relatie vasthoudt, is gedeeltelijk bij het verwijderen van een van de bepalende kenmerken een FD die in de relatie houdt. Een FD die niet gedeeltelijk is vol.

EG: Stel dat {A, B} → {c} maar ook {a} → {c}. Dan is {A, B} → {C} gedeeltelijk; {C} is gedeeltelijk functioneel afhankelijk van {A, B}; {C} is functioneel afhankelijk van een deel van {A, B} die niet alles is. De consequente gedeeltelijke FD is niet {a} → {c}. Of dat gedeeltelijk is, is afhankelijk van (per de definitie van gedeeltelijke FD) of een subset van {A} bepaalt {C}; Of {} → {c}.

bijvoorbeeld: hier is een relatie waarde waar die voorbeeldconditie vasthoudt. (Een FD geldt in een relatie variabele wanneer het in elke waarde is die kan ontstaan.)

A  B  C
1  1  1
1  2  1
2  1  1

De niet-triviale FDS die vasthouden: {A, B} bepaalt {C}, {B, C}, {A, C} & amp; {ABC}; {A}, {B} & amp; {} Bepaal ook {C}. Hiervan: {A, B} → {C} is gedeeltelijk per {A} → {C}, {B} → {C} & amp; {} → {c}; {A} → {c} & amp; {B} → {C} zijn gedeeltelijk per {} → {c}; de anderen zijn vol.

Een functionele afhankelijkheid X → Y is een volledige functionele afhankelijkheid als het verwijderen van een attribuut A uit X betekent dat de afhankelijkheid niet meer geldt; dat wil zeggen, voor elk attribuut A X, (X – {A}) bepaalt niet functioneel Y. Een functionele afhankelijkheid X → Y is een gedeeltelijke afhankelijkheid als een attribuut A ε X kan worden verwijderd uit X en de afhankelijkheid blijft bestaan; dat wil zeggen, voor sommige A ε X, (X – {A}) → Y.

— Grondbeginselen van databasesystemen 6e editie, Ramez Elmasri & Navathe

Merk op dat of een FD vol of gedeeltelijk is, niet afhangt van CK’s (kandidaatsleutels), laat staan één CK die u de PK (primaire sleutel) zou kunnen noemen.

(Een definitie van 2NF is dat elk niet-CK-attribuut volledig functioneel wordt bepaald door elke CK. Merk op dat de enige CK {A,B} is en dat het enige niet-CK-attribuut C er gedeeltelijk van afhankelijk is, dus dit waarde is niet in 2NF & het is inderdaad de verliesvrije samenvoeging van componenten/projecties op {A,B} & {A,C}, op {A,B} & {B,C} & op {A, B} & {C}.)

(Pas op dat de definitie van “transitief FD” in dat leerboek niethetzelfde definieert als de standaarddefinitie van “transitief FD”.)


Antwoord 2, autoriteit 44%

Gedeeltelijke afhankelijkheidbetekent dat een niet-prime-attribuut functioneel afhankelijk is van een deelvan een kandidaatsleutel. (Een nonprime-attribuut is een attribuut dat geen deel uitmaakt van eenkandidaatsleutel.)

Laten we bijvoorbeeld beginnen met R{ABCD} en de functionele afhankelijkheden AB->CD en A->C.

De enige kandidaatsleutel voor R is AB. C en D zijn een niet-prime-attribuut. C is functioneel afhankelijk van A. A is deelvan een kandidaatsleutel. Dat iseen gedeeltelijke afhankelijkheid.


Antwoord 3, autoriteit 12%

Gedeeltelijke afhankelijkheidimpliceert een situatie waarin een niet-prime-attribuut (een attribuut dat geen deel uitmaakt van de determinant(primaire sleutel/kandidaat-sleutel)) functioneel afhankelijkvan een deel/deel van een primaire sleutel/kandidaatsleutel.


Antwoord 4, autoriteit 12%

Gedeeltelijke afhankelijkheidis een soort functionele afhankelijkheid die optreedt wanneer de primaire sleutel een kandidaat-sleutel moet zijn en het niet-prime-attribuut afhankelijk is van de subset/het deel van de kandidaat-sleutel (meer dan één primaire sleutel).

Probeer de gedeeltelijke afhankelijkheid te begrijpen aan de hand van een voorbeeld:

Verkoper(Id, Product, Prijs)

Kandidaatsleutel:Id, Product
Niet-primair kenmerk:Prijs

Prijskenmerk hangt alleen af van alleen Productkenmerkdat een subset is van kandidaatsleutel, Niet de hele kandidaatsleutel (Id, Product) sleutel. Het wordt gedeeltelijke afhankelijkheid genoemd.

We kunnen dus zeggen dat Product->Prijsgedeeltelijke afhankelijkheid is.


Antwoord 5, autoriteit 6%

Gedeeltelijke functionele afhankelijkheidkomt alleen voor bij samengestelde sleutels. Gedeeltelijke functionele afhankelijkheid treedt op wanneer een of meer niet-sleutelattributen afhankelijk zijn van een deel van de primaire sleutel.

Voorbeeld:

Tabel:
Stud_id, Course_id, Stud_name, Course_Name

Waar:
Primaire sleutel = Stud_id + Course_id

Dan:
Om de naam van de student te bepalen, gebruiken we alleen Stud_id, dat deel uitmaakt van de primaire sleutel.

{Stud_id} -> {Stud_Name}

Daarom is Stud_name gedeeltelijk afhankelijk van Stud_id. Dit wordt gedeeltelijke afhankelijkheid genoemd.


Antwoord 6, autoriteit 6%

Ik hoop dat deze uitleg een meer intuïtief beroep doet op afhankelijkheid dan de eerder gegeven antwoorden.

Functionele afhankelijkheid

Een analyse van afhankelijkheid werkt op attribuutniveau, d.w.z. een of meer attributen worden bepaald door een ander attribuut, het komt vóór het concept van sleutels. ‘De rol van een sleutel is gebaseerd op het begrip vastberadenheid. ‘Bepaling is de staat’
waarin het kennen van de waarde van één attribuut het mogelijk maakt om de waarde te bepalen
van een andere.’ Databasesystemen 12ed

Functionele afhankelijkheid is wanneer een of meer attributen een of meer attributen bepalen. Bijvoorbeeld:

BSN -> Voornaam, achternaam.

Echter, per definitie van functionele afhankelijkheid:

(SSN, Voornaam) -> Achternaam

Dit is ook een geldige functionele afhankelijkheid. De determinanten(het kenmerk dat een andere attributie bepaalt) worden supersleutelgenoemd.

Volledige functionele afhankelijkheid

Dus als een subset van functionele afhankelijkheid is er het concept van volledige functionele afhankelijkheid, waarbij de absolute minimale determinant wordt beschouwd. We verwijzen naar die absolute minimale determinanten als één kandidaatsleutel(rare taalkundige gril naar mijn mening, zoals het concept van vector).

Gedeeltelijke functionele afhankelijkheid

Soms is echter één van de attributen in de kandidaatsleutel voldoende om een of meer andere attributen te bepalen, MAAR niet alle, in een relatie (een tabel zonder rijen). Dat is wanneer je een gedeeltelijke functionele afhankelijkheid hebt binnen een relatie.


Antwoord 7, autoriteit 3%

Gedeeltelijke afhankelijkheid is opgelost voor het bereiken van een relatie in 2NF, maar 2NF is een “opstapje” (C. Date) voor het oplossen van een transitieve afhankelijkheid en het bereiken van een relatie in 3NF (wat het operationele doel is).
Het meest interessante aan gedeeltelijke afhankelijkheid is echter dat het een specifiek geval is van de eigen transitieve afhankelijkheid. Dit werd aangetoond door P.A. Berstein in 1976: IF {(x•y)→z maar y→z} THEN {(x•y)→y & y→z}. Het 3NF-synthesizer-algoritme van Berstein hoeft geen onderscheid te maken tussen deze twee soorten relationele defecten.


Antwoord 8

Als er een relatie R(ABC) is

-----------
|A | B | C |
-----------
|a | 1 | x |
|b | 1 | x |
|c | 1 | x |
|d | 2 | y |
|e | 2 | y |
|f | 3 | z |
|g | 3 | z |
 ----------
Given,
F1: A --> B 
F2: B --> C

De primaire sleutel en kandidaatsleutel is: A

Als de sluiting van A+ = {ABC} of R — Dus alleen attribuut A is voldoende om Relatie R te vinden.

DEF-1:van enkele definities (onbekende bron) – Een gedeeltelijke afhankelijkheid is een afhankelijkheid wanneer een prime-attribuut (dwz een attribuut dat een onderdeel (of een juiste subset) is van de kandidaatsleutel) bepaalt niet-prime-attribuut (dwz een attribuut dat niet het deel (of subset) is van de kandidaatsleutel).

Daarom is A een prime(P)-attribuut en B, C zijn niet-prime(NP)-attributen.

Dus, uit het bovenstaande DEF-1,

OVERWEGING-1:: F1: A –> B (P bepaalt NP) — Het moet gedeeltelijke afhankelijkheid zijn.

OVERWEGING-2:: F2: B –> C (NP bepaalt NP) — Transitieve afhankelijkheid.

Wat ik begreep uit het antwoord van @philipxy (https://stackoverflow.com/a/25827210/6009502) is …

OVERWEGING-1:: F1: A –> B; Zou volledig functionele afhankelijkheid moeten zijn omdat B volledig afhankelijk is van A en als we A verwijderen, is er geen goede subset van (voor volledige verduidelijking, beschouw L.H.S. als X NIET DOOR ENKEL KENMERK) die B zou kunnen bepalen.

Bijvoorbeeld: als ik F1 beschouw: X –> Y waarbij X = {A} en Y = {B}, als we A uit X verwijderen; d.w.z. X – {A} = {}; en een lege verzameling wordt in het algemeen niet (of helemaal niet) beschouwd om functionele afhankelijkheid te definiëren. Er is dus geen goede subset van X die de afhankelijkheid F1 kan bevatten: X –> J; Daarom is het een volledig functionele afhankelijkheid.

F1: Een –> B
Als we A verwijderen, is er geen attribuut dat functionele afhankelijkheid F1 kan bevatten. Daarom is F1 een volledig functionele afhankelijkheid en geen gedeeltelijke afhankelijkheid.

If F1 were, F1: AC --> B;
and F2 were, F2: C --> B; 
then on the removal of A;
C --> B that means B is still dependent on C; 
we can say F1 is partial dependecy.

Dus, @philipxy antwoord is in tegenspraak met DEF-1 en CONSIDERATION-1, dat is waaren glashelder.

Vandaar, F1: A –> B is volledig functionele afhankelijkheid, geen gedeeltelijke afhankelijkheid.

Ik heb overwogen dat X de linkerkant van functionele afhankelijkheid laat zien, omdat een enkel attribuut geen juiste subset van attributen kan hebben. Hier beschouw ik X als een set attributen en in het huidige scenario is X {A}

— Voor de bron van DEF-1, zoek op google, u kunt vergelijkbare definities vinden. (Bedenk dat DEF-1 onjuist is of niet werkt in het bovengenoemde voorbeeld).


Antwoord 9

  • overweeg een tabel={cid,sid,location}
  • kandidaatsleutel: cidsid (unieke identificatie van de rij)
  • prime-attributen: cid en sid (attributen die worden gebruikt bij het maken van de kandidaat-sleutel)
  • niet-prime-attribuut: locatie(attribuut anders dan kandidaatsleutel)

als kandidaatsleutel niet-prime-attribuut bepaalt:

i.e cidsid--->location (---->=determining) 
   then, it is fully functional dependent

Als de juiste subset van kandidaat-sleutel het bepalen van niet-topattribuut:

i.e sid--->location (proper subset are sid and cid)
         then it is term as partial dependency

Om gedeeltelijke afhankelijkheid te verwijderen, verdelen we de tabel dienovereenkomstig.

Other episodes