0

假设我们有

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

我们还想要一个连接DrinkerBeer被调用的支持实体Likes

  1. 这是正确的架构吗?Likes( SSN , name , manf ) as name 和 manf 是Beer.

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

    a) 简单的 E/R 图

    b) 面向对象的方法

    c) 空方法

对于(a),教科书说我们可以跳过Likes

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

4

2 回答 2

1

您的教科书可能说过您可以跳过LikesER 图中的表格的原因是,在概念或逻辑 ERD 中,多对多关系可以用一条线而不是一个框来表示(假设您的 ERD 符号使用线表示关系和桌子的盒子)。

物理DrinkerERD 中,您必须表示和Beer使用交叉实体之间的多对多关系- 在本例中是您的Likes表。

于 2012-04-21T19:16:04.177 回答
0

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

我从未见过在真实数据库中跳过这一点。通常,您的目标应该是在数据库本身(而不是在客户端应用程序中)和声明式(例如,触发器)中强制执行尽可能多的完整性。

于 2012-04-21T10:54:48.453 回答