我建立了一个公司,将用户添加到我的数据库中,我想要有两个表。一个表跟踪用户知道的语言,另一个表跟踪用户使用的设计软件。
我是否会创建3个表(配置文件,语言,软件),每个表都包含一个I' d字段,当我添加用户时,为每个表添加一行?
答案 0 :(得分:2)
当您开始添加多个多对多关系时,您需要更多表格来链接'信息在一起。以下是解决问题的方法:
注意这些ID都应该是唯一的索引列。考虑使用AUTO_INCREMENT
。
表1 包含用户的个人资料信息
| ProfileID |UserInfo |
|=======================|
| 0 | Info |
|-----------------------|
| 1 | Info2 |
|-----------------------|
表2:存储可能的语言
|LanguageID |LanguageName|
|========================|
| 50 | Python |
|------------------------|
| 51 | Java |
|------------------------|
依旧......
表3:存储配置文件链接到语言
|ProfileID |LanguageID |
|========================|
| 0 | 50 |
|------------------------|
| 0 | 51 |
|------------------------|
| 1 | 50 |
|------------------------|
每当您想要为用户的个人资料添加语言时,您都需要在此表格中创建一个条目。
您将为用户知道的软件添加两个表。一个表用于所有可能的软件类型,另一个用于存储链接。
当您想要检索信息时,您将执行如下操作:
SELECT * FROM Table3
LEFT JOIN Table2
ON Table3.LanguageID = Table2.LanguageID
WHERE ProfileID = [TheProfileIDToSearch]
此结构使用JOIN将表链接在一起,以便一次从多个表中返回信息。这是W3Schools关于SQL JOINS
的快速解释。