0

Ich interessiere mich für Datenbankdesign und lese jetzt die entsprechende Literatur. Durch das Buch bin ich einem seltsamen Beispiel begegnet, das mich unsicher macht. Es gibt eine BeziehungWie Design Tabelle mit Primärschlüssel und mehrwertigen Attribut?

enter image description here

In dieser Tabelle sind wir einen zusammengesetzten Primärschlüssel haben (StudentID, Aktivität). Aber ActivityFee ist teilweise abhängig von dem Schlüssel der Tabelle (Aktivität -> ActivityFee), so dass der Autor diese Beziehung in zwei anderen Beziehungen zu unterteilen schlägt vor:

enter image description here

Wenn wir nun einen Blick auf die STUDENT_ACTIVITY nehmen, Die Aktivität wird zu einem Fremdschlüssel und die Beziehung hat immer noch einen zusammengesetzten Primärschlüssel.

Wir haben die Tabelle, in der die ganzen Spalten einen zusammengesetzten Primärschlüssel definieren, ist es in Ordnung?

Wenn nicht, was sollten wir in diesem Fall tun? (Wahrscheinlich definieren Sie einen Ersatzschlüssel?)

Was ist eine gute Möglichkeit, mit mehrwertigen Attribut (Aktivität in unserem Fall) umzugehen, um mögliche Datenanomalien zu beseitigen?

Antwort

2

Es ist nichts falsch mit einem zusammengesetzten Kandidatenschlüssel. (Wenn Ihre Referenz nicht in Bezug auf Kandidatenschlüssel spricht, dh wenn in jedem anderen Fall über Primärschlüssel gesprochen wird, als wenn nur ein Kandidatschlüssel vorhanden ist, erhalten Sie eine neue Referenz.)

Ihr Text wird Tell Sie, was ist gut und schlecht Design. Es macht keinen Sinn, sich über jede Eigenschaft, die Sie über eine Beziehung bemerken, Sorgen zu machen, dass es "schlecht" sein könnte. Die Art von "gut", die es derzeit anspricht, ist die durch "Normalisierung" gegebene.

"Aktivität" ist kein "mehrwertiges Attribut". Ein "mehrwertiges" Attribut ist ein nicht relationaler Begriff. Der Begriff wird häufig, aber falsch verwendet, um entweder ein "Attribut" in einer nicht-relationalen "Tabelle" zu bedeuten, das (mehr oder weniger) mehr als einen Eintrag pro "Zeile" oder für eine Spalte in einer relationalen Tabelle hat ein Wert mit mehreren ähnlichen Teilen (set, list, bag, table usw.), die irgendwie (was nie erklärt wird) nicht zu sagen, Strings & Ziffern, oder für eine Spalte in einer relationalen Tabelle, die einen Wert mit mehreren hat verschiedene Teile (Record, Tuple, etc), die irgendwie (was nie erklärt wird) nicht etwa auf Daten zutreffen. (Manchmal wird es sogar falsch angewendet, um eine Reihe von Attributen mit ähnlichen Namen und Werten zu bezeichnen, die durch ein einzelnes Attribut mit einer Zeile für jeden ursprünglichen Namen ersetzt werden sollten.) (Dies sind nur Fälle von unerwünschten Designs.) "Mehrwertige" bekommt als ein Antonym für den ähnlich missbrauchten/missbrauchten Begriff verwendet "atomic".

Das gleiche (Wert oder) Subrow von Werten erscheint mehr als einmal in einer Spalte oder Tabelle ist wiederum weder gut noch schlecht per se. Auch hier wird Ihre Referenz Ihnen sagen, was gutes Design ist.

2

Eine Tabelle, die nur aus einem zusammengesetzten Schlüssel besteht, ist vollkommen in Ordnung, wenn dies Ihren Geschäftsanforderungen entspricht.

Aktivität ist kein mehrwertiges Attribut. Für jedes Tupel gibt es einen einzigen Wert für die Aktivität.

Verwandte Themen