複合主キーと外部キーを使用したテーブルのリンク
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 サイトの他の関連記事を参照してください。