数据库设计 - 设计M-N关系

时间:2016-02-03 08:26:30

标签: mysql database database-design erd

我要设计ERD。我们有一些地方可以在我们的网站上在不同的网站位置做广告。例如:公司A在主页,第B页,第C页,第D页上有4个广告,有4种不同的价格。如何设计这种结构?

我对使用以下哪种方式犹豫不决:

1:

Place 
--------------
-placeID
-Address


Banner
--------------
-bannerID
-placeID
-price
-position ID
-priority


Position
-----------------
-positionID
-dimension

2:

Place 
--------------
-placeID
-Address


Banner
--------------
-bannerID
-content


Place-Banner
-----------------
-placebannerID
-placeID
-bannerID
-position
-price
-priority

哪种方式可以正确?

2 个答案:

答案 0 :(得分:0)

直觉上我会选择第二个,因为看起来在那里编写查询会更容易。但经过一些研究,我可以说第一种变体更好。想象一下,地方和横幅保持不变,但只有位置变化。在第二个变体中,由于您需要向Place-Banner添加5个cols的条目,因此会花费更多内存。在第一个变体中,它将需要4.此外,位置是第一个变体中的可重用实体。据我记得大学时代的第一个变体是更高的数据库规范化形式。

答案 1 :(得分:0)

第二种模式更好,更正常。 因为如果要将一个横幅放置到多个位置,则不必重复横幅内容。这减少了更新异常(冗余度更低)。