Il suffit de faire pointer vers la PRIMARY KEY
de la table référencée:
PO_Table (POId PRIMARY KEY, MainPharmacyID, SupplierID, PreparedBy)
PO_Items_Table (POItemID, POId FOREIGN KEY REFERENCES PO_Table (POId), ...)
En fait, dans votre PO_Table
je ne vois aucune autre clé candidate sauf POId
, alors que pour l'instant cela semble être la seule solution disponible pour moi.
Quelles sont les «deux options» que vous envisagez?
Mise à jour:
Mettre POItemID
dans le PO_Table
n'est pas une option à moins que vous voulez que vos ordres pour plus d'un élément en eux.
Il suffit de regarder à l'intérieur: si vous avez une seule colonne qui stocke le id
de l'article commandé dans le tableau de commande, où allez-vous stocker les autres articles?
Mise à jour 2:
S'il y a un-à-un, normalement vous fusionnez uniquement les tables: combiner tous les champs des deux tables en un seul enregistrement.
Cependant, il existe des cas où vous devez diviser les tables. Dites, l'une des entités est rarement définie mais comporte trop de champs.
Dans ce cas, vous créez une relation distincte pour la deuxième entité et définissez sa colonne PRIMARY KEY comme FOREIGN KEY
.
Imaginons un modèle qui décrit les serrures et les clés et les clés ne peuvent pas être dupliqués (si un verrou correspond au plus une clé et vice versa):
Pairs (PairID PRIMARY KEY, LockID UNIQUE, LockProductionDate, KeyId UNIQUE, KeyProductionDate)
S'il n'y a pas de clé pour une verrouiller ou pas de verrou pour une clé, nous avons juste mis NULLS
dans les champs correspondants.
Cependant, si toutes les clés ont un verrou, mais seulement quelques serrures ont des clés, nous pouvons diviser la table:
Locks (LockID PRIMARY KEY, LockProductionDate, KeyID UNIQUE)
Keys (KeyID PRIMARY KEY, KeyProductionDate, FOREIGN KEY (KeyID) REFERENCES Locks (KeyID))
Comme vous pouvez le voir, le KeyID
est à la fois un PRIMARY KEY
et un FOREIGN KEY
dans le tableau Keys
.
Vous pouvez lire cet article dans mon blog:
, qui décrit certaines façons de cartographier le modèle ER
(entités et relations) dans le modèle relationnel (tables et clés étrangères
Quelles sont les deux options que vous choisissez? – Quassnoi
"J'ai deux options" ?? Que pensez-vous que vos deux options sont. Cette situation semble très claire que PO_Table est le parent/principal de PO_Items_Table. –
S'il vous plaît, ne critique pas mon jugement. J'essaie d'apprendre ici. – Tebo