私は最近MySQL自体に出会い、MySQLの複合主キーのトピック、特にそれがどのように役立つか、そしてこのサイトからの長所と短所は何ですか?
私はそれで遊びたかったので、この方法で3つのテーブルを作成しました。
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テーブルの場合、説明列のみを挿入する必要がありますが、他の列は自動的に参照されますか、それとも他の2つの列の値もpersonLanguageテーブルに挿入する必要がありますか?
他の2つのテーブルのデータが挿入されるとすぐに、personLanguageテーブルのpersonIdとlanguageIdを自動的に更新する可能性はありますか? personLanguageテーブルの2つの列
3つのテーブルに関連するデータを取得する方法。たとえば、personId = 1の人が話す言語を知る必要がありますか?結合を使用した簡単なクエリでもありますか、それとも複合主キーを使用しているので他の方法がありますか?
頭を悩ませている質問がたくさんあり、複合主キーを使用することの正確な長所と短所を確認するための実用的な例を実際に見つけることができませんでした。誰かが私の例を使ってこれを詳しく説明できれば、本当に役に立ちます。
ある種の基本的な質問をしたことは知っていますが、意味のない質問もありますが、このトピックに少し気を配ってください。