我有一个像这样的用户表的数据库:
table users:
user_id (int)
user_name (varchar)
etc..
此用户可以填写以下几项要求:
User->get(user_id);
的返回值必须是这样的:
user_id: 1,
user_name: 'John Doe',
user_requirements: {
minimal_salary: 2000,
drivers_license: true,
demands: 'These are my demands..'
}
将这个存储在数据库中的最佳方法是什么?
我知道你可以使用1对1的关系。 (它将花费一个连接或单独的查询) 您可以将它全部存储在1个表中。 (它将在代码中花费一些调整) 您可以使用需求表中的类型(int / bool / text)将其规范化为多对多关系。
修改
注意:我在用户表中已有25列,如果我添加3到6列需求,它会有什么不同吗?对于眼睛来说,它将在1个表中获得大量信息。
答案 0 :(得分:2)
仅使用一个表来存储此数据,因为我无法看到是否存在任何复杂性:
选项1:(仅使用一个表格)
|--------|-----------|----------------|-----------------|------------------------|
user_id user_name minimal_salary drivers_license demands
|--------|-----------|----------------|-----------------|------------------------|
1 John Doe 2000 true These are my demands..
|--------|-----------|----------------|-----------------|------------------------|
选项2 :如果parameters
更适合user requirements
,那么您可以two tables
为users
,requirements
为user_id as foriegn id
你可以在另一个表中拥有use a join
。然后可以{{1}}检索记录。
希望这有帮助。
答案 1 :(得分:1)
由于没有其他用户常用的数据,您可以将其存储在一个表中。
如果从列表中选择实例的需求,那么我建议将这些可能的列表条目存储在单独的表中。
如果您不是一直不需要每个字段,那么只选择您需要的字段
不要做
select * from users where user_id = 123
DO
select minimal_salary, drivers_license from users where user_id = 123
答案 2 :(得分:1)
除非您提供让用户指定自己的字段的功能,否则我认为您没有理由将信息分成单独的表。所有这些信息字段都适用于单个不同的用户。