当单位可以为字段设置多个值时,如何限制MySQL表中的列数?

时间:2018-04-30 20:43:05

标签: php mysql database

假设分析单位是一个人。我希望这个名字有一列,他或她说的语言有另一列。有些人说多种语言,有些人只说一种语言。但是,我不希望我的表看起来像名字,语言1,语言2,语言3,语言4,语言5,因为这会产生很多空单元格。理想情况下,我只有2列,但我知道不可能将多个值推送到单个单元格中。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您有多对多关系,因此您所寻找的内容称为bridging table (or associative entity)

你想要的是一个名为people的表,代表个人,另一个名为languages的表用于每种语言。每个人和每种语言在各自的表格中分别排成一行。

people

ID | Name
----------
1  | Aaron
2  | Bob
3  | Clyde

languages

ID | Name
------------
1  | English
2  | French
3  | Spanish

然后你需要使用第三个表(比如spoken_languages),它使用外键将两个表绑定在一起:

person_id | language_id
-----------------------
1         | 1
2         | 1
2         | 2
3         | 3

在上面的例子中:

  • 亚伦只会说英语。
  • Bob说英语和法语。
  • 克莱德只说西班牙语。