2016-04-24 7 views
0

IMAGEAnfänger Datenbank-Design - Weak Entity

Wenn ich ein Design wie das Bild oben haben, und ich wollte einen anderen Tisch haben „Lieblingsfrucht“ genannt, die für jede Person nur eine Frucht wählt, wäre es sinnvoll, habe es als eine schwache Einheit von Obst Tisch mit einem ?

+3

Wenn Sie nur eine Lieblingsfrucht pro Person haben, können Sie wahrscheinlich die Tabelle 'person' verwenden, um diese Information zu speichern. Wenn Sie noch eine separate Tabelle benötigen, sollte die 'personid'-Spalte selbst (oder die Kombination von 'personid' und 'fruchid') ausreichen, um jede Zeile der Tabelle eindeutig zu identifizieren, und Sie sollten nicht 'artificialid' benötigen . – pgngp

+0

'Lieblingsfrucht' in diesem Fall wäre eine Beziehung zwischen 'Person' und' Früchten', keine schwache Entität. – reaanb

+0

Nehmen wir an, ich habe ein Problem, bei dem ich ein Attribut namens favouritefruit als fk hinzufüge, das auf die Frucht in Früchten zeigt, aber die Fruchttabelle enthält kein Tupel mit dem Fruchtling darin. Würde das nicht zu einem Rückwärts-Referenzierungsfehler führen? Außerdem muss jede Person nur 1 Lieblingsfrucht haben (nicht weniger nicht mehr). Zur weiteren Erläuterung zeigen die Fruchttabellen Früchte, die die Person besitzt. – QuantumKomputing

Antwort

0

Watch it/Bleib dran. Entitäten existieren nur dann im Diagramm, wenn sie Eigenschaften/Attribute haben, sogar in Partitionierungsbeziehungen (die "ISA" -Beziehung).

[...] und ich wollte eine andere Tabelle "Lieblingsfrucht [...]"

Seien Sie vorsichtig genug genannt haben. Im konzeptionellen Modell gibt es keine Tabellen, sondern Entitäten. Genau wie Entitäten können Beziehungen später auch zu Tabellen werden. Sie werden möglicherweise verwirrt, diese Terminologie zu diesem Zeitpunkt zu verwenden.

Es ist nur wie der Benutzer reaanb sagte in den Kommentaren. Beziehungen/Beziehungen drücken genau das aus: Beziehungen zwischen Dingen (im Falle von Entitäten). Sie müssen sich daran erinnern, warum Sie Beziehungen im Diagramm aufbauen. Fragen Sie sich immer:

Warum besteht diese Beziehung? Warum erstelle ich das zwischen X und Y? Muss ich das wirklich durchhalten?

Sie können ohne Probleme mehr als eine Beziehung zwischen zwei Entitäten erstellen, da sie verschiedene Dinge (Beziehungen) darstellen.

Jetzt. Wenn Sie wissen, dass ein Benutzer eine Lieblingsfrucht hat, wissen Sie, dass diese beiden Entitäten in irgendeiner Weise miteinander verwandt sind. Daher haben wir ohne Zweifel eine Beziehung.

In Ihrem Fall, wenn ein Benutzer immer eine Lieblingsfrucht hat, dann haben wir eine 1-N-Beziehung, wobei der N-Teil in Benutzern ist, da eine Frucht der Favorit vieler Benutzer sein kann.

Auf der anderen Seite, wenn ein Benutzer eine Lieblingsfrucht haben kann oder nicht und Sie kein Feld mit Nullwert wünschen, müssen wir eine N-N Beziehung definieren. Diese Beziehung wird zu einer Tabelle, wenn sie zerlegt wird. In diesem Fall haben Sie eine Tabelle mit nur zwei Spalten. Die beiden sind Fremdschlüssel für die beiden Tabellen "Benutzer" und "Früchte", und sie sind auch ein zusammengesetzter Primärschlüssel auf dieser Tabelle. Es ist nicht möglich, Datensätze zu wiederholen, wenn mehr als ein Benutzer mit einem Lieblingsobst die Spalte "user" als eindeutig festlegen.

Wenn Sie Fragen haben, bitte Kommentar und ich werde antworten.