Une table sans clé primaire est-elle normalisée?

9

Lors d'une conférence, mon conférencier nous a montré une table sans clé primaire. Après avoir posé des questions, il a dit que dans 3NF lorsque vous supprimez les dépendances transitives, il est acceptable d'avoir ensuite une table sans clé primaire.

Cependant, aucune clé primaire n'implique qu'il n'y a pas de dépendances fonctionnelles - mais 3NF est la suppression des dépendances transitives, et on m'a appris que chaque table doit avoir une clé primaire pour la normalisation car il s'agit de dépendances fonctionnelles.

Je sais qu'il est tout à fait possible de créer une table sans clé primaire, mais cette base de données est-elle considérée comme normalisée si cette table existe?

Je dois ajouter que la table n'a pas de «clé unique», pas de primaire, pas de composite, pas d'étranger.

Le tableau présenté comporte trois attributs dont aucun n'est étiqueté comme principal ou unique. J'ai demandé si c'était une erreur et il a dit que c'était bien de ne pas en avoir. J'ai remis en question la remarque car aucune des informations dans le tableau ne peut être identifiée de manière unique et il a affirmé que c'était bien d'être comme ça. Cela va à l'encontre de ce qu'on m'a appris sur la normalisation.

Alex
la source

Réponses:

15

Si une relation n'a pas de clé candidate (et que la clé primaire n'est qu'une des clés candidates), alors elle peut avoir des lignes en double, donc en fait ce n'est pas une relation! (puisque les relations sont toujours des ensembles).

Dans ce cas, il est plus correct de l'appeler une table, pas une relation, comme vous l'avez fait dans votre question, et notez que plusieurs SGBDR peuvent en effet gérer les non-relations, permettant des tables sans aucune contrainte d'unicité, même si ce cas est très rare et génère des problèmes (anomalies) lors de l'utilisation des données.

Mais dans ce cas, parler de formes normales n'est pas approprié: toute la théorie de la normalisation est basée sur l'hypothèse fondamentale que les objets d'intérêt sont des relations , pas des multi-ensembles. En fait, cette théorie est basée sur l'hypothèse de relation universelle (quelque peu discutée), qui suppose que toutes les relations d'une base de données sont un sous-ensemble d'une projection d'une telle relation, qui contient tous les attributs de chaque relation. Et cet objet est en fait une relation (c'est-à-dire un ensemble), pas un multiset.

Le fait que, lorsque nous parlons de données du modèle de données relationnelles, nous échangeons parfois les deux termes, tables et relations, ne signifie pas qu'ils sont en fait synonymes, et cette différence est fondamentale lorsque nous parlons de théorie de la normalisation. N'oubliez pas que dans les livres, lorsqu'une forme normale est introduite, il est toujours dit quelque chose comme:

Une relation est sous forme normale xxx si ...

Renzo
la source
Un multiset n'est-il pas isomorphe à un ensemble où vous ajoutez un countattribut supplémentaire aux éléments?
Barmar
3
@Barmar oui, mais ensuite vous ajoutez une clé candidate et toutes les dépendances fonctionnelles pertinentes, donc du point de vue de la théorie de la normalisation, vous êtes dans un cas complètement différent.
Renzo
1
Lorsque les gens effectuent des opérations relationnelles sur des tables non relationnelles, ils s'attendent à des résultats relationnels. Quand ils ne les reçoivent pas, ceux-ci semblent anormaux.
Walter Mitty
0

3NF fait référence à un tableau conforme aux 3 premières règles de normalisation des données.

  1. Élimination des groupes répétitifs
  2. Élimination des données redondantes
  3. Élimination des colonnes ne dépendant pas de la clé

La troisième règle nécessite une clé. Vous avez raison, la table du conférencier n'était pas 3NF.

Métaphore
la source