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

时间:2016-08-09 08:14:06

标签: mysql

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

我想开始,因为我的意思是继续,所以想知道什么是最好的结构MySQL中的以下类型的数据。

如果我有关于具有以下字段的人的各种条目; ID,姓名,DateOfBirth,电话号码。如果我将这些信息作为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的所有条目并返回它们。
  4. 我确信必须有其他方法;所以,如果最好的方法不是上述方法之一,请告诉我。

    亲切的问候。

1 个答案:

答案 0 :(得分:1)

选项#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);