所以我希望我的用户能够限制可以联系他们的人。
他们应该能够过滤几个因素,包括年龄(例如必须介于18 - 29之间),收入(必须赚取25,000至60,000美元),他们正在寻找的东西(例如友谊,闲逛等) 。),他们做了什么药(大麻,甲基溴,可卡因等)等。
问题是,我希望他们能够为某些标准(例如药物)选择和存储多个选项,但我不知道我应该如何将其存储在数据库中或者我应该如何将表格结构化为最好的完成。
例如,我如何在这种背景下存储“药物”选择“大麻”,“可卡因”和“海洛因”的用户行?我只是将它们作为逗号分隔值存储在“药物”列中吗?或者我应该以完全不同的方式做到这一点?
最好的方法是什么(考虑到每次用户想要联系其他用户时,我显然必须检索并检查此信息)以及为什么?
答案 0 :(得分:3)
不,不要将值以CSV格式存储在数据库中。而是创建一个名为user_drug
的{{3}}并为每个用户/药物组合存储一行:
user
id name income
1 Foo 10000
2 Bar 20000
3 Baz 30000
drug
id name
1 Marijuana
2 Cocaine
3 Heroin
user_drug
user_id drug_id
1 1
1 2
2 1
2 3
3 3
答案 1 :(得分:1)
DB列(至少在理论上)应该 NOT 保存多个值。不幸的是,有些程序员在一个列中存储多个值(例如用逗号分隔的值) - 那些程序员(在大多数情况下)破坏了DB和SQL的概念。
我建议您阅读 Database Normalization ,以便开始组织您的表格。并且,尽力实现 Codd's Third Normal Form
答案 2 :(得分:0)
你可以试试这个:
criterium
------------
user_id type value
1 AGE_MIN 18
1 AGE_MAX 29
1 INCOME_MIN 25000
1 INCOME_MAX 60000
1 DRUGS Marijuana
1 DRUGS Meth