私はSuperPersonテーブルとDisasterテーブルを持つ実践的なSuper Hero SQLデータベースを持っています。 SuperPersonとDisaster、CreateとPreventの2つの関係があります。 SuperPersonテーブルには、悪意のあるか良いかどうかを示すDispositionカラムがあります。どのようにして、良い関係のスーパー・パーソンだけが、関係を作るために予防関係に参加することができるようにすることができますか?特定の要件を満たしている場合にのみエンティティがリレーションシップに参加できるSQL
SuperPersonテーブルを参照する2つの新しいテーブル、SuperHeroおよびSuperVillianを作成することを考えましたが、これは最も論理的なことですか、この制約を適用するために使用できるPL/SQLはありますか?
編集:
add constraint fk_disaster_create
foreign key (create, 'good') references superperson (superpersonid, disposition);
は残念ながら、定数はこのような参照のために許可されていません:
Here's a link to a schema of the database so far
、それはあなたのデータモデルは、エンティティの二つの異なる種類のconflatingされていることは良い兆候です。制約を適用するために必要なPL/SQLは、通常、単純に2つの表を持つより複雑です。 –
@JeffreyKempこれは当てはまりますが、ここではSuperPersonをSuperHeroとSuperVillianに分けることになります。これはテーブルの無駄ですか? –
あなたは 'Prevent'関係を作成している間に' SuperPerson'を良いものに問い合わせることができ、 'Create'のためにその逆を行うことができます。エンティティレベルで制約を設定したいのはなぜですか? – Aman