MySQL外部キー使用の詳細

1642 ワード

最近、実験室管理システムを作り始めましたが、いくつかのテーブルに分けて保存しているので・テーブル間の関連性を維持したい・・MySQLの外部キーを検討しました.
(1)外部キーを使用できるのはInnoDBタイプのテーブルのみで、mysqlのデフォルトはMyISAMです.このタイプでは外部キー制約はサポートされていません
(2)外部キーの利点:2つのテーブルを関連付け、データの一致性を保証し、いくつかのカスケード操作を実現することができる.
(3)外部キーの役割:
外部キー・テーブルに格納されているデータを制御することを主な目的として、データの一貫性、整合性を維持します.2つのテーブルを関連付けると、外部キーは外観のカラムの値のみを参照できます.
(4)外部キーを確立する前提:
2つのテーブルはInnoDBテーブルタイプでなければなりません.外部キー関係を使用するドメインはインデックス型(Index)である必要があります.外部キー関係を使用するドメインは、データ型と類似している必要があります.
(5)作成する手順
プライマリ・キーの指定:foreign key(カラム名)
参照外部キーキー:references(外部キー列名)references
(6)イベントトリガ制限:on deleteとon update、パラメータcascade(外部キーの変更に従う)、restrict(外部キーの変更を制限する)、set Null(空の値を設定する)、set Default(デフォルトを設定する)、[デフォルト]no action
(7)例
outTableプライマリキーidタイプint
外部キーを含むテーブルを作成するには、次の手順に従います.
 
  
create table temp(
id int,
name char(20),
foreign key(id) references outTable(id) on delete cascade on update cascade);

説明:id列を外部キーとして外表outTableのid列を参照する外部キーの値を削除本表の対応する列ふるいを削除外部キーの値を変更本表の対応する列値を変更する.
 
  
create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade on update cascade);

欠点:MySQLを最適化するときにクエリーキャッシュ、インデックスキャッシュのような最適化はInnoDBタイプのテーブルには役に立たない.また、データベース全体のアーキテクチャで使用される同期レプリケーションもInnoDBタイプのテーブルには有効ではない.データベースのコアのテーブルのような商品テーブルはできるだけ外部キーを使用しないでください.同期が必ず商品ライブラリを同期しなければならない場合は、外部キーを加えても通じません.最適化もそれに役に立たないので、損をしなければなりません.外部キーを作る目的はデータの完全性を保証することです.プログラムを通じて、外部キーではなく、この目的を実現してください.覚えておいてください.
以上が本文のすべてですが、お好きになってください.
文章を友達に共有したり、コメントを残したりするのに少し時間をかけてください.私たちは心からあなたの支持に感謝します!