2012-05-19 141 views
0

我正在为我的投资组合网站构建一个简单的网上商店。在这个网上商店有两种(主要)类别:电影和游戏。Mysql数据库结构webshop

当然这些类别也需要子类别,如:game_type,game_platform,movie_type,movie_quality。我现在的问题是:做这件事的最好方法是什么?

对于我的产品和类别我现在有3个表:

webshop_products (wpID, wpName, wpDescription, wpPrice, wpPicture) 
webshop_categories (wcID, wcName) 
product_category (wpcID, wpID, wcID) -> this is my join table. 

我自己的想法是在表webshop_categories我的两个额外列:wcType(ENUM“子”,“主”) 和wcParent (例如,子类别操作可以将游戏或电影类别ID作为父项)

此解决方案是否好,或者有人有更好的主意?

感谢和问候埃里克

+0

这取决于你想如何使用数据。 MySQL不支持递归函数,所以它不适用于存储分层数据的邻接列表模型(这就是你所提出的),如果你想要获取所有类别(包括他们的祖先)给定产品。为此,您可能需要考虑使用嵌套集合或封闭表格。请参阅[本答案](http://stackoverflow.com/a/192462/623041)了解更多信息。 – eggyal

回答

1

你可以只添加这同时将指向父类ID wcParent列,如果它被设置,它会自动意味着它是一个子类别 - 无需额外wcType列。

此外,删除product_category中的wpcID,并将wpID和wcID设置为主索引。你真的不需要额外的专栏。