提问者:小点点

一元/递归关系是强/识别性还是弱/非识别性?


首先,一些定义,以确保我使用的术语是清楚的:

>

  • 强实体和弱实体以及强/识别和弱/非识别关系:在ERD中,弱/非识别关系是连接两个强实体的关系,并用虚线表示。强/标识关系是将强实体连接到弱实体(即包含其相关实体的主键[PK]作为其自身组件的实体)的关系 <罢工> 组件 主键),并由实线指示。

    例如,考虑一下这张图(从另一篇文章中借来):

    课程(强实体)和类(弱实体)之间的关系是强关系(实线),因为类包含课程的PK(*CID)作为其自身PK(*CID,*DATE)的一部分。相比之下,房间(强实体)和类(即使它是弱实体)之间的关系是弱的,因为房间的PK(*rid)不是类的PK的一部分。

    那么,我的问题是:一元关系是强/认同还是弱/不认同?一方的PK(Employee,*Empid)不仅是多方PK(同样是Employee,*Empid)的一部分,而且是多方PK(同样是Employee,*Empid)的全部组成部分。因此,这将表明它应该是一个强关系,有一条实线,与示例图中描述的相反。谁能帮我澄清一下吗?


  • 共2个答案

    匿名用户

    我不完全确定你对“强”与“弱”的定义是从何而来的(这可能是一个语言问题),但就我所见,它可以被认为是这样的:如果另一个实体不再存在,或者如果它们失去了关系,那么两个相关的实体是否继续存在。在您的示例中,当课程报废时,不存在。这可以通过一个表包含其他表的PK来表示,但不一定是这样。可以有自己的ID作为PK,而只使用CID作为FK。这不会改变这两个实体的实际关系。

    另一方面,如果您有类似carsdrivers的东西,它们就会有一个薄弱环节。一个被删除(死亡)的司机不会突然导致他们的车消失。同样,一辆车被偷通常不会导致司机立即心脏病发作。这是一个“薄弱”的环节。这两个东西可以继续存在,即使另一个没有了。

    在你与员工的情况下,两个人即使失去了关系,或者如果另一个实体不在了,也会继续存在。因此是一个薄弱环节。此外,要坚持您基于什么是PK的定义,manageremployee的FK,并且通常与PK不同,也不是PK的一部分,因为在公司层次结构中很少有任何人是自己的管理者。

    匿名用户

    弱/强关系:强关系只是意味着依赖实体不能脱离关系而存在。以课堂、课程和房间为例。想象一下下面的对话:

    "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."
    

    即使未为其分配房间,该类仍然可以存在。是的,在学期开始前必须分配一个房间,但目前我们仍然可以创建这个班级,将“TBD”放在目录中,并允许学生注册。这个类可以在没有房间的情况下存在(至少有一段时间),所以这种关系很弱。还有,“自由裁量逻辑”中的两个类在功能上是等价的,尽管他们是在不同的教室里讲授的。与房间的关系与班级类型无关。这种关系是不可识别的。

    所以如果报名在17室上珠子渲染的学生被通知房间改成了12室,他们就不会想:“这是一个完全不同的班级!”不,班级是一样的,只是地点不同而已。然而,如果他们被告知这个班级现在是“二手嘉年华人员”,那么他们就说对了。现在这是一个完全不同的班级。这就是识别关系和非识别关系的区别。

    一元/递归关系:认识到所有关系至少由两个实体组成是很重要的。这样,数据库关系就类似于人的关系--需要两个人才能完成。“一元”只是指关系的两边都由同一个逻辑实体填充。

    很容易看出,一个类实体和一个房间实体之间的“相遇”关系在两个类实体或两个房间实体之间是不能满足的。但是,“受管理”关系需要双方都有员工实体。同样应该很明显的是,员工并不需要这种关系才能存在。可能员工是新雇用的,还没有被分配经理。也许这个员工是这个特定组织的领头羊,没有其他员工配得上这个法案。

    或者如果当初由卡罗尔管理的皮特现在由萨拉管理,皮特的性质并没有改变。去问他吧。

    所以这种一元关系是弱的/非识别性的。它也是递归的,因为皮特可能由卡罗尔管理,而卡罗尔则由萨姆管理,萨姆是...好吧,你明白了。

    一元关系往往也是递归的,尽管这更多的是设计的效果,而不是关系的要求。例如,关系“是结婚的”将是一元的,但不是递归的。如果以一种可以递归的方式实现,就必须小心防止它--否则可能会在工作人员中出现一些尴尬的时刻。

    注意,我没有在任何地方提到“主键”或“外键”。这些是实现细节,而不是关系类型的特征。一个人可以完全理解关系的概念,而不使用甚至不考虑那些术语。

    说了这么多,应该指出的是,识别和非识别,如果不是完全主观的术语,对上下文是敏感的。例如,一个学院在同一学期安排多节相同课程的课是完全合理的。所以在3号教室可能有一堂“代数2”课,在7号教室可能有一堂不同的“代数2”课,在12号教室也可能有另一堂课。这大大加强了课堂和教室之间的关系。现在,“我正在修代数2”这句话并不充分,不足以确定你是三个类中的哪一个。

    此外,第四堂“代数2”课也可以在同一间教室里举行,只是在不同的时间或日子。

    因此,使用弱关系的初始设计在某些情况下可能很好(一个学期内只开设一门课程的小型学校),但在另一种情况下(一个学期内提供或可能提供多个相同课程的类的较大学校),则必须形成强关系。所以这并不是实体类型的内在特征。不能只看ER图就提前确定。