Database design 数据库中的弱实体建模

Database design 数据库中的弱实体建模,database-design,entity-relationship,Database Design,Entity Relationship,我在理解弱实体的建模方面遇到了一些困难。我的理解是,弱实体只能与强实体相关(即,它被强实体“拥有”)。 例如,如果我有实体患者和就诊,患者会很强,就诊会很弱。我不明白的是,为什么患者的PK应该是就诊PK的一部分。在某个地方,我读到一个弱小的实体不可能有一个PK而不包含强实体的PK。为什么? 我不能简单地拥有以下关系模式吗 Patient(Patient_ID(PK),name,surename) Visit(Visit_ID(PK),date,description,Patient_id(F

我在理解弱实体的建模方面遇到了一些困难。我的理解是,弱实体只能与强实体相关(即,它被强实体“拥有”)。 例如,如果我有实体患者和就诊,患者会很强,就诊会很弱。我不明白的是,为什么患者的PK应该是就诊PK的一部分。在某个地方,我读到一个弱小的实体不可能有一个PK而不包含强实体的PK。为什么? 我不能简单地拥有以下关系模式吗

 Patient(Patient_ID(PK),name,surename)
 Visit(Visit_ID(PK),date,description,Patient_id(FK))
并在其上强制执行关系完整性?或者我应该有吗

 Patient(Patient_ID(PK),name,surename)
 Visit(Visit_ID(PK),Patient_id(PK),date,description) ?
在第一个答案后编辑

也许这是个坏例子:-( 以下情况如何?我认为书和模块都很弱

 Course(Course_ID(PK),name)
 Module(Module_ID(PK),Course_id(FK),name)

 Author(Author_ID(PK),name,surname)
 Book(Book_ID(PK),Author_ID(FK),title)
你应该有更像这样的东西

Patient(Patient_ID(PK), name, surname)
Visit(Patient_id(PK, FK), start_time(PK), description)
visit_id patient_id date description -- 1 1 2014-05-09 Office visit 2 1 2014-05-09 Office visit 3 1 2014-05-09 Office visit 4 1 2014-05-09 Office visit 从数据库设计的角度来看,访问id号没有任何用处。相反,它增加了重复数据的可能性。例如

Visit(Visit_ID(PK), Patient_id(PK), date, description)
将允许这样的行

Patient(Patient_ID(PK), name, surname)
Visit(Patient_id(PK, FK), start_time(PK), description)
visit_id patient_id date description -- 1 1 2014-05-09 Office visit 2 1 2014-05-09 Office visit 3 1 2014-05-09 Office visit 4 1 2014-05-09 Office visit 就诊id患者id日期描述 -- 1 2014-05-09办公室访问 2.1 2014-05-09办公室访问 3.1 2014-05-09办公室访问 4.1 2014-05-09办公室访问
(您发布的两个结构都有相同的问题。)

谢谢。我在问题中添加的示例如何?也许患者就诊是一个糟糕的示例choiceNo,患者就诊是一个很好的示例,在您放弃了就诊id属性之后。这正是弱实体的含义。