我们是否在数据库设计中为支持实体创建关系?

时间:2012-04-21 04:32:05

标签: database-design relational-database

假设我们有

Drinker(SSN, name, address)
Beer(name, manf)

我们还想要一个将DrinkerBeer Likes Beer连接起来的支持实体

  1. 这是正确的架构吗?喜欢( SSN 名称 manf )作为名称和manf是Likes的关键。

  2. 我们是否真的在数据库中创建Likes?我被告知有三种方法可以将E / R图转换为关系数据库关系。

    a)简单的E / R图

    b)面向对象的方法

    c)空方法

  3. 对于(a),教科书说我们可以跳过{{1}}。

    我很困惑。有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

你的教科书可能说你可以跳过ER图中Likes表的原因是,在概念或逻辑ERD中,多对多关系可以用一行而不是一个框来表示(假设您的ERD表示法使用关系线和表格框。)

物理 ERD中,您必须使用交叉点实体来表示DrinkerBeer之间的多对多关系 - 在这种情况下是你的Likes表。

答案 1 :(得分:0)

假设这是多对多关系,那么是:Likes将是一个单独的表,在其主键中包含来自DrinkerBeer的主键组合。< / p>

我从未在真正的数据库中看到过这种情况。通常,您的目标应该是在数据库本身(而不是在客户端应用程序中)强制执行尽可能多的完整性,并且以声明方式(与触发器相反)。