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.

  1. personne (obligatoire)
  2. Article (obligatoire)
  3. La place (en option)
  4. 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.

Était-ce utile?

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 Items 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 Items qui ne sont pas des documents associés) et un INNER joindre si vous uniquement veulent les Items 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top