我要设计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
哪种方式可以正确?
答案 0 :(得分:0)
直觉上我会选择第二个,因为看起来在那里编写查询会更容易。但经过一些研究,我可以说第一种变体更好。想象一下,地方和横幅保持不变,但只有位置变化。在第二个变体中,由于您需要向Place-Banner添加5个cols的条目,因此会花费更多内存。在第一个变体中,它将需要4.此外,位置是第一个变体中的可重用实体。据我记得大学时代的第一个变体是更高的数据库规范化形式。
答案 1 :(得分:0)
第二种模式更好,更正常。 因为如果要将一个横幅放置到多个位置,则不必重复横幅内容。这减少了更新异常(冗余度更低)。