ホームページ > データベース > mysql チュートリアル > MySQL で複合主キーと単一列の外部キーを使用してテーブルをリンクするにはどうすればよいですか?

MySQL で複合主キーと単一列の外部キーを使用してテーブルをリンクするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-26 03:15:11
オリジナル
444 人が閲覧しました

How can I link tables with a composite primary key and a single-column foreign key in MySQL?

複合主キーと外部キーを使用したテーブルのリンク

SQL データベース設計の領域では、テーブルの主キーが構成されている状況に遭遇することがあります。複数の列で複合キーを形成します。外部キーを使用してこのようなテーブル間の関係を確立することは、ナビゲートする作業になる場合があります。

2 つのテーブル、'tutorial' と 'group' が関係する特定のシナリオを考えてみましょう。 「tutorial」テーブルには「beggingTime」、「day」、「tutorId」で構成される複合主キーがあり、「group」テーブルには自動インクリメントされる主キー「groupId」があります。疑問が生じます: これらのテーブルをシームレスに関連付けるにはどうすればよいでしょうか?

MySQL ドキュメントでは解決策が提供されています。「チュートリアル」で複合主キーを参照する「グループ」で外部キー マッピングを作成することが可能です。ただし、これには、「チュートリアル」の対応する主キーごとに 1 つずつ、「グループ」テーブルに追加の列を追加する必要があります。

たとえば、これらの列を追加し、「グループ」テーブルで外部キーを宣言すると、次のことが確立されます。関係:

ALTER TABLE `group` ADD COLUMN `beggingTime` time NOT NULL;
ALTER TABLE `group` ADD COLUMN `day` varchar(8) NOT NULL;
ALTER TABLE `group` ADD COLUMN `tutorId` int(3) NOT NULL;

ALTER TABLE `group` ADD FOREIGN KEY (`beggingTime`, `day`, `tutorId`) REFERENCES `tutorial`(`beggingTime`, `day`, `tutorId`);
ログイン後にコピー

このアプローチはパフォーマンスの観点から最適ではない可能性があることに注意してください。 SQL データベース エンジンは、単一の列で構成される主キー用に最適化されています。したがって、複合主キーではなく代理主キーを使用するように「チュートリアル」テーブルを再設計することを検討してください。この戦略は SQL の構造とよりよく一致するため、パフォーマンスが向上します。

以上がMySQL で複合主キーと単一列の外部キーを使用してテーブルをリンクするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート