我的软件(用PHP编写)允许用户使用HTML表单为他们的“简历”输入信息。这个“简历”有几个不同的元素,包括用户的教育程度、工作经历、奖励、求职信等等。每个元素在包含的数据中都是独一无二的。例如,教育需要诸如毕业年份、学校名称、学位等领域。
我的问题是,在mySQL数据库中存储简历数据的最佳方法是什么?我目前的选择是:
第一种选择提供了维护和编码的便利,而第二种选择似乎大大减少了备份和可能的加载时间以及数据库维护。也许有一种更好的方法?你有什么建议?
发布于 2013-01-08 04:38:03
我会选择多个表,但不会将表命名为更通用的表。
例如:表格
resume_section
id,name
1,personal details
2,education
3,work history
resume_section_attributes
id,resume_section_id,name
1,1,name
2,1,phone
3,1,email
4,2,school_name
5,2,grad_year
6,3,company_name
7,3,number_of_years
user_resume
id,user_id,resume_section_attribute_id,value
1,99,1,My Name
2,99,2,12345678现在,当您想要构建一个用户简历时,您可以直接进入用户简历表,获取他们的所有细节,并加入属性名称的属性表等等。您可以更改显示的吸引顺序,很容易添加新的。请根据需要设置它们。限制电话号码什么的。扩展的可能性是无限的。
发布于 2013-01-08 04:36:44
备选案文2显然是错误的。如果您不打算将数据分解为行和列,并且至少遵循数据规范化的前两条规则,那么就没有理由使用关系数据库(您可以在文件系统文件夹中使用XML文档)。
备选案文1可能是最正确的。如果所有的简历中都有所有的元素,并且简历中没有重复的元素,那么您实际上可以为整个简历创建一个表,每个字段都在它自己的列中。因为我不认为这些条件得到满足(例如,工作历史和教育应该是可重复的元素),那么每个元素单独的表才是正确的选择。
发布于 2013-01-08 04:31:42
好的数据库设计是至关重要的,良好的数据库设计需要规范化您的数据,只有当您用自己的表建模不同的实体时,这才是可能的。
看看关于数据库规范化的文章,它很好地讨论了所涉及的概念。
https://stackoverflow.com/questions/14208161
复制相似问题