Недавно я столкнулся с самим MySQL и темой Composite Primary Keys в MySQL, особенно насколько это полезно и каковы его плюсы и минусы из этого site
Я хотел играть с этим, поэтому я создал три таблицы таким образом:
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, а также
-
Есть ли возможность автоматически обновлять personId и languageId в таблице personLanguage, как только будут вставлены данные в других двух таблицах, насколько я знаю, когда какое-либо обновление/удаление выполняется на личном или языке таблицы он отражает то же самое в двух столбцах в таблице personLanguage
-
Как получить данные, относящиеся к трем таблицам, например, мне нужно знать, на каком языке говорит человек с personId = 1? Это также прямой запрос с использованием объединений или есть какой-то другой способ сделать, поскольку я использую составные первичные ключи
У меня много вопросов, и я не мог найти целый рабочий пример, чтобы проверить точные плюсы и минусы использования составных первичных ключей. В случае, если кто-то может это сделать, используя мой пример, будет очень полезно.
Я знаю, что у меня есть несколько вопросов, некоторые из которых не имеют никакого смысла, но, пожалуйста, несите меня и проливайте хороший свет на эту тему