Уникальное ограничение для разных классов / таблиц (TABLE PER SUBCLASS) - PullRequest
1 голос
/ 28 марта 2012

У меня есть класс A и класс B, который наследуется от A. У класса A есть определенный атрибут X. Класс B добавляет еще один атрибут Y. Экземпляр B уникально идентифицируется его парой атрибутов {X, Y}.Итак, {X, Y} является ключом-кандидатом для класса B. Очевидно, что этот ключ не существует на уровне класса A, так как атрибут Y отсутствует.Я использую суррогатный ключ для класса А.

Теперь я использую Hibernate для объектно-реляционного отображения.Если я использую стратегию наследования TABLE PER SUBCLASS, я не вижу возможности для определения ограничения UNIQUE для нескольких атрибутов, принадлежащих разным классам (а затем и в БД, для разных таблиц).

Мой вопросКак я могу определить уникальное ограничение для этого ключа-кандидата, используя Hibernate и в целом в SQL?Если это невозможно, что вы порекомендуете?

Спасибо

1 Ответ

1 голос
/ 28 марта 2012

Вот два решения:

  • Создать новую таблицу с одним столбцом, который является ее PK. Эта таблица должна содержать все значения, которые вы хотите сделать уникальными. Создайте внешние ключи для этой таблицы, чтобы гарантировать, что домен столбцов происходит из уникальной таблицы.
  • Создать триггеры, которые вызывают ошибку, если условие нарушено.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...