Datenbankbeziehungen mit PhpMyAdmin (Composite -Tasten)
-
24-09-2019 - |
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.
- Person (obligatorisch)
- Punkt (obligatorisch)
- Ort (optional)
- 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.
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 Item
s unabhängig davon, ob sie a haben Place
oder Price
verbunden (Sie werden bekommen NULL
Werte in den optionalen Tabellenspalten für Item
s, die keine assoziierten Aufzeichnungen haben) und ein INNER
Machen Sie mit, wenn Sie nur will die Item
s 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.