Frage

Ich bin ein bisschen verwirrt darüber, eine gute relationale Datenbank zu erstellen. Ich verwende PhpMyAdmin, um eine Datenbank zu erstellen. Ich habe die folgenden vier Tische. Mach dir keine Sorgen darüber, dass dieser Tatsache und der Preis optional sind, dass sie es einfach sind.

  1. Person (obligatorisch)
  2. Punkt (obligatorisch)
  3. Ort (optional)
  4. Preis (optional)

Artikel ist die Haupttabelle. Es wird immer eine Person verknüpfen. * Ich weiß, dass Sie sich in MySQL für die Tabellen anschließen. Wenn ich die Tabellen miteinander verknüpfen möchte, könnte ich zusammengesetzte Schlüssel (mit den IDs aus jeder Tabelle) verwenden. Ist dies jedoch der richtige Weg, um die Tabellen zu verknüpfen? Es bedeutet auch, dass Artikel 5 IDs enthalten, einschließlich seiner eigenen. Dies alles verursacht Nullwerte (anscheinend ein großes Nein, was ich verstehen kann), denn wenn Ort und Preis optional sind und bei einem Eintrag in die Artikelstabelle nicht verwendet werden, habe ich dort einen Nullwert. Bitte helfen Sie!

Danke im Voraus. Ich hoffe das macht Sinn.

War es hilfreich?

Lösung

Nullwerte

Es bedeutet auch, dass Artikel 5 IDs enthalten, einschließlich seiner eigenen. Dies alles verursacht Nullwerte (anscheinend ein großes Nein, was ich verstehen kann), denn wenn Ort und Preis optional sind und bei einem Eintrag in die Artikeltabelle nicht verwendet werden, habe ich dort einen Nullwert

Persönlich denke ich, dass dies eine Situation ist, in der NULL Die Werte sind perfekt, und ich hätte sicherlich keine Zweifel daran, dies in mein Datenbankdesign zu stecken.

Eine Möglichkeit, wie ich gesehen habe, wie andere dasselbe ohne erreicht haben NULL Werte besteht darin, einen Datensatz in den optionalen Tabellen (Platz und Preis in Ihrem Beispiel) mit einer ID von 0 zu erstellen, die bedeutet, dass es keinen verwandten Datensatz gibt - dies macht jedoch nur noch zehnmal für den Entwickler der Anwendung zum Filtern dieser Aufzeichnungen - Es ist viel einfacher, einen Join durchzuführen. Wenn Sie keine Datensätze zurückholen, gibt es in der optionalen Tabelle keine verwandten Datensätze.

Denken Sie daran, eine zu machen LEFT oder RIGHT OUTER Melden Sie sich an, wenn Sie zurückkehren möchten Items unabhängig davon, ob sie a haben Place oder Price verbunden (Sie werden bekommen NULL Werte in den optionalen Tabellenspalten für Items, die keine assoziierten Aufzeichnungen haben) und ein INNER Machen Sie mit, wenn Sie nur will die Items das tun einen zugeordneten optionalen Datensatz haben.

Zusammengesetzte Schlüssel

Ein zusammengesetzter Schlüssel ist ein Schlüssel in einer Tabelle, die aus mehr als einer Spalte besteht. Wenn jeder von Ihnen Person, Item, Place und Price Alle haben eine ID (auch wenn es sich nur um eine automatische Inkrementierungsnummer handelt), benötigen Sie keine zusammengesetzte Taste - nur eine Primärschlüsselspalte in jeder Tabelle und eine Fremdschlüsselspalte in der Spalte Item Tabelle für jede verwandte Tabelle - zB item_id, person_id, place_id, price_id. Sie sagen das Item Hat eine eigene ID, also sollten Sie keinen zusammengesetzten Schlüssel benötigen - nur einen Primärschlüssel auf der item_id Säule.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top