数据库中的弱实体建模

时间:2014-05-11 10:03:22

标签: database-design entity-relationship

我在理解弱实体的建模方面遇到了一些麻烦。我的理解是,一个弱实体只能存在于一个强实体之间(即它是由强者实体拥有的#34;)。 例如,如果我有实体患者和访问,患者会很强壮,访问会很弱。我无法理解的是为什么患者的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) ?

第一个回答后编辑。

也许这是一个糟糕的例子:-( 以下情况怎么样?我认为Book和Module都很弱

 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)

1 个答案:

答案 0 :(得分:2)

可能有更多这样的东西。

Patient(Patient_ID(PK), name, surname)
Visit(Patient_id(PK, FK), start_time(PK), description)

从数据库设计的角度来看,访问ID号没有用处。相反,它增加了重复数据的可能性。例如,这个

Visit(Visit_ID(PK), Patient_id(PK), date, 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

(您发布的两个结构都存在同样的问题。)