合适的关系表设计?

时间:2013-11-23 16:48:49

标签: database-design

有两张桌子......

  • '广告'
  • '部件'

我希望会员能够根据自己的意愿保存尽可能多的广告。

我能想到的三种方法是......

  1. 'member'中一个名为'savedAdvert'的列,其中包含逗号分隔的广告ID字符串,随着添加的更多而增加..例如'123,143,15,235'

  2. 'advert'中的一个名为'memberSaved'的列,其中包含逗号分隔的成员ID字符串,随着添加的更多而增加..例如'123,143,15,235'

  3. 创建另一个名为“SavedAds”的表,其中包含两列“memberID”,“advertID”,每次保存新广告时,都会相应地添加一个全新的行。

  4. 哪种方法最好?

1 个答案:

答案 0 :(得分:3)

肯定是第3号。

再也不要在数据库设计中提及“逗号分隔字符串”了。在99%的情况下,这是数据库中最糟糕的设计(我无法想出一个可以正常的情况)。

方法编号3确保您可以轻松找到每个成员的所有广告,反之亦然。它也非常干净,易于理解。