我有两种类型的职位 - 公司职位和项目职位。以下是每个输入字段(在前端):
*company*
- company name
- company location
- company description
*project*
- project name
- project location
- project description
- project type
最好的数据库设计是什么 - 一个表,保持所有字段分开 -
`job_post`
- company_name
- company_location
- company_description
- project_name
- project_description
- project_type
- project_location
一个组合字段的表 -
`job_post`
- name
- location
- description
- project_type
- is_company (i.e., whether a company (True) or project (False)
还是两张桌子,还是其他什么?为什么这种方式比其他方式更可取?
答案 0 :(得分:5)
根据很多因素(包括此作业的最大大小),我会将数据标准化甚至超过2个单独的表,可能还有公司名称表等...因为连接多个表会导致查询速度快于一个长长的永不结束的桌子,充满了你所有的信息。如果您想为项目而不是公司添加更多字段,该怎么办?
简而言之,我肯定会使用多个表格。
答案 1 :(得分:2)
您已在OP中识别出3个主要对象;工作,项目和公司。这些对象中的每一个都有自己的属性,其中没有一个属性与其他对象相关联,因此我推荐类似于(仅限于演示)的东西:
job
id
name
company
id
name
project
id
name
link_job_company_project
job_id
company_id
project_id
这种类型的架构允许您添加特定于对象的属性而不影响其他对象,但是通过链接表将它们组合在一起形成一个“工作帖”。
答案 2 :(得分:1)
这肯定与存储在表中的数据量有关。在抽象视图中,一个表看起来非常简单。但是,正如Ryan所说,如果需求明天发生变化,并且要为公司或项目中的一种类型添加更多列,该怎么办?如果您预测将来会在表中存储大量数据,即使我更喜欢2个表,这样可以避免不必要的大量数据过滤,这是性能开销。