0

Je me demandais si une telle structure fonctionnerait très bien:clé étrangère comme la clé composite dans quelques tables enfants

TABLE_A 
- ID_A (PK) 
- other data 

TABLE_B 
- ID_B (PK) 
- ID_A (FK,PK) 
- other data 

TABLE_C 
- ID_C (PK) 
- ID_B (FK) 
- ID_A (FK,PK) 
- other data 

TABLE_D 
- ID_D (PK) 
- ID_C (FK) 
- ID_A (FK,PK) 
- other data 

Je suis en train de créer un DB, où il y aurait quelques plaques tournantes de maintien independet de données l'un de l'autre et un point central qui agglomérerait toutes les données de tous les centres. ID_A identifie un hub, c'est pourquoi je l'appuie dans chaque table enfant. La clé composite de ID_A + ID_x est faite afin de trouver facilement un recored dans un point central (ou une partie de données du hub A). Cette structure a-t-elle un sens? Sinon, y a-t-il une meilleure façon de le faire?

Merci à l'avance pour la réponse!

Répondre

0

Je vous conseille d'avoir des clés primaires numériques à une seule colonne (souvent appelés clés primaires « synthétiques »). Ceux-ci sont pratiques pour diverses raisons:

  • Une référence de clé étrangère n'a besoin que d'occuper une colonne.
  • Modification d'une valeur dans la clé primaire « composite » est facile, parce que cela est juste un attribut stocké dans une seule table.
  • Les index sur les champs à largeur fixe sont plus efficaces (souvent les clés composées incluent des chaînes).
  • Si la clé est auto-incrémentée, il fournit un enregistrement de l'ordre d'insertion des enregistrements dans la table.

Vous pouvez ensuite déclarer vos clés primaires actuelles comme uniques, et non nulles, en utilisant les contraintes appropriées.

Le résultat est plus comme ceci:

TABLE_A

  • PK_A
  • autres données

TABLE_B

  • PK_B - unique en B
  • PK_A - fait référence à une
  • ID_B - Quoi que ce soit. C'est un "id" mais n'est pas unique.
  • autres données

TABLE_C - PK_C - unique en C - ID_C - Quoi que ce soit. C'est un "id" mais n'est pas unique - PK_B - PK_A - Si nécessaire. Cela peut être consulté par B. - d'autres données

TABLE_D

  • PK_D - Unique dans ce tableau.
  • ID_D - Quoi que ce soit. C'est un "id" mais n'est pas unique.
  • PK_C
  • PK_A - Si nécessaire. Cela peut être consulté par C, B et A.
  • autres données
+0

Merci pour la réponse, mais je pense que ce n'est pas ce que je cherchais. Disons qu'il y a 3 serveurs. Deux d'entre eux ont leur propre DB (même structure), mais des données différentes. Le troisième DB aurait données de DB # 1 et DB # 2 (la somme) et je besoin d'un moyen de distinguer les données. Les tableaux de données sur les 3 serveurs ressemblerait à quelque chose comme ceci: https://docs.google.com/spreadsheets/d/1j24tQKEvX_OpmULEquPt1ixVK9KcjhJ2Vg9TEAtouZQ/edit?usp=sharing est-il un moyen facile d'y parvenir? –