我最近遇到了 MySQL 本身和 MySQL 中的 Composite Primary Keys 的主题,特别是它如何有用以及它的优缺点是什么?
我想玩这个,所以我以这种方式创建了三个表:
CREATE TABLE person(
personId INT(11) NOT NULL,
personName VARCHAR(20) NOT NULL,
PRIMARY KEY(personId)
)
CREATE TABLE language(
languageId INT(11) NOT NULL,
languageName VARCHAR(20) NOT NULL,
PRIMARY KEY(personId)
)
CREATE TABLE personLanguage(
personId INT(11) NOT NULL,
languageId INT(11) NOT NULL,
description VARCHAR(20) NOT NULL,
PRIMARY KEY(personId, languageId),
FOREIGN KEY (personId) REFERENCES person(personId) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (languageId) REFERENCES language(languageId) ON UPDATE CASCADE ON DELETE CASCADE
)
我可以直接将数据插入到人员和语言表中,我的问题是:
对于 personLanguage 表,我是否只需要插入描述列,而其他列是自动引用的,还是我还需要在 personLanguage 表中插入其他两列的值
是否有可能在插入其他两个表中的数据后立即自动更新 personLanguage 表中的 personId 和 languageId personLanguage 表中的两列
如何获取三个表相关的数据,例如我需要知道 personId=1 的人说哪种语言?它也是使用连接的直接查询还是有其他方法可以做,因为我使用复合主键
很多问题困扰着我,我真的找不到一个完整的工作示例来检查使用复合主键的确切利弊。如果有人可以使用我的示例详细说明这一点,那将非常有帮助。
我知道我已经问了一些基本的,一些毫无意义的问题,但请耐心等待我并就这个话题提出一些好的看法