mySQL数据库设计

时间:2009-01-24 22:16:47

标签: mysql database

在我的应用程序中,我有不同的类别,用户可以将其交易发布为。 示例:食品,购物,电影等。 我希望用户能够编辑这些类别并添加/删除类别。 将此信息存储在数据库中的最佳方法是什么。

  1. 包含类别和相应用户的类别表?然后我可以查询uid并获取所有类别。

  2. 用户表格带有类别字段,并用逗号分隔类别。然后我可以查询用户并将他们的类别分成一个阵列w / explode或类似的东西。

  3. 或者我甚至没想过的想法。

2 个答案:

答案 0 :(得分:2)

选项3

类别表 CategoryID,Category_Name等......

用户表 UserID,User_Name等

交叉表USER_Category

UserID,CategoryID

为什么?

如果你有

UserName,CategoryName

并说

“吉姆”,“食物”
“乔”,“食物”
“朱迪”,“美容产品”

如果因为您不再对她的交易感兴趣而删除“Judy”,那么您也会失去“美容产品”类别。这样,类别和用户是分开的。

更容易提出诸如“谁将大部分钱花在食物上”等问题。如果用户输入类别,您可能会得到“食物”,“杂货”,“外出就餐”,以及大量不同的类别,甚至可能是像“fod”,“fooooooooooooooooood”等拼写错误...所以通过统一您可以根据查询中的foodID选择类别。

现在用户基本上可以浏览类别列表,如果他们从列表中找到他们感兴趣的类别,他们将在交集表中创建条目UserID,CategoryID。这减少了拼写错误的可能性。如果该类别不存在,则用户可以添加该类别。然后,当下一个用户查看类别时,他们将看到新条目,因此如果他们感兴趣,他们只需单击它并减少拼写错误的机会。

答案 1 :(得分:0)

如果您可以将数据用作单个值(例如只有一个类别),请不要在数据库字段中用逗号分隔条目。

了解database normalization。有些情况下,您不希望一直进行规范化,但使用逗号连接不同的值不属于此类别。

不要害怕表。数据库通常针对此进行优化。如果速度变慢,请创建索引或使用其他优化技术。

选项1就是答案。