【发布时间】:2016-01-06 02:12:13
【问题描述】:
我对 DBMS 中的实体和实体集感到困惑。 实体集形成实体集?就像一组学生对象形成学生数组一样。
我们是否应该将关系数据库中的表与实体集或实体进行比较? 如果我将实体集与表进行比较,那么我可以将实体作为表中的记录进行比较。如果我错了,请纠正我。
我浏览了一些关于此的书籍和博客。 有时实体与 Rdbms 中的表进行比较,有时与实体集进行比较。这是真的。无法得到正确的解释。
请给出例子和清晰的解释,提前谢谢!!
【问题讨论】:
我对 DBMS 中的实体和实体集感到困惑。 实体集形成实体集?就像一组学生对象形成学生数组一样。
我们是否应该将关系数据库中的表与实体集或实体进行比较? 如果我将实体集与表进行比较,那么我可以将实体作为表中的记录进行比较。如果我错了,请纠正我。
我浏览了一些关于此的书籍和博客。 有时实体与 Rdbms 中的表进行比较,有时与实体集进行比较。这是真的。无法得到正确的解释。
请给出例子和清晰的解释,提前谢谢!!
【问题讨论】:
这些术语有多种描述,不幸的是,博客、教程、企业框架文档和图表软件倾向于将这些概念混为一谈。如需更严格的定义,请参阅该领域创始人的学术论文和书籍。
实体是可以明确识别的事物,例如特定的人、公司或事件。实体由数据库中的值标识,例如我(现实世界中的一个实体)由 StackOverflow 数据库中的数字 532721 表示。
实体集是一组相似的事物,例如一组人、公司或事件。 StackOverflow 上的所有用户就是一个例子。实体和实体集是概念性的,不直接包含在数据库中。 StackOverflow 的数据库谈论它的用户,这些用户实际上并不存在于数据库中。
表是表示谓词的数据结构。谓词是一种事实类型,一种带有值占位符的通用语句。记录包含那些使谓词为真的占位符的值,因此记录代表关于世界上实体的命题。另一种查看方式是,表表示一个或多个实体集上的一组属性和关系。请记住,属性只是二元关系。
例如,一张表USER (UserId PK, UserName UQ, Reputation, PhotoId UQ)可以理解为“世界上存在一个用户由一个数字UserId和唯一的名字UserName标识,他的得分为Reputation分,并且专门使用照片标识为PhotoId 为头像”。每个对应的记录代表一个关于用户和图像的已知事实。
我建议您阅读 Codd 的论文“大型共享数据库的数据关系模型”和 Chen 的论文“实体关系模型 - 迈向统一的数据视图”。它们比整本书更短、更集中,而且很容易在网上找到。
【讨论】: