relations de base de données à l'aide de phpMyAdmin (clés composites)
-
24-09-2019 - |
Question
Je suis peu confus sur faire une bonne base de données relationnelle. J'utilise phpMyAdmin pour créer une base de données. Je les quatre tableaux ci-dessous. Ne vous inquiétez pas cet endroit de fait et le prix sont facultatifs, ils sont tout simplement.
- personne (obligatoire)
- Article (obligatoire)
- La place (en option)
- Prix (en option)
Le produit est la table principale. Il aura toujours personne liée. * Je sais que vous ne s'associe à MySQL pour les tables. Si je veux lier les tables ensemble, je pourrais utiliser des clés composites (en utilisant les IDs de chaque table), est cependant ce la façon la plus correcte pour relier les tables? Cela signifie également le point 5 aura ids, y compris lui-même. Ici, toutes les causes des valeurs nulles (apparemment un grand non non, que je peux comprendre) parce que si le lieu et le prix sont facultatifs et ne sont pas utilisés sur une entrée à la table des articles je vais avoir une valeur nulle là. S'il vous plaît aider!
Merci d'avance. J'espère que cela a du sens.
La solution
valeurs NULL
Cela signifie également le point 5 aura ids, y compris lui-même. Ici, toutes les causes des valeurs nulles (apparemment un grand non non, que je peux comprendre) parce que si le lieu et le prix sont facultatifs et ne sont pas utilisés sur une entrée à la table des articles que je vais avoir une valeur nulle, il
Personnellement, je pense que cela est une situation où les valeurs de NULL
sont parfaits, et je ne aurais certainement pas des doutes sur sa mise en ma conception de base de données.
Une façon que je l'ai vu d'autres réaliser la même chose sans valeurs NULL
est de créer un enregistrement dans les tables en option (lieu et le prix dans votre exemple) avec un ID de 0 qui signifie qu'il n'y a pas enregistrement lié - mais cela fait juste 10 fois plus de travail pour le développeur de l'application pour filtrer ces enregistrements sur -. il est beaucoup plus facile de faire une jointure et si vous le faites, il n'y a pas eu de dossiers en arrière aucun enregistrement mentionnées dans le tableau en option
Rappelez-vous simplement de faire un LEFT
ou RIGHT OUTER
joindre si vous voulez revenir Item
s peu importe qu'ils aient ou non un Place
ou Price
associée (vous obtiendrez des valeurs de NULL
dans les colonnes de table en option pour Item
s qui ne sont pas des documents associés) et un INNER
joindre si vous uniquement veulent les Item
s que Bougez ont un dossier en option associée.
Touches Composite
Une clé est une clé composite dans une table qui est constituée de plus d'une colonne. Si chacun de vos Person
, Item
, Place
et Price
tous ont une carte d'identité (même si elle est juste un numéro d'auto-incrémentée) vous ne aurez pas besoin d'une clé composite - juste une colonne de clé primaire dans chaque tableau, et une colonne de clé étrangère la table de Item
pour chaque table liée - par exemple item_id
, person_id
, place_id
, price_id
. Vous dites que Item
a sa propre identité, de sorte que vous ne devriez pas avoir besoin d'une clé composite -. Juste une clé primaire sur la colonne item_id