假设我们有
Drinker(SSN, name, address)
Beer(name, manf)
我们还想要一个将Drinker
与Beer
Likes
Beer
连接起来的支持实体
这是正确的架构吗?喜欢( SSN ,名称, manf )作为名称和manf是Likes
的关键。
我们是否真的在数据库中创建Likes
?我被告知有三种方法可以将E / R图转换为关系数据库关系。
a)简单的E / R图
b)面向对象的方法
c)空方法
对于(a),教科书说我们可以跳过{{1}}。
我很困惑。有人能帮助我吗?
答案 0 :(得分:1)
你的教科书可能说你可以跳过ER图中Likes
表的原因是,在概念或逻辑ERD中,多对多关系可以用一行而不是一个框来表示(假设您的ERD表示法使用关系线和表格框。)
在物理 ERD中,您必须使用交叉点实体来表示Drinker
和Beer
之间的多对多关系 - 在这种情况下是你的Likes
表。
答案 1 :(得分:0)
假设这是多对多关系,那么是:Likes
将是一个单独的表,在其主键中包含来自Drinker
和Beer
的主键组合。< / p>
我从未在真正的数据库中看到过这种情况。通常,您的目标应该是在数据库本身(而不是在客户端应用程序中)强制执行尽可能多的完整性,并且以声明方式(与触发器相反)。