web-dev-qa-db-fra.com

Cartographie A 1: 1: n relation ternaire à un schéma relationnel

J'ai une question sur la cartographie des relations (conceptuelles) n-ary aux relations (logiques).

Supposons que nous avons trois types d'entité solides: membre, équipement et emplacement de temps, et une relation nommée réserves entre elles.

Les attributs n'ont pas d'importance (supposons simplement que nous avons un attribut clé d'identité), mais les ratios de cardinalité sont les suivants:

enter image description here

Ce qui signifie que:

  • Un membre peut réserver un équipement particulier à plusieurs créneaux horaires (le N),
  • Un équipement peut être réservé à un emplacement de temps particulier par un seul membre (le 1 à gauche),
  • Un membre peut réserver un seul équipement par fente horaire (le 1 à droite).

Et il n'y a pas de contrainte de participation totale.

En regardant sur la notation (je crois):

enter image description here

J'essaie de cartographier cette relation avec une relation dans une conception relationnelle. Nous aurions:

RESERVES
(MEMBER.Id, EQUIPMENT.Id, TIME_SLOT.Id)

Où les trois attributs sont des clés étrangères, respectivement, les relations qui correspondent à MEMBER, EQUIPMENT et TIME_SLOT.

Mais que devrait être la clé primaire?

Elmasri, Ramez et Shamkant B. Navathe. 2015. Principes fondamentaux des systèmes de base de données (7ème édition). Pearson. Lit, p. 296:

La clé principale de S [La relation résultant de la cartographie de la relation N-ARY R au modèle relationnel] est généralement une combinaison de toutes les clés étrangères qui font référence aux relations représentant les types d'entité participante. Toutefois, si les contraintes de cardinalité sur l'une des types d'entité, e participant à R est 1, la clé principale de S ne doit pas inclure l'attribut de clé étrangère qui fait référence à la relation E 'correspondant à E (...).

Appliquer cette recette fait aveuglément cela seulement TIME_SLOT.Id est la clé primaire, qui n'a pas de sens du tout (deux équipements différents peuvent être réservés en même temps!).

Avoir les trois attributs étant la clé principale ne reflète pas le fait qu'un équipement ne peut pas être réservé plusieurs fois au même moment.

2
Clément

Une clé candidate d'une relation est un ensemble d'attributs de sorte que chaque tuple (enregistrement) de la relation doit avoir des valeurs différentes de celles de tous les autres tuples.

Une clé principale peut être choisie parmi les différentes clés candidates d'une relation ou peut être une clé de substitution, c'est-à-dire un identifiant artificiel inventé pour distinguer de manière unique tous les enregistrements de la relation.

Sûrement, une clé primaire devrait non Soyez un superbe strict, c'est-à-dire une clé à partir de laquelle nous pouvons supprimer un ou plusieurs attributs afin que les attributs restants identifient toujours tous les utilles de la relation.

Maintenant, pour trouver la clé principale, nous devons d'abord demander: quels sont les clés candidates de cette relation? Dans ce cas, il n'y a que deux clés candidates: (EQUIPMENT_ID, TIME_SLOT_ID) et (MEMBER_ID, TIME_SLOT_ID). En fait, chacun d'entre eux doit être unique pour tous les tuples de la relation. Et il n'y a pas d'autres clés candidates (en fait, (EQUIPMENT_ID, MEMBER_ID) peut avoir des éléments en double, comme vous l'avez déjà noté, alors que (MEMBER_ID, EQUIPMENT_ID, TIME_SLOT_ID) est un superbe strict).

Donc, la clé primaire dans votre cas pourrait être la suivante: a) le couple (EQUIPMENT_ID, TIME_SLOT_ID); b) le couple (MEMBER_ID, TIME_SLOT_ID); c) une clé de substitution comme RESERVES_ID. S'il n'y a pas de raison particulière d'introduire un autre attribut sous forme de clé de substitution, vous pouvez utiliser l'un des deux couples d'attributs comme clé primaire et déclarer l'autre paire comme unique.

Enfin, notez que l'application de la théorie de la normalisation, vous avez deux dépendances fonctionnelles non triviales MEMBER_ID, TIME_SLOT_ID -> EQUIPMENT_ID et EQUIPMENT_ID, TIME_SLOT_ID -> MEMBER_ID À partir de laquelle peut être dérivé que la relation est à Boyce Codd forme normale et que les deux couples sont les clés de candidature uniques.

[~ # ~] édité [~ # ~ ~]

Si votre question est vraiment: en cas de relation ternaire générique, avec la cardinalité comme dans l'exemple, représentée comme une relation avec trois clés étrangères, qui sont les clés candidates de cette relation?

La réponse peut être donnée en examinant les dépendances fonctionnelles déduites par la cardinalité. Appelons les trois attributs (clés étrangères) A, B et C, et supposons que vous puissiez avoir au plus une valeur d'A pour quelques valeurs BC, au plus une valeur de B pour quelques valeurs AC, et n'importe quel nombre. des valeurs de C pour quelques valeurs AB (ce modèle Ce que vous avez appelé 1: 1: N relation dans votre exemple, avec un membre, B l'équipement et c Le logement horaire). Cela peut être traduit en termes de dépendances fonctionnelles comme suit:

BC -> A
AC -> B

(Techniquement, cela s'appelle une couverture de l'ensemble des dépendances tenant sur la relation, ce qui signifie qu'il n'y a pas d'autres dépendances fonctionnelles non triviales qui tiennent dans ce cas).

De cela, nous pouvons facilement dériver que la relation n'a que deux clés candidates, AC et BC. Ainsi, en termes d'un système de base de données relationnelle, vous pouvez choisir l'un d'entre eux comme clé primaire et déclarer la consisse unique pour l'autre.

3
Renzo