php - 最佳数据库存储方式

标签 php mysql database normalization organization

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

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

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

第一种选择易于维护和编码,而第二种选择似乎可以大大减少备份和加载时间以及数据库维护。也许有更好的方法?你会推荐什么?

最佳答案

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

例如。表格

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

现在,当您想要构建用户简历时,您可以直接进入用户简历表并获取他们的所有详细信息,并加入属性表以获取属性名称等。您可以更改属性的显示顺序,轻松添加新的。根据需要设置它们。限制电话号码的数量或其他内容。扩展的可能性是无限的。

关于php - 最佳数据库存储方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208161/

相关文章:

php - 使用 PHP 将 XML 结构插入为另一个 XML 元素的子元素

php - 转换从 mysql 数据库中提取的陌生字符

javascript - 如何使 for 循环迭代从数据库结果添加到数组的附加元素?

mysql - 我应该使用什么类型的数据库?

javascript - 我需要将表格中的数据提取到 JavaScript 图表中

php - 如何获得总计为特定值的行的随机组合?

php - 繁重的处理导致站点不可用

MySQL设计多导出产品

mysql - 如何在仍然使用索引的同时在 MySQL 中执行与 MINUS 相同的操作?

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column 'table_name.id'