将N:M关系转换为数据库模式

时间:2015-11-03 11:48:19

标签: database-design erd

假设您要转换以下形式的关系:

AsyncTask

或者用乌鸦的符号表示:

ER Diagram

标准架构转换是:

Entity1 (N,0) ------ (1,M) Entity2

(这里粗体表示主键和斜体外键)。

但是我没有看到如何实现这样一个事实:根据关系基数,必须至少有一个与Entity1相关的Entity2。有没有办法在数据库模式中包含此要求?

谢谢和最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

不,您不能指定至少有一个实体在关系的多方面相关。至少据我所知。

您可以实现CHECK约束,但由于多种原因(性能/可维护性),我不会这样做。您可以使用触发器/存储过程来确保始终至少有一个。如果这是合适的话,这取决于一般的软件设计。

通常,您可以使用任何编程语言创建一些业务层,以确保数据一致。它关注需要商业知识的更复杂的案例。数据库约束(如NOT NULL)相当简单,无法表达实际的业务一致性。他们只检查最重要和最基本的一致性。您的案例似乎也是基本的,但它已经超出了范围。