database - 具有 2 个不同所有者实体的弱实体

标签 database database-design entity-relationship erd

具有 2 个所有者实体的弱实体

我有一个数据库,我试图用 3 个实体来设计:Store、Item 和 Wishlist。商店和心愿单独立存在,因此很强大。但是,除非商品在商店有货或在某人的愿望 list 上,否则它们将不存在。

设计 ER 图的最佳实践是什么?

最佳答案

您所描述的实际上是两个对参与有额外限制的一对多关系(“必须有货或在愿望 list 上”)。这并不意味着 Item 是弱实体类型。我认为这种情况下的项目必须很强大。我认为跨多个实体的参与约束没有任何标准的 ER 表示法,除非实体都是子类型。如果解释某件商品必须有货或在愿望 list 上但不必两者都很重要,我建议您在图表中添加文本符号。

有时有人说弱实体不能独立于相关实体而存在。然而,仅凭这一点并不能使某些东西变弱。如果一个实体类型没有自己的独立于另一个实体类型的标识符,那么它就是弱的。在您的情况下,我希望一件商品可以出现在多个心愿单上或存放在多个商店中,因此商品必须具有独立于心愿单和包含它们的商店的通用标识符(例如名称或 UPC)。如果不是这种情况,那么愿望 list 项目和库存可能必须是项目的子类型,这似乎有点不合常规。

如果出于某种原因您确实想将库存商品和愿望 list 上的商品视为商品的子类型,那么您问题的答案将是具有强制参与的子类型关系,例如用 Chen 表示法用双线表示:

subtypes with mandatory participation

关于database - 具有 2 个不同所有者实体的弱实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937869/

相关文章:

objective-c - NSManagedObject 无法从 NSAtomicStoreCacheNode 获取属性

mysql - 2 个外键引用 1 个主键

java - 如何对具有相同字段和功能的多个实体进行建模

database-design - 数据库模式相关问题

sql-server - 将公式(方程式)存储在数据库中以供稍后评估(SQL Server 2005)

python - 通过游标从 mySQL 中选择记录返回一个 None 对象

mysql - 如何在 mysql 中实现该 SQL 查询?

.net - Entity Framework - 记录上的读锁

mysql - 用于存储人与人之间聊天消息的数据库设计

mysql - 在 MySQL 查询中的 SELECT 中使用 SELECT