2014-09-09 4 views
9

J'ai besoin d'une fermeture à ce sujet. J'ai fabriqué une définition de dépendance partielle lorsque les champs dépendent indirectement de la clé primaire ou partiellement dépendante mais dépendent également d'autres clés qui dépendent du primaire de sorte que si le champ dont un autre champ dépend de l'id supprimé en raison de sa dépendance à la clé primaire. Je ne suis pas sûr que ce soit correct. J'ai fait des recherches et chaque définition semble trompeuse. Est-ce que ma définition est correcte et si non, s'il vous plaît expliquer?Dépendance partielle (bases de données)

Répondre

20

Une dépendance fonctionnelle qui tient dans une relation est partielle lorsque la suppression de l'un des attributs déterminants donne une dépendance fonctionnelle qui se maintient dans la relation. Par exemple si {A, B} → {C} mais aussi {A} → {C} alors {C} dépend partiellement de {A, B}.

une dépendance fonctionnelle X → Y est une dépendance fonctionnelle complète si enlèvement de tout attribut A de X signifie que la dépendance ne pas tenir plus; autrement dit, pour tout attribut A ε X, (X - {A}) ne détermine pas fonctionnellement Y. Une dépendance fonctionnelle X → Y est une dépendance partielle si un attribut A ε X peut être retiré de X et la dépendance tient toujours; qui est, pour certains A 'X, (X - {A}) → Y.

- FONDAMENTAUX DE Database Systems sixième édition Ramez Elmasri & Navathe

(La définition de 2FN implique toute dépendance fonctionnelle des dépendances non-clés sur les clés mais toute dépendance fonctionnelle qui les contient est complète ou partielle.)

+1

Est-ce qu'une dépendance partielle se produit uniquement lorsqu'il existe une clé primaire composite? Systèmes de base de données: conception, implémentation et gestion Par Carlos Coronel, Steven Morris indique que la conversion en 2NF se produit uniquement lorsque le 1NF a une clé primaire composite. Si le 1NF a une clé primaire singletribute, la table est automatiquement en 2NF. Je suis tellement confus dans cela aussi, s'il vous plaît aider – viper

+0

(Vous devriez vraiment poser cette question comme une question.) Non. Il peut y avoir des dépendances partielles n'impliquant pas CKs (clés candidates). Par exemple, il y a des DF partiels pour chaque FD complet dont le côté gauche n'est pas tous les attributs car son côté droit dépend partiellement de chaque surensemble approprié de ce côté gauche. Lisez la dernière phrase de ma réponse. Partial/full est une propriété de FDs. Les FD déterminent collectivement les CK et les NF les plus élevés jusqu'à BCNF. PS: les PK n'ont aucun rôle dans la normalisation. On choisit simplement un CK et l'appelle "le PK". – philipxy

+0

PPS: 2NF n'a pas besoin de FDs partiels d'attributs non-prime sur les CK. Le livre dit que pour les non-2NF il ne peut pas y avoir de FD d'un sous-ensemble propre d'un CK à un attribut.Mais le livre est faux. Ils ont oublié l'ensemble vide comme sous-ensemble propre: On peut avoir un non-2NF avec CK {A} mais un FD partiel de B non-premier quand {} -> B (ie les valeurs B sont les mêmes). Les manuels scolaires et le monde SQL oublient souvent l'ensemble vide des FD. Par exemple [this] (http://stackoverflow.com/a/16617091/3404097) & [this] (http://www.dcs.warwick.ac.uk/~hugh/M359/FD-demystification.html#emptyset) & [this] (http://www.dpxo.net/articles/zerodegree.htm). – philipxy

4

dépendance partielle signifie qu'un attribut est fonctionnellement dépendant horaires secondaires sur partie d'une clé candidate. (Un attribut nonprime est un attribut qui ne fait pas partie de aucune clé candidate.)

Par exemple, commençons par R {ABCD}, et les dépendances fonctionnelles AB-> CD et A-> C.

La seule clé candidate pour R est AB. C et D sont des attributs non-primés. C dépend fonctionnellement de A. A est partie d'une clé candidate. C'est une dépendance partielle.

+0

Chaque FD qui détient est plein ou partiel; les clés n'y entrent pas. – philipxy

+1

C dépend partiellement de AB, c'est-à-dire AB-> C est un FD partiel, car C dépend d'un sous-ensemble AB, A. C dépend entièrement de A, ie A-> C est un FD complet, car C n'est pas fonctionnellement dépendant d'un sous-ensemble propre de A. – philipxy

1

La dépendance partielle est résolue pour arriver à une relation dans 2NF mais 2NF est un "tremplin" (C. Date) pour résoudre toute dépendance transitive et arriver à une relation dans 3NF (qui est la cible opérationnelle). Cependant, la chose la plus intéressante sur la dépendance partielle est qu'il s'agit d'un cas particulier de la dépendance transitive propre. Cela a été démostré par P.A. Berstein en 1976: IF {(x • y) → z mais y → z} THEN {(x • y) → y & y → z}. L'algorithme de synthétiseur 3NF de Berstein n'a pas besoin de faire des distintions parmi ces deux types de défauts relationnels.

2

dépendance partielle implique est une situation dans laquelle un attribut non-prime (un attribut qui ne fait pas partie du déterminant (clé primaire/clé candidate)) est fonctionnellement à une partie/partie d'une clé primaire/clé candidate.

1

La dépendance fonctionnelle partielle se produit uniquement en relation avec les clés composites. La dépendance fonctionnelle partielle se produit lorsqu'un ou plusieurs attributs non clés dépendent d'une partie de la clé primaire.

Exemple:

Tableau: Stud_id, Course_id, Stud_name, COURSE_NAME

Où: clé primaire = Stud_id + Course_id

Puis: Pour déterminer le nom de l'étudiant, nous utilisons seulement Stud_id, qui fait partie de la clé primaire.

{Stud_id} -> {} Stud_Name

Par conséquent, Stud_name dépend en partie de Stud_id. C'est ce qu'on appelle la dépendance partielle.

0

Dépendance partielle est une sorte de dépendance fonctionnelle qui se produisent lorsque la clé primaire doit être attribut clé candidate et non de choix sont dépend du sous-ensemble/partie des candidats clés (plus d'une clé primaire).

Essayez de comprendre la dépendance partielle se rapportent par exemple:

Vendeur (Id, produit, le prix)

Candidat clé: Id, produit
attribut non premier: Prix

L'attribut de prix ne dépend que de l'attribut du produit qui est un sous-ensemble de la clé candidate, Non t l'ensemble de la clé candidate (ID, produit). C'est ce qu'on appelle la dépendance partielle.

On peut donc dire que Product-> Price est une dépendance partielle.