Database design 一元/递归关系是强/标识关系还是弱/非标识关系?
首先,一些定义可以确保我使用的术语清晰明了:Database design 一元/递归关系是强/标识关系还是弱/非标识关系?,database-design,entity-relationship,erd,entity-relationship-model,Database Design,Entity Relationship,Erd,Entity Relationship Model,首先,一些定义可以确保我使用的术语清晰明了: 强实体和弱实体以及强/识别和弱/非识别关系:在ERD中,弱/非识别关系是连接两个强实体的关系,并用虚线表示。强/标识关系是将强实体连接到弱实体的关系(即,包含其相关实体的主键[PK]作为其自身组件主键的组件的实体),并用实线表示 例如,考虑这个图(借用): 课程(强实体)和班级(弱实体)之间的关系是强关系(实线),因为班级包含课程的主键(*CID)作为其主键(*CID,*日期)的一部分。相反,文件室(强实体)和类(即使是弱实体)之间的关系很弱,因
所以,我的问题是:一元关系是强/认同还是弱/不认同?一方(雇员,*EmpID)的主键不仅是多方(雇员,*EmpID)主键的一部分,而且是多方(雇员,*EmpID)主键的完整组成部分。因此,这表明它应该是一个强有力的关系,有一条实线,与示例图中描述的相反。有人能帮我澄清一下吗?我不太清楚你对“强”和“弱”的定义是从哪里来的(这可能是一个语言问题),但据我所知,这可以被认为是这样的:如果另一个实体不再存在,或者如果他们失去了关系,这两个相关实体是否会继续存在。在您的示例中,
课程
报废时,类
不存在。这可以通过一个表中包含其他表的PK来表示,但情况并非如此<代码>类可以(出于完全不同的原因)有自己的id
作为主键,并且只能将CID
用作FK。这不会改变这两个实体的事实关系
另一方面,如果你有像汽车
和司机
这样的东西,他们就会有一个薄弱环节。被删除(死亡)的司机不会突然导致他们的汽车消失。同样地,汽车被盗通常不会立即引起司机心脏病发作。这是一个“薄弱”环节。即使另一种东西消失了,这两种东西也可以继续存在
在您的员工案例中,即使他们失去了关系或另一个实体消失,这两个人仍将继续存在。因此,这是一个薄弱环节。此外,为了坚持你基于PK的定义,
经理
是员工的FK,通常与PK不同,也不是PK的一部分,因为在公司层级中很少有人是自己的经理。我不完全确定你对“强”与“弱”的定义来自何方(这可能是语言问题),但据我所知,这可以被认为是这样的:如果另一个实体不存在或它们失去了关系,这两个相关的实体是否继续存在。在你的例子中,当课程
被废弃时,类
不可能存在。这可以通过一个包含其他实体的表的主键来表示,但这不是n必要的情况是,Class
可以(出于完全不同的原因)将自己的id
作为PK,并将CID
仅用作FK。这不会改变这两个实体的事实关系
另一方面,如果你有像汽车
和司机
这样的东西,他们就会有一个薄弱环节。被删除(死亡)的司机不会突然导致他们的汽车消失。同样,被偷的汽车通常不会立即引起司机的心脏病发作。这是一个“薄弱环节”这两种东西可以继续存在,即使另一种已经消失了
在您与员工的案例中,即使他们失去了关系或其他实体消失,这两个人仍将继续存在。因此,这是一个薄弱环节。此外,为了坚持您基于PK的定义,
Manager
是员工的FK,通常与PK不同,并且不属于PK的一部分,因为它是罕见的e发现任何人在公司层级中都是自己的经理。弱/强关系:强关系只意味着依赖实体不能脱离关系而存在。以班级、课程和房间为例。想象以下对话:
"I think I'll teach a class this September."
"Good. What course will you teach?"
"I haven't decided yet."
好吧,在这位讲师决定课程之前,真的不可能有课程。因为课程必须在创建课程之前指定,所以这种关系非常密切。此外,在考虑选择哪门课程时,“珠子渲染”课程和“赛博工艺”课程是两种完全不同的东西,尽管它们可能同时在同一个房间里相遇(只是在不同的日子)。每个班级的身份都不可避免地与一门课程联系在一起。因此,这种关系也是确定的
"I think I'll reach Discretionary Logic this September."
"Good. What room will it be in?"
"I haven't decided yet."
即使尚未分配,该类仍然可以存在