我在理解弱实体的建模方面遇到了一些麻烦。我的理解是,一个弱实体只能存在于一个强实体之间(即它是由强者实体拥有的#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)
答案 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
(您发布的两个结构都存在同样的问题。)