mysql - 在 mySQL 中存储多层数据的最佳实践是什么?

标签 mysql

过去我只使用 HTML、CSS 和 JavaScript 进行网站开发;但还没有真正接触过 PHP 或 MySQL,所以现在正在自学。

我想开始,因为我的意思是继续,所以想知道关于在 MySQL 中构建以下类型数据的最佳结构的一般意见。

如果我有关于具有以下字段的人的各种条目; ID、姓名、出生日期、电话号码。如果我将此信息存储为 JavaScript 中每个条目的变量,我会将 4 个值作为一个数组,电话号码条目是所有电话号码数组中的一个数组。示例:

["355","John","12/12/2016",["07123456789","07987654321"]]

在 MySQL 中显然没有“数组”数据类型;所以我想知道您个人如何在 MySQL 中以与上述格式类似的格式存储数据;根据我目前对 MySQL 的理解,我看到的选项如下。

  1. 有 4 个值的 4 列,有一个电话号码数组的字符串,一旦从数据库中检索到,就可以将其拆分成一个数组。
  2. 最初有 4 列,然后当没有空间容纳新电话号码时,数据库会自动添加一个新列(因此,如果任何条目的电话号码最多为 4,则您d 有 ID,Name,DateOfBirth,Telephone1,Telephone2,Telephone3,Telephone4 作为列)。
  3. 在数据库中有一个单独的电话号码表,每个号码一个条目存储在列 ID 和电话号码中,ID 指的是原始表中的 ID。然后,当我需要条目的电话号码时,我会运行一个查询,搜索所有具有该 ID 的条目并返回它们。

我敢肯定肯定还有其他方法;因此,如果最佳方法不是上述方法之一,请告诉我。

亲切的问候。

最佳答案

选项 #3 将是标准规范化关系数据库的存储方式。

您的表格可能看起来像(例如):

create table Person (
  `ID` int auto_increment primary key, 
  `Name` varchar(255), 
  `DateOfBirth` date);

create table Telephone (
  `ID` int, 
  `Number` varchar(20), 
  foreign key (`ID`) references Person(`ID`) on delete cascade);

关于mysql - 在 mySQL 中存储多层数据的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845418/

相关文章:

在 phpMyAdmin 中返回的 node-mysql 中缺少 MySQL 查询结果

MySQL 日期不等于当前年份

mysql - 排序规则与嵌套选择的非法混合

mysql - 如何在SQL中按特定组排序

mysql find_in_set匹配2列

服务器版本的 MySQL 语法错误

php - 用laravel在mysql中插入多维数组json

php - 如何删除重复的内容?

mysql - 设置从 Microsoft SQL Server Management Studio 到 MySQL Amazon Web Services MySQL RDS 的链接服务器连接?

PHP/CSS - 检测 nl2br 中断