|
|
1
1
你对信息很吝啬,所以我会做一些假设。即使假设在细节上是错误的,这个答案仍然有效。 您有一个表Users,它包含医生和患者,并用Flag字段区分他们。假设:标记包含医生的“D”或患者的“P”。 建议:在Users表上为组合ID和Flag创建唯一约束/索引。这将大大缓解以下数据完整性问题:
检测和预防这些问题的(触发器、存储过程和/或应用程序)代码可能会变得有点复杂,并且随着底层数据结构的不断发展,维护起来会很困难。这里有一个解决方案。
由于Users表中ID和Flag字段的新唯一约束,FK可以使用交叉表中的DrID和DrFlag域将它们用作参考。DrFlag只能包含“D”的约束将此FK的目标仅限于医生。PatientID PK指的是Users表的PK,因此可以指医生或患者。检查DrID和PatientID不能相同会阻止医生自己预约。 在那里,医生和患者(或其他医生)之间的预约涉及所有数据完整性问题,无需数据库或应用程序代码即可处理。 如果某个假设是错误的,则进行相应的更改。例如,如果只能在定义为医生的用户和定义为患者的另一用户之间进行预约,则可以删除检查(DrID<>PatientID),并添加带有检查的PatientFlag字段(PatientFlag='P')。 |
|
2
0
您需要创建一个“userappointment”表,将用户链接到约会,一次一个。 |