Frage

Ich möchte eine Tabelle von Freunden mit persönlichen Daten erstellen und melden Sie sich auf Details.

Was besser trennen die Mitglieder Tabelle 2 Tische, ein enthalten minimale Details, zweite mit anderen Details.

oder in einer Tabelle bleiben?

ich habe eine Menge von Tabellen, die den Fremdschlüssel des Mitglieds enthalten.

War es hilfreich?

Lösung

Es hängt viel von, was diese „anderen“ Details sind. Dies ist eine gemeinsame und interessante Frage, und es gibt keine „hart und schnell“ Antwort auf dem ersten Blick. Aber wenn wir mehr von dem Thema abstrakt denken, über die tatsächliche Beziehung zwischen den Attributen ( „Details“) von einer bestimmten Sache, die Sie darstellen wollen, können wir etwas Klarheit finden.

In Ihrer Frage geben Sie an, dass Freunde haben „minimal“ und „andere“ Details. Anstatt diese Angaben als „minimal“ oder „andere“ zu klassifizieren, wollen wir sie klassifizieren, ob nicht jede Person ( „atomic“) Detail vollständig bestimmt werden, was ein Freund einzigartig macht.

Ich nehme an, dass ein Primärschlüssel (PK), wie FriendID oder E-Mail-Adresse oder so etwas. Diese eindeutige Kennung der Erwägung, fragen Sie sich: „Wenn ich ein FriendID genau gegeben habe (oder E-Mail oder was auch immer Sie als PK verwenden), welche Details dieser Freund bin ich absolut sicher ZB gegeben FriendID = 2112, ich absolut? wissen, dass erste Namen des Freundes, Nachname und Geburtsdatum, aber ich nicht unbedingt wissen Anzahl der Freund des Telefons, weil es mehr als eine von ihnen ist.

Gruppe zusammen in einer Tabelle alle Details, die Sie eindeutig die PK gegeben kennen. Legen Sie die Details für die Sie mehr Daten benötigen (wie „zu Hause“ oder „Arbeit“ im Fall von Telefonnummern) in „Kind“ Tabellen, Fremd verkeilte zurück zu „Eltern“ Tabelle auf der PK. (Hinweis: Es ist sehr wahrscheinlich, dass die PK des Kind Tisches zusammengesetzt sein wird, das heißt, die aus der PK Elterntabelle und der Differenzierungsfaktor (wie „zu Hause“ oder „Arbeit“ in diesem Beispiel) Composite-Schlüssel für den viele Neben. von 1-M sind die Beziehungen sehr gut.)

Datenbank-Freaks nennen diese Zersetzung basierend auf funktionale Abhängigkeiten .

Andere Tipps

Eine Tabelle, es sei denn, Sie möglicherweise benötigen ein Mitglied in mehreren Sätzen von Details zu verknüpfen (dh mehrere E-Mail-Adressen, Benutzergruppen, Tagestelefon, Nacht-Telefon, Handy, etc.) .

Keine Frage:. Immer Tabellen aufgeteilt, wenn es Sinn macht logisch

Zum Beispiel:   Freund 1: Tom Jones lebt in The Valley   Freund 2: Erin Jones lebt sie auch, da es sein Bruder

Tabellen:

Friends
Id  Name          Address
1   Tom Jones     1
2   Erin Jones    1

Adresses 
Id Address
1  The valley

Ansonsten Dinge immer wird kommen wie:

Friends
Id  Name          Address
1   Tom Jones     The Valey
2   Erin Jones    The Valley

Welche zu fehlerhaften Abfragen führen wird.

Das ist nur eine Frage, gibt es zahlreiche. Wie, was, wenn so hat 2 E-Mail-Adressen und 3 Handy-Nummern? Was passiert, wenn ein Straßenname ändert und 5 Freunde in ihr leben?

Wenn Sie sehr sicher sind, Ihr Tisch klein sein wird, und Sie müssen es nicht abfragen, als Sie nur eine Tabelle benutzen konnten. Aber als Sie können nur einige excell wie sw verwenden auch, oder ein Stück Papier in dieser Sache: -)

Aber wenn Sie eine Datenbank haben wollen, behandelt es als ein.

Lesen Sie mehr über Normalisierungs für die ganze Ausgabe.

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