Ich habe eine Klasse A und eine Klasse B, die von A erbt. Klasse A hat ein bestimmtes Attribut X. Klasse B fügt ein weiteres Attribut Y hinzu. Eine Instanz von B ist eindeutig identifiziert durch sein Paar von Attributen {X, Y}. Also, {X, Y} ist ein Kandidat Schlüssel für die Klasse B. Offensichtlich existiert dieser Schlüssel nicht auf der Ebene der Klasse A, da das Attribut Y nicht da ist. Ich verwende einen Ersatzschlüssel für die Klasse A.Eindeutige Einschränkung für verschiedene Klassen/Tabellen (TABLE PER SUBCLASS)
Jetzt verwende ich Hibernate für die objektrelationale Zuordnung. Wenn ich die Vererbungsstrategie TABLE PER SUBCLASS verwende, sehe ich keine Möglichkeit, eine UNIQUE-Einschränkung für mehrere Attribute zu definieren, die zu verschiedenen Klassen gehören (und dann in der DB zu verschiedenen Tabellen).
Meine Frage ist, wie kann ich eine eindeutige Einschränkung für diesen Kandidatenschlüssel mit Hibernate und allgemeiner in SQL definieren? Wenn es nicht möglich ist, was empfehlen Sie?
Dank
Mein Primärschlüssel ist in A definiert, dies ist der Ersatzschlüssel (ein Long-Intergee). Die UNIQUE-Einschränkung muss auf das Attributpaar {X, Y} angewendet werden, das nicht der Primärschlüssel ist. Können Sie bitte ein Beispiel für die erste Lösung geben? –
Sie können einen Clustered-Index und einen FK für mehrere Spalten haben. Es funktioniert wie eine einzelne Spalte. Die Kombination von Werten wird erzwungen, um einzigartig zu sein. – usr