在我的应用程序中,我有不同的类别,用户可以将其交易发布为。 示例:食品,购物,电影等。 我希望用户能够编辑这些类别并添加/删除类别。 将此信息存储在数据库中的最佳方法是什么。
包含类别和相应用户的类别表?然后我可以查询uid并获取所有类别。
用户表格带有类别字段,并用逗号分隔类别。然后我可以查询用户并将他们的类别分成一个阵列w / explode或类似的东西。
或者我甚至没想过的想法。
答案 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就是答案。