首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳数据库存储方法

问最佳数据库存储方法
EN

Stack Overflow用户
提问于 2013-01-08 04:21:40
回答 3查看 409关注 0票数 3

我的软件(用PHP编写)允许用户使用HTML表单为他们的“简历”输入信息。这个“简历”有几个不同的元素,包括用户的教育程度、工作经历、奖励、求职信等等。每个元素在包含的数据中都是独一无二的。例如,教育需要诸如毕业年份、学校名称、学位等领域。

我的问题是,在mySQL数据库中存储简历数据的最佳方法是什么?我目前的选择是:

  • 为每个简历元素创建单独的表(resume_education、resume_awards等)
  • 对简历中的所有元素使用单个表,并以多维数组的形式插入元素数据。(例如:一张保存简历数据的表格,列有教育,工作历史,等等)。教育或类似领域的数据将被编译成一个数组,如“grad_year”=>(1990年)、“school_name”(“=>”“Cool School"),或者类似于使用指示字符表示一个新字段的数据。

第一种选择提供了维护和编码的便利,而第二种选择似乎大大减少了备份和可能的加载时间以及数据库维护。也许有一种更好的方法?你有什么建议?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-08 04:38:03

我会选择多个表,但不会将表命名为更通用的表。

例如:表格

代码语言:javascript
复制
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

现在,当您想要构建一个用户简历时,您可以直接进入用户简历表,获取他们的所有细节,并加入属性名称的属性表等等。您可以更改显示的吸引顺序,很容易添加新的。请根据需要设置它们。限制电话号码什么的。扩展的可能性是无限的。

票数 1
EN

Stack Overflow用户

发布于 2013-01-08 04:36:44

备选案文2显然是错误的。如果您不打算将数据分解为行和列,并且至少遵循数据规范化的前两条规则,那么就没有理由使用关系数据库(您可以在文件系统文件夹中使用XML文档)。

备选案文1可能是最正确的。如果所有的简历中都有所有的元素,并且简历中没有重复的元素,那么您实际上可以为整个简历创建一个表,每个字段都在它自己的列中。因为我不认为这些条件得到满足(例如,工作历史和教育应该是可重复的元素),那么每个元素单独的表才是正确的选择。

票数 1
EN

Stack Overflow用户

发布于 2013-01-08 04:31:42

好的数据库设计是至关重要的,良好的数据库设计需要规范化您的数据,只有当您用自己的表建模不同的实体时,这才是可能的。

看看关于数据库规范化的文章,它很好地讨论了所涉及的概念。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14208161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档