"Also ist deine Antwort" es ist nicht möglich "?"
Viele Dinge sind möglich. In Ihrem speziellen Fall scheint es mir, dass die Durchsetzung Ihrer "zusätzlichen" Einschränkung erreicht werden kann, indem die Datenbank in einer Tabelle (4 Spalten) gehalten wird. Dies garantiert Ihnen, dass jedes kombinierte a, b immer demselben d entspricht (da es immer nur ein einziges d geben kann). Der Preis, den Sie zahlen, ist, dass es keinen "natürlichen" Weg mehr gibt (dh einen, der eine unmittelbare Folge der sehr logischen Struktur der Datenbank selbst ist), der Ihre a-> d- und b-> d-FDs "automatisch" erzwingt. .
Es ist eine bekannte Tatsache, dass der klassische Prozess der Normalisierung durch Zerlegung manchmal erfordert, dass bestimmte FDs als Datenbankeinschränkung wiederhergestellt werden, da die Regel im zerlegten Entwurf nicht mehr als FD angegeben werden kann. Ihr spezieller Fall scheint ein solcher zu sein, bei dem Sie die Wahl zwischen einem Entwurf haben, der "automatisch" a-> d und b-> d erzwingt, bei dem Sie jedoch zusätzliche Anstrengungen unternehmen müssen, um Ihre zusätzliche Einschränkung durchzusetzen, oder einem Entwurf, bei dem dies der Fall ist "automatisch" erzwingt Ihre zusätzliche Einschränkung, aber wo Sie zusätzliche Arbeit leisten müssen, um [die Einschränkungen entsprechend] Ihrer a-> d- und b-> d-FDs durchzusetzen.
In Ihrem speziellen Fall ist es möglich, ALLE von Ihnen genannten Einschränkungen nur durch die Datenbankstruktur durchzusetzen, wenn Sie die Lösung von onedaywhen verwenden. (A) Dies ist jedoch nur eine Lösung für bestimmte Fälle wie Ihr Beispiel. (B) Der Preis, den Sie zahlen, ist eine erhöhte Redundanz und daher eine zusätzliche Komplexität bei der Aktualisierung Ihrer Datenbank (und bestimmte Aktualisierungen sind möglicherweise nicht möglich !!!). und (c) es bleibt immer noch eine Tatsache, dass nicht alle denkbaren Datenbankbeschränkungen als FD ausgedrückt werden können.
(Entschuldigung für die Veröffentlichung einer zweiten Antwort. Bei meinem Stackoverflow-Login kann ich hier keine Kommentare abgeben.)