请考虑我们以雇员为实体,而其家庭成员为弱者。我们希望有家庭成员的健康记录。因此,我们添加了另一个较弱的实体“健康记录”。 ER图如下所示:(每个实体都有一些我未指定的属性)
现在一切都很好。但假设我们也要保存每位员工的健康记录。 ER图在这种情况下的情况如何。健康记录仍然是一个薄弱的实体,与雇员或家庭成员一起存在。如果我们像下面的图一样更改ER图,则它既取决于家庭成员又取决于雇员,但是其中之一(雇员或家庭成员的存在足以构成健康记录):
答案 0 :(得分:0)
好的,我了解您的问题,并且我为您设计了一个数据库,以按关系保存所有信息。
所以我们将需要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...
-- ----------- ---- ----- --- ----- --- --------------
HealthRecords表设计
Columns
-- ----------- --------- ------ ------ --- --------- ----------------- ----------
id person_type person_id height weight sex eye_color bodyfatpercentage teethcolor Etc...
-- ----------- --------- ------ ------ --- --------- ----------------- ----------
现在,您已经了解了Employees表和FamilyMembers表之间的关系,其列ID为Employees,列employee_id为FamilyMembers。
让我们进入HealthRecords表,因此基本上您将所有健康记录信息都存储在此处,但是如果是雇员的话,则在person_type列中插入“雇员”,并在person_id列中将雇员的id插入;如果是家庭成员的话,则插入“ person_type列中的“家庭成员”和person_id列中的家庭成员的ID。
现在,首先获得所有雇员,并检查 total_familymembers 列是否为0。如果它的0表示您不必在FamilyMembers表中检查其家庭成员,但是如果它大于0,那么您将从FamilyMembers表中获取所有与employee_id匹配的employee_id的行,并在查询所有运行状况之后从HealthRecords表中获取记录,对于雇员,您搜索person_type(“雇员”)和person_id(雇员的ID),对于FamilyMember,则搜索person_type(“家庭成员”)和person_id(家庭成员的ID)。
每次您为员工插入新的家庭成员记录时,请确保增加 total_familymembers 列的值,以便在该列中进行计数。
让我知道这是否对您有帮助,如果我听不懂,请原谅我,让我知道它是什么。
谢谢。