タイプ アーキテクチャごとのテーブルで、学生と教師の 2 つのサブタイプを持つタイプ Person があるとします。学生は教師になることはできませんし、教師は学生になることもできません。
以下は、これまでにこれらを設定する方法を知っている最良の方法です。
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
サブタイプの場合、主キーは Geometry への外部キーでもあることに注意してください。ポイントとラインの両方であるジオメトリがないことを確認するにはどうすればよいですか? ある種の相互に排他的な制約はありますか?
唯一の解決策がベンダー固有のトリガーのようなものを使用することである場合、それを行うか、後で通信やクライアントなどの別の場所でこれを強制する方がよいでしょうか?
ありがとう!