2016-11-04 1 views
0

Ich entwerfe eine Datenbank mit drei Tabellen.Entwerfen von Medien und Lerntabellen für zwei 1: n-Beziehungen

Seine Media-Tabelle, die in einer Art von Medien, hat n Lektion (1: n-Beziehung).

Jede Lektion hat einige Medien (1: n-Beziehung).

Ist dies ein korrektes Design? Gibt es eine andere Lösung für dieses Problem?

enter image description here

+0

Was ist ein Verweis auf die * Design-Methode * folgen Sie? Wenn Sie einem nicht folgen, wie erwarten Sie, etwas zu erreichen? – philipxy

Antwort

0

Warum brauchen Sie ID in beide haben?

[Media] -> Id, LessonId, Name ...

[Lektion] -> ID, Name, ...

Sie können die Medien aus der Lektion über eine Join-Abfrage erhalten .

+0

beide Tabellen haben eine Beziehung zueinander. Ich muss. – AminH86

+0

Ich kann nicht den Grund bekommen, warum Sie eine doppelte Beziehung haben müssen .. aber ich würde eine Tabelle dazwischen machen, wie [MediaLesson] -> MediaId, LessonId – BlueSalamander

0

TL; DR Erfahren Sie mehr über Design. Lies ein Lehrbuch. Arbeite an einer bestimmten Designmethode. Dieser Entwurf schlägt vor, dass Sie noch Grundlagen erlernen müssen.

Es ist unwahrscheinlich, dass Ihr Design geeignet ist. Wir können es nicht sagen, weil du uns nicht genug sagst. In deinem Design "hat" ein Medium (vielleicht) "eine Lektion" (was immer du damit meinst) und eine Lektion (vielleicht) "hat ein" Medium (was immer du damit meinst). Der Rest Ihrer Nachricht schlägt vor, dass Sie wahrscheinlich eine Tabelle über Medien, eine Tabelle über Lektionen und eine Tabelle über eine Anwendungsbeziehung/Assoziation wünschen, die Sie nicht erklärt haben, sondern "hat ein". Ihre Verwendung von Nullable-FKs, die auf die andere Tabelle verweisen, ist wahrscheinlich nicht angemessen, aber was angemessen ist, hängt davon ab, was Ihre Tabellen bedeuten.

Was ist das Anwendungskriterium, mit dem eine Zeile in eine dieser Tabellen geht? Sie müssen zuerst identifizieren Sie die Anwendungsbeziehungen, die Sie interessiert sind, und für jeden Pin seine Charakterisierung Prädikat --Fill-in-the- (named-) Leerzeichen Anweisung Vorlage durch Spaltennamen parametrisiert - dass eine Zeile macht in seiner Tabelle eine wahre Aussage.

Die straightforwared Design sein könnte (wenn jeder Medien, Lektion & Geben Sie einen Namen hat):

Media(mname,tname) -- media MNAME is of type TNAME 
    PK(mname) 
Lesson(lname) -- lesson LNAME exists 
    PK (lname) 
Whatever(lname, mname) -- blah lesson LNAME blah blah media MNAME blah 
    PK (lname, mname) 
    FK (lname) references Lesson 
    FK (mname) references Media 

Wenn Sie ids wollen (warum?):

Media(mid, name, tid) 
    PK (mid) 
    FK (tid) references Type 
Type(tid, name) 
    PK(tid) 
Lesson(lid, name) 
    PK(lid) 
Whatever(mid,lid) 
    FK (lid) references Lesson 
    FK (mid) references Media 

ER Entwurfsmethoden nennen würde Media, Lesson und Type Entitätstabellen und Was auch immer eine Beziehung oder Zuordnungstabelle.

"Kardinalität" bedeutet verschiedene Dinge und wird in verschiedenen Entwurfsmethoden unterschiedlich beschrieben. Welchen benutzen Sie?

Allgemeiner gesagt, müssen Sie uns mitteilen, welche Bedingungen gelten müssen, damit die Tabellenwerte für die Anwendung sinnvoll sind. Eine FK-Einschränkung besagt, dass Werte in einer Liste von Spalten in einer Tabelle auch an einer bestimmten anderen Stelle angezeigt werden müssen. Wenn ein Deckel und eine Mitte an Was auch immer teilnehmen, könnte dieser Deckel mit einer anderen Mitte teilhaben? Und umgekehrt? Muss jeder Lid/Media in Lesson/Media in Whatever erscheinen? Die Konstanten folgen aus den gewählten Prädikaten und welche Anwendungssituationen können entstehen.Wenn bestimmte Einschränkungen gelten, können Sie Ihre Tabellen neu anordnen, um dieselben Informationen aufzuzeichnen, sie aber leichter halten oder die Einschränkungen des neuen Entwurfs vereinfachen und/oder die Tabellen des neuen Entwurfs einfacher gestalten .

Verwandte Themen