弱实体取决于另外两个实体中的任何一个

问题描述 投票:2回答:1

考虑到我们将员工作为一个实体,并将其家庭成员作为一个弱实体。我们希望有家人健康记录。所以我们添加另一个弱实体“健康记录”。 ER图如下所示:(每个实体都有一些我没有指定的属性)

ER Diagram

现在一切都好。但是假设我们想要为每个员工保存健康记录。在这种情况下ER图是如何形成的。健康记录仍然是一个弱实体,它与员工或家庭成员共存。如果我们更改ER图像下面的图像那么它依赖于家庭成员和员工,但其中一个(员工或家庭成员足够存在健康记录):

Wrong ER Diagram

database-design entity-relationship erd
1个回答
0
投票

好吧,所以我理解你的问题,我已经设计了一个数据库,为你保存所有信息的关系。

所以我们需要3个表:

  1. 员工 - 存储有关员工的所有个人信息。
  2. 家庭成员 - 记录有关员工家庭成员的所有个人信息。
  3. 健康记录 - 存储员工和家庭成员的所有健康记录。

员工表设计

Columns
-- ---- ----- --- ----- -------- -------- ----- ---------- -------------------
id name email age phone address1 address2 state graduation total_familymembers Etc...
-- ---- ----- --- ----- -------- -------- ----- ---------- -------------------

FamilyMembers表设计

Columns
-- ----------- ---- ----- --- ----- --- -------------- 
id employee_id name email age phone sex marital_status Etc...
-- ----------- ---- ----- --- ----- --- -------------- 

健康记录表设计

Columns
-- ----------- --------- ------ ------ --- --------- ----------------- ----------
id person_type person_id height weight sex eye_color bodyfatpercentage teethcolor Etc...
-- ----------- --------- ------ ------ --- --------- ----------------- ----------

现在您必须了解Employees表和FamilyMembers表是如何相关的,其中Employees的列ID和FamilyMembers的employee_id列。

让我们来看看HealthRecords表,所以基本上你在这里存储所有的健康记录信息,但是如果是员工,你在Person_id列中输入“employee”,在person_id列中插入员工的id,如果是家庭成员,则插入“家庭成员” in person_type列和person_id列中的家庭成员的id。

现在首先获得所有员工,并检查total_familymembers列是否为0。如果它的0表示您不必在FamilyMembers表中检查其家庭成员,但如果它超过0,那么您将获得FamilyMembers表中的所有行,其中employee_id与员工匹配,并在您查询所有健康状况后来自HealthRecords表的记录,对于您搜索person_type(“employee”)和person_id(Employee的id)的员工,对于FamilyMember,您搜索person_type(“家庭成员”)和person_id(家庭成员的id)。

每次为员工插入新的家庭成员记录时,请确保增加total_familymembers列的值,以便在列中包含计数。

让我知道,如果这对你有所帮助,如果我不明白,请原谅我,让我知道它是什么。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.