我的软件(用PHP编写)允许用户使用HTML表单输入“简历”的信息。这个“简历”有几个不同的元素,包括用户的教育,工作历史,奖励,求职信等。每个元素在其包含的数据中是唯一的。例如,教育需要毕业年份,学校名称,学位等领域。
我的问题是,将简历数据存储在mySQL数据库中的最佳方法是什么?我目前的选择是:
第一种选择提供易于维护和编码,而第二种选择似乎可以显着减少备份和加载时间以及数据库维护。也许有一个更好的方法?你会推荐什么?
答案 0 :(得分:1)
选项2显然是明确错误的。如果您不打算将数据分解为行和列,并且至少遵循 前几个数据规范化规则,那么就没有理由使用关系数据库(您可以在文件中使用XML文档)系统文件夹)。
选项1可能是最正确的。如果预期所有元素都出现在所有简历中,并且在简历中没有元素重复,那么实际上您可以为整个简历创建一个表,每个字段都在其自己的列中。由于我不认为这些条件得到满足(例如,工作历史和教育应该是可重复的元素),因此每个元素的单独表格是正确的选择。
答案 1 :(得分:1)
我会选择多个表,但不是更通用的命名表。
EG。表
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
现在,当您想要构建用户简历时,您可以直接访问用户简历表并获取所有详细信息,并使用属性名称等属性表进行加入。您可以更改attrs的顺序以便显示,轻松添加新的。根据需要设置它们。设置电话号码或其他数量的限制。扩展的可能性是无穷无尽的。
答案 2 :(得分:0)
绝对选择选项1.良好的数据库设计至关重要,良好的数据库设计需要规范化您的数据,这只有在您使用自己的表格对不同的实体进行建模时才有可能。
看看this article on database normalization,它对所涉及的概念进行了很好的讨论。