数据库 - 实体 'independent' 是什么意思?
Databases - What does it mean for an entity to be 'independent' exactly?
我刚刚开始学习数据库设计课程,并且布置了作业,其中一项任务是根据此 pdf 文件列出虚构医院的所有实体类型:http://docdro.id/mbzdtUg.
我正在努力弄清楚什么应该是实体类型,什么不应该。我会给你一个基本的例子:
"Staff" 显然是一个实体类型,但每个员工都必须有关于他们的资格和工作经验的详细信息。由于一名工作人员可以拥有多种资格和多种工作经验,因此这些不能成为属性……对吗?那么 "Staff Qualification" 和 "Staff Work experience" 应该是实体类型吗?
根据我读过的实体定义,实体应该是独立的并且代表实际存在的对象。实体独立究竟意味着什么?如果实体类型 "Staff" 不存在,则 "Staff Qualification" 和 "Staff Work experience" 实体类型将不存在。因此它们不是独立的(???),也不代表存在的东西(物理对象)。如果不是实体类型,那么它们是什么?例如 "Appointment" 应该是实体类型吗?我真的很困惑......感谢任何帮助。
谢谢!
编辑:应该提到这应该遵循实体关系模型 (ER)
编辑 2:示例 2:患者可以是门诊患者或住院患者。我应该把它们变成 2 种实体类型还是只变成 1 种(患者)?
看来你的方向是正确的,你的理解是正确的。如果您预见到员工 table 可以拥有多种资格或工作经验 - 那么资格和工作经验本身应该分离到不同的实体 table,任命也应该如此。
这也是规范化的地方——因为你可以让两名不同的员工拥有相同的工作经验(或资格)——那么从技术上讲,你不想只是简单地拥有一个 child table 用于 Staff,因为这会导致大量数据重复。通常,使用规范化原则,您会创建一个单独的实体 table WorkExperience,您将在其中拥有所有不同的 WorkExperiences。 Staff 和 WorkExperiences tables 之间没有任何关系。但是您还会创建 StaffWorkExperiences table(加入 table/buffer table),这将是 Staff (1:M) 的 child,但也会对 WorkExperiences 有约束table(男:1)。所以基本上你最终会得到 Staff table 链接到 StaffWorkExperiences table 和 StaffWorkExperiences table 反过来链接到 WorkExperiences table。
最后,如果您还有一位患者 table,并且该患者可以是门诊患者或住院患者 - 那么这更像是一个 属性 并且不需要额外的 table - 所以你将只有一个患者 table 然后是另一列(PatientType 或类似的东西)来描述这个特定的 属性.
我刚刚开始学习数据库设计课程,并且布置了作业,其中一项任务是根据此 pdf 文件列出虚构医院的所有实体类型:http://docdro.id/mbzdtUg.
我正在努力弄清楚什么应该是实体类型,什么不应该。我会给你一个基本的例子:
"Staff" 显然是一个实体类型,但每个员工都必须有关于他们的资格和工作经验的详细信息。由于一名工作人员可以拥有多种资格和多种工作经验,因此这些不能成为属性……对吗?那么 "Staff Qualification" 和 "Staff Work experience" 应该是实体类型吗?
根据我读过的实体定义,实体应该是独立的并且代表实际存在的对象。实体独立究竟意味着什么?如果实体类型 "Staff" 不存在,则 "Staff Qualification" 和 "Staff Work experience" 实体类型将不存在。因此它们不是独立的(???),也不代表存在的东西(物理对象)。如果不是实体类型,那么它们是什么?例如 "Appointment" 应该是实体类型吗?我真的很困惑......感谢任何帮助。
谢谢!
编辑:应该提到这应该遵循实体关系模型 (ER)
编辑 2:示例 2:患者可以是门诊患者或住院患者。我应该把它们变成 2 种实体类型还是只变成 1 种(患者)?
看来你的方向是正确的,你的理解是正确的。如果您预见到员工 table 可以拥有多种资格或工作经验 - 那么资格和工作经验本身应该分离到不同的实体 table,任命也应该如此。
这也是规范化的地方——因为你可以让两名不同的员工拥有相同的工作经验(或资格)——那么从技术上讲,你不想只是简单地拥有一个 child table 用于 Staff,因为这会导致大量数据重复。通常,使用规范化原则,您会创建一个单独的实体 table WorkExperience,您将在其中拥有所有不同的 WorkExperiences。 Staff 和 WorkExperiences tables 之间没有任何关系。但是您还会创建 StaffWorkExperiences table(加入 table/buffer table),这将是 Staff (1:M) 的 child,但也会对 WorkExperiences 有约束table(男:1)。所以基本上你最终会得到 Staff table 链接到 StaffWorkExperiences table 和 StaffWorkExperiences table 反过来链接到 WorkExperiences table。
最后,如果您还有一位患者 table,并且该患者可以是门诊患者或住院患者 - 那么这更像是一个 属性 并且不需要额外的 table - 所以你将只有一个患者 table 然后是另一列(PatientType 或类似的东西)来描述这个特定的 属性.