В таблице для архитектуры типа, скажем, у меня есть тип «Человек» с двумя подтипами «ученик» и «учитель». Ученик не может быть учителем, а учитель не может быть учеником.
Ниже приведен лучший способ, который я знаю, как настроить их до сих пор:
Geometry
ID int, PK
Name string
Point
ID int, PK, FK
X float
Y float
Line
ID int, PK, FK
StartPoint int, FK
EndPoint int, FK
Обратите внимание, что для подтипов первичный ключ также является внешним ключом для геометрии. Как я могу гарантировать, что не существует геометрии, которая является и точкой, и линией? Есть ли какое-то взаимоисключающее ограничение?
Если единственное решение состоит в том, чтобы использовать что-то вроде триггеров, зависящих от поставщика, мне лучше сделать это или применить это где-то в другом месте, например, при общении позже или у клиента?
Спасибо!
Person
вместо того, чтобы просто создавать 2 таблицы,Teacher
иStudent
? - person Jeremy Holovacs   schedule 29.03.2013Geometry
... без веской причины, иначе я бы сделал их полностью отдельными объектами без общей базы и покончил с этим. - person Jeremy Holovacs   schedule 29.03.2013