2009-11-23 75 views
1

我正在建立一个葡萄酒评论网站,并遇到数据库设计问题我希望有人可以帮助我。葡萄酒评论网站数据库设计策略与前10名列表和特色葡萄酒

该网站的基本前提是,用户将登录他们已经测试过的葡萄酒的假期评论。

  • 用户
  • 葡萄酒
  • 评论

用户有很多评论,评论中属于用户和审查属于酒。这很容易。

我有两个额外的信息要显示。

每个星期我都会列出超市购买的十大葡萄酒。 此列表并非基于网站数据,而是来自超市给我的数据,所以我无法自己计算并显示。

我还会在头版上显示特色葡萄酒。再次由超市提供。

我的问题是在这种情况下哪种数据库设计最好,避免重复和复杂性。

对于前10名单我最初的想法是添加一个十进制列的葡萄酒表,它将列出前10名单中的位置,但这似乎是数以千计的葡萄酒时,只有10个一次列出矫枉过正。

我在想特色葡萄酒是一样的,添加一个布尔值来表明葡萄酒是不是特色葡萄酒。同样,这似乎矫枉过正,我不想维护的问题,确保只有一定数量的葡萄酒功能(因为这将改变一周到一周)

谢谢。

+0

听起来像corkd.com! =) – jonnii 2009-11-23 20:40:30

回答

3

创建一个新表来存储这两种功能。它应该包括以下列:

feature-type: The type of feature (TOP10, FEATURED, etc.) 
wine-id:  The ID of the wine being featured 
date-begin: The date that this list begins 
date-end:  The date that this list ends 
rank:   The ranking of this wine for this list (order displayed for featured wines, or sales volume) 

该结构允许您保留历史排名,添加新类型的列表,并为未来几周预先添加数据。

+0

好主意。谢谢! – KJF 2009-11-23 20:45:48

0

为什么不有一个有wine_id的featured_wines表和top10_wines表?因此,只有适用于给定条件的那些表中的行(即top10_wines将包含10行,而featured_wines只包含特色酒ID)。

+0

我是个白痴。我不知道为什么我没有想到这一点。谢谢。 – KJF 2009-11-23 20:35:30

1

如果每个葡萄酒的评分都高于您可以使用该列将葡萄酒分类到前10名列表中。您还可以在商店和用户之间进行第二个评价葡萄酒评分。如果您获得他们推荐的葡萄酒清单,则可以使用该清单对葡萄酒进行高评分。

0

您最好的选择是为特色葡萄酒添加另一张桌子,为前10名葡萄酒添加另一张桌子。这样,你就不会改变你的酒桌结构来支持这些功能。此外,您只需查询这些表格即可获得结果,而不是整个葡萄酒表格,以查找前10名或特色葡萄酒。

0

我会做两个新的独立表; top_wine_list,与列;第一,第二第三等可能还有一些更多的date_entered列等等。

这可能不是最佳实践,但它确实很容易处理,每一行都是一个新的“顶级葡萄酒清单”。或者只是添加另一列,“评级”为您的“真正的葡萄酒”表,并评分所有的葡萄酒!

featured_wine_list可能只是您的其他葡萄酒的ID。最简单的一个!

1

到目前为止,答案中的共同主题是为优质葡萄酒和顶级X葡萄酒添加表格(或者为这些列表添加一个表格),除了一个问题外,这是很棒的。你提到你无法控制这些清单,它们是由超市向外提供的。因此,他们可能会向您发送您尚未列入清单的葡萄酒,或者描述不同的葡萄酒,但对于所有意图和目的而言,葡萄酒可能与原始列表中的葡萄酒相同。如果葡萄酒名称未在这些表格中显示,则可能会导致复杂情况,而您只需链接Wine表格中的wineID。因此,有几个建议可以缓解这个问题(如果它对你来说是真实的):

1)包含一个葡萄酒说明字段,以便您的超市老板可以描述葡萄酒的方式与您在评论中的不同。 2)考虑通过标准ID进行链接,所有各方都可能达成一致,比如SKU。这可能会避免您的零部件在进口时与超市葡萄酒相匹配的手动工作。

+0

谢谢汤姆在那里的一些很好的建议。 – KJF 2009-11-23 21:47:37

0

大部分人都说过,我会说,除了我会添加一个星期表,以跟踪什么时候显示什么,并允许您预先填充列表。所以,你会增加3台

表:周
领域:WeekID,起始日期,结束日期

表:Top10Wines
领域:WeekID,WineID,位置

表:FeaturedWines
领域:WeekID ,WineID,OtherFields