SQL - 关联实体是弱实体吗?

3

我对联合实体弱实体的概念感到困惑。联合实体是一种弱实体吗?如果不是,这两个概念之间有什么关系?以下是一个数据库示例:

  • 学生(学生ID,学生姓名,...)
  • 注册(学生ID*,课程ID*)
  • 课程(课程ID,课程名称,...)

    1. 注册是一个实体吗?我认为是的。它是一个关联实体。

    2. 它是一个弱实体吗?弱实体的定义是:无法仅通过其属性唯一标识的实体;因此,它必须与其属性结合使用外键来创建主键。在这种情况下,注册没有自己的属性(我是正确的吗?),所以根据定义,它应该是一个弱实体。那么我的逻辑是正确的吗?关联实体也是弱实体吗?

谢谢!

2个回答

2
我也在寻找这个问题的答案,以下是我的观察。
关联实体
如果将一个实体放置在两个实体之间以打破M:N关系,则这就是一个关联实体。由于关联实体本身不存在,因此它实际上也是一个弱实体,但始终被称为关联实体。
因此,Enroll(StudentID,CourseID)实体是一个关联实体。
弱实体
简单来说,弱(从属)实体是存在以存储强实体的多值属性的实体。也就是说,它不坐落在两个独立的实体之间。例如,人实体的多值属性可能是电话号码或电子邮件地址。
参考:
[1] https://www.quora.com/What-are-examples-of-a-weak-entity-and-a-strong-entity [2] http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Weak_entity.html 这句话是一个带有链接的HTML代码,其中包含了一个关于“弱实体”的维基百科页面的链接。

-1
无论在这个例子中Enroll是否弱,因为可能存在一个(学生ID,课程ID)的混合键,它可能是唯一的也可能不是唯一的。一个Student可以多次注册一个Course吗?如果是,则Enroll是弱的,因为执行
SELECT * FROM Enroll where StudentID = X AND CourseID = Y

可能会返回多个结果。

你在第一部分是正确的,Enroll 在这里作为一个联想实体,因为你有许多学生在许多课程中。所以,在学生不能重复参加课程的情况下,Enroll 不是弱实体(因为它有唯一的配对),但仍然是联想的,因为学生:课程仍然是多对多的连接。

e; 你链接的网站解释弱实体与我以前看到的有些不同,因此在其示例中,你当前的Course 是弱实体。但是,你可以想象具有课程名称(化学I)或课程编号(CHEM101)的Course ,这些可能是唯一的,因此你会拥有一个不是弱实体的关联实体。


因此,在学生不能重复选课的情况下,Enroll不是弱实体(因为它具有唯一的配对),但仍然是可关联的。我在许多网站上读到过,ASSOCIATIVE存在于多对多之间,那么你怎么能说它在这里像ASSOCIATIVE ENTITY? - Asif Mushtaq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接