【发布时间】:2014-06-10 16:39:21
【问题描述】:
我有一个父表 Person。以及 3 个子表 PersonA、PersonB 和 PersonC。
Person - ID int primary key not null, name varchar(50) null
PersonA - ID int primary key not null references Person(ID), fname, lname, zip etc.
PersonB - ID int primary key not null references Person(ID), fname, lname, zip etc.
PersonC - ID int primary key not null references Person(ID), fname, lname, zip etc.
我需要建立一个约束,以确保一个人只属于三个人之一。例如,如果我在 Person 中有一行 234,JohnSmith 使用我当前的设计,我可以在 PersonA、PersonB 和 PersonC 中有相同的 234。我的目标是仅在三个子表中的一个中包含 234。
【问题讨论】:
-
我认为您需要检查您的模型。处理人员类型的四个表?我建议你学习标准化。
-
我同意,这有点误导。我说的是提供者、医院、护理人员等。但它们都被视为单一实体,因为它们为我们的会员提供服务。但无论如何,请不要专注于语义,而是告诉我如何做到这一点。父级中的一行表示其子级中的一个且只有一个对应行。
-
我认为没有办法通过约束来做你想做的事,最好的方法是使用触发器。
-
谢谢大家。无法投票,因为我需要更多的声誉点数。
标签: sql sql-server sql-server-2008 tsql