zer0core
Ensign
- Registriert
- Sep. 2007
- Beiträge
- 174
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das, denke ich, kommt auf die Verwendung an. Benutzt man das Attribute rein informell hast du sicherlich recht, denn dann muss man statt dem Programm nur einen Eintrag in der TerminArt-Tabelle ändern/ergänzen/löschen. Sobald das Attribut aber programatisch verarbeitet wird, erfordert jede Änderung/Ergänzung/Entfernung einer Termin-Art sowieso eine Änderung des Programms und dann sind fest codierte Werte nicht nur kein Mehraufwand, sondern zwingend erforderlich. Das gilt dann unabhängig davon wie die Daten letztenendes in der Datenbank abgelegt werden.ayngush schrieb:Die Termin_Art direkt in die Termine-Tabelle rein zuschreiben ist nicht gerade sehr clever.
Wie wird denn die Termin_Art dort jetzt eingetragen? Wahrscheinlich aus einer Liste mit Werten.
Und aus welcher Quelle wird diese Werteliste gefüllt? Wahrscheinlich fest codiert. Und wenn man mal eine neue Art Termin aufnimmt oder einen bestehenden Termin streichen muss? Das ist schon nicht nur Antipattern, das ist einfach, sorry, schlecht.
Mein Studium ist schon ein bisschen her und ich bin eher Software- als DB-Entwickler, aber auch nach einem Nachschlagen der 3NF-Definition sehe ich nicht, inwiefern das Attribut Termin-Art in der Tabelle Termin eine Verletzung der 3NF darstellt. Termin-Art ist einzig abhänig vom Primärschlüssel.ayngush schrieb:Und deswegen machen wir bei der Datenbankentwicklung konsequent die 3. Normalform und nicht die 2.
Mag sein, dass ich auf dem Schlauch stehe, aber wieso ist Termin (damit ist doch der Zeitpunkt gemeint?) von TerminArt abhängig? Man kann doch einen Termin verschieben (Attribut Termin ändern) ohne dass das Auswirkungen auf die Terminart hat.ayngush schrieb:TerminArt ist in Deinem Beispiel kein Schlüssel, sondern ein Nichtschlüsselattribut, genauso wie Termin an sich und damit wäre Termin wieder abhängig von anderen Nichtschlüsselattributen
Termin und auch TerminArt sind direkt abhängig vom Schlüssel ID. Da aber Termin und TerminArt nicht voneinander abhängig sind, besteht doch auch keine transitive Abhängigkeit zum Schlüssel und damit auch keine Verletzung der 3NF.ayngush schrieb:Damit wäre die Kombination Termin + TerminArt abhängig vom Schlüssel "ID" aus der Tabelle "tbl_Termine" und genau da liegt die Verletzung der 3NF vor.
ayngush schrieb:1, "01.02.2016", "Besichtigung", "Brekkis für Hund vom Kunden mitbringen"
2, "05.02.2016", "Gespräch", "Kunde möchte reden"
3, "05.02.2016", "Besichtigung", "Taschenlampe mitnehmen!"
4, "18.02.2016", "Schlüsselübergabe", "Schokolade + Schlüssel"
Du gehst also von einer definierten Menge an möglichen Terminarten aus. Die Frage ist dann doch erst einmal wo diese Menge definiert ist. Man kann sie entweder in der Datenbank definieren, dann bräuchte man eine separate Tabelle, so wie du sie vorschlägst. Man kann sie aber auch direkt in der Software definieren. Das ist häufig sinnvoller, denn nur so können verschiedene Terminarten in der Software unterschiedlich gehandhabt werden. In dem Falle wäre die zusätzliche Tabelle TerminArt redundant. Ich verstehe, dass das aus DB-Entwickler-Sicht unschön ist, da man sich darauf verlassen muss, dass die Software nur "gültige" Werte einträgt, aus Software-Entwickler-Sicht erspart das einem aber "doppelte Buchführung", die nicht nur einen Mehraufwand bedeuten, sondern auch eine potentielle Fehlerursache darstellen würde.ayngush schrieb:Ermitteln sie alle möglichen TerminArten, um damit eine Werteliste ("VB: Combofeld") in der zu Grunde liegenden Anwendung zu füllen.