MMh, wer sagt denn, dass partielle Abhängigkeit "schlechter" ist als transitive?
Ich versuche mal eine Antwort, die eigentlich keine ist, aber trotzdem vielleicht etwas hilft.
Ich kann verstehen, dass Dein Problem ist, Datenbanktheorie zu lernen. Theorien zu Sachverhalten zu bilden, ist der klassische Weg, wie Wissenschaft mit Problemen umgeht, sie klassifiziert, eine gemeingültige Sprache, ein abstraktes Modell findet, generalisiert Sachverhalte auszudrücken.
Ich kann damit leider nicht so viel anfangen, will heißen, ich bin nicht besonders gut darin, etwas abstrakt, theoretisch zu erklären.
Viel einfacher scheint es mir, mit Beispielen zu arbeiten.
Was wäre ein Beispiel für Deine Frage, also Tabellen und Daten?
Als Analogie zu meiner Schilderung würde bspw. die (deutsche) Sprache und ihre Grammatik dienen können.
Kannst Du (Deutsch) sprechen? Und kannst Du die Grammatik dazu erklären?
Ein Freund von mir lernt gerade Deutsch und verzweifelt an der Grammatik, den Artikeln und den verschiedenen Fällen, deswegen komme ich drauf...
Zurück zur Theorie: Während ich eingestehen muss, dass die Theorie zu relationalen Datenmodellen natürlich zum Handwerkszeug für einen Informatiker gehört (und Studiengängen, die etwas mit Datenverarbeitung zu tun haben), bin ich mir relativ sicher, dass Deine Fragestellung in der Theorie schlecht aufgehoben ist. Besser oder schlechter, partielle oder transitive Abhängigkeit .. ?
Bietet die Theorie genug "Fleisch", um diese Frage zu beantworten? Mag sein, ich kenne die Theorie nicht gut genug. Aber die Frage ist sicher legitim als Puzzleteil im Lernprozess.
Andere Frage: Was ist das Ergebnis einer Verletzung der Normalformen, egal welche Art der Verletzung, inklusive auch partieller oder transitiver Abhängigkeit?
Das Ergebnis ist Redundanz.
Was ist besser, was ist schlechter: Redundanz oder Redundanzfreiheit?
Robuste Frage, einfache Antwort (gemäß Theorie): Redundanzfreiheit ist das Ziel, natürlich!
Jetzt begebe ich mich etwas auf Abwege:
Redundanz an sich, als Daten-Zustand in einem Augenblick der Betrachtung ist an sich nichts Schlimmes.
Es kommt darauf an, wie die Daten genutzt werden. Daten die niemals aktualisiert werden, haben auch niemals eine Update Anomalie.
Daten die niemals aggregiert werden, können auch nicht falsch aggregiert werden. (Ok, eine falsche Aggregation bekommt man auch mit redundanzfreien Daten hin, Du weiß was ich meine)
Redundanz kann dagegen sogar Vorteile bieten, aber das kannst Du Dir selbst überlegen, es geht ja um was anderes.
Kann man Deine Frage eigentlich anhand der Theorie beantworten? Ich glaube nicht. Man kann abwägen.
Update Anomalien erhälst Du bei beiden Formen der Abhängigkeit.
Transitive Abhängigkeiten sind oft komplexer, Komplexität ist m.E. eher negativ zu bewerten.
Dennoch, wir reden von 2 Problemen, die man beide nicht haben will. Ein richtig normalisiertes Datenmodell sollte weder partielle noch transitive Abhängigkeiten enthalten.
Wenn man sie aber bewusst einbaut, sollte man sehr gute Gründe dafür haben. Geschieht es unbewusst und ohne Not, ist der Fall klar: Man hat ein schlechtes bis miserables Datenmodell entworfen.
Ich verändere also Deine Frage mal:
Wenn ich ein Datenmodell anlege und ich habe eine problematische Stelle mit Abhängigkeiten, löse ich das besser mit partieller oder transitiver Abhängigkeit?
Diese Form der Frage ist sehr wahrscheinlich sehr einfach zu beantworten: Weder noch! Du baust ein Datenmodell, das weder partielle noch transitive Abhängigkeiten enthält. Du baust das nicht absichtlich ein, höchstens, weil Du es nicht bemerkt hast.
(möglicherweise baust Du es absichtlich ein, weil Du sehr gute Gründe hast, aber dann bist Du auf einem Level, wo Du diese Frage hier im Forum nicht stellen würdest- und so lange Du keine gute, praktische Erfahrung hast, musst Du auch nicht darüber nachdenken, die Theorie zu hacken)
Lege ein Beispiel an für transitive Abhängigkeit, eines für partielle und eines, wo alles richtig ist.
Spiel ein paar Anwendungsfälle durch:
Insert* von Daten, Update* und Delete*
Baue ein paar Abfragen, die Aggregationen enthalten.
* Lege diese Operationen und das Datenmodell so an, dass sie die konstruktiven Abhängigkeiten des Modells berücksichtigen, also Anomalien vermeiden.
Am Ende schau dir Deine 3 Modelle, die zugehörigen Bündel von Abfragen an und versuche, Deine Frage selbst zu beantworten.
Z.B. wie kompliziert ist mein Datenmodell?
Wie umfangreich sind meine Statements?
Wie übersichtlich, wie leserlich, wie verständlich sind die Bestandteile?
..
Welche der 3 Varianten bietet den größten funktionalen Nutzen (unabhängig von den Fragen zuvor) ?
Welche der 3 Varianten kann ich am einfachsten erweitern / abändern?
Wie aufwändig wäre eine Transformation der Daten bei einer Abänderung?
Also wie versprochen, keine Antwort, aber vielleicht irgendwie hilfreich.