用于存储求职者信息的数据库设计

时间:2014-05-15 17:45:56

标签: php mysql database relational-database

我想在mysql表中存储有关求职者的以下信息。

个人信息
1)名称
2)等级
3)出生日期
4)年收入(可选)
5)收入来源(可选)
6)识别标记

家庭信息
1)父亲姓名
2)母亲姓 3)父亲的收入来源
4)母亲的收入来源

联系信息
1)地址
2)引脚代码
3)区
4)国家
5)手机号码 6)拥有手机的人的姓名(如果手机属于某人 - 其他人)
7)与拥有手机的人的关系(如果手机属于某人 - 其他)

教育资格
1)指标 - 主题,总分,获得的分数,通过年份,董事会名称,大学名称 2)中间人(可选) - 主题,总商标,获得的商标,通过年份,董事会名称,大学名称。
3)毕业(可选) - 科目,总分,获得的分数,通过年份,董事会名称,大学名称。

是/否问题 大约有10个是/否类型问题。

收到特定帖子的用户申请后。 用户应用程序将经历以下筛选过程。

1)提交申请硬拷贝的候选人名单 2)根据他们提交的信息(教育资格,年收入等)筛选候选人和候选人名单第一名 3)其他一些筛选过程,以列出候选人的最终绩效名单。

因此我需要存储以下有关申请状态的信息:

1)收到或不收到硬拷贝,如果收到,我还需要存储收到硬拷贝的日期
2)入围First Merit List是否入围。如果入围,那么我还需要将排名存储在第一个优点列表中,如果没有入围,那么我需要存储特定应用程序被拒绝的原因。 3)入围最终绩效名单还是没有入围如果入围,那么我还需要将候选人的等级存储在最终绩效列表中,如果没有入围,那么我需要存储特定申请被拒绝的原因。

用户可以拥有一套个人,联系人,家庭,教育信息。 我在单个表中看到的问题是可选字段。 能否请你给我一个更好的架构。

1 个答案:

答案 0 :(得分:1)

不,你不应该。单个表不合适的原因有很多。

要问一些问题:

用户是否有可能拥有多个地址或电话?一个以上的人可以属于同一所大学吗?是否可能在数据库中的所有人之间多次使用某个主题?

一般来说,如果您列出了类似于您的部分,那么它们可能是单独表格的良好候选者。如果您有任何可重用的数据,则应将其分成多个表。

请考虑查看有关规范化的一些教程。

与此同时,以下是良好数据库设计的一些基本规则:

  

规则1:消除重复组。为每个集合创建一个单独的表   相关属性,并为每个表提供主键。

     

规则2:如果属性仅依赖于部分,则消除冗余数据   多值密钥的密钥,将其删除到单独的表中。

     

规则3:消除不依赖于密钥的列。如果属性没有   有助于对密钥的描述,将它们单独删除   表

请查看此网址以获取更多信息:http://www.dbnormalization.com/