はじめに: すべてのデータを 1 つのテーブルに保存することのデメリット
上記の問題を解決するには、データを格納するための複数のテーブルが必要です。 テーブル内のレコード間の関係には、1 対多、多対多、1 対 1 の 3 種類があります。 テーブル間の関係を扱うには、FOREIGN KEY を使用します。 多対1の関係:テーブル間の関係を見つけるルーチン 例: 従業員テーブル: emp テーブル 部門: dep テーブル パート1:
はいの場合は、パート2に進む必要があります パート2:
最終的な翻訳結果: 複数の部門に同じ従業員を含めることができますか? そうでない場合、emp と dep の関係は一方向の多対 1 のみであると判断できます。 これを実現するにはどうすればよいでしょうか? 外部キーはどのような効果をもたらすのでしょうか? 制約1: テーブルを作成するときは、まず関連するテーブル dep を作成してから、関連するテーブル emp を作成する必要があります。 テーブル dep を作成します( id int 主キー auto_increment, dep_name char(10)、 dep_comment 文字(60) ); テーブルempを作成します( id int 主キー auto_increment, 名前 char(16)、 性別 enum('男性','女性') NULL ではない デフォルト '男性'、 dep_id int, 外部キー(dep_id)はdep(id)を参照します ); 制約2: レコードを挿入する場合、まず関連するテーブル dep を挿入してから、関連するテーブル emp を挿入する必要があります。 dep(dep_name,dep_comment) の値に挿入する (「教育部門」、「学生の指導とコースの指導」)、 (「広報部」、「広報危機への対応」) (「技術部」、「開発プロジェクト、研究技術」) emp(name,gender,dep_id) の値に挿入する ('monicx0','男性',1), ('monicx1','男性',2), ('monicx2','男性',1), ('monicx3','男性',1), ('リリ','女性',3); 制約 3: 更新と削除の両方において、関連付けられているものと関連付けられているものの関係を考慮する必要があります。 解決: 1. 最初に関連テーブルempを削除し、次に関連テーブルdepを削除して再構築の準備をします。 2. 再構築:新しい機能の追加、同期更新、同期削除 テーブル dep を作成します( id int 主キー auto_increment, dep_name char(10)、 dep_comment 文字(60) ); テーブルempを作成します( id int 主キー auto_increment, 名前 char(16)、 性別 enum('男性','女性') NULL ではない デフォルト '男性'、 dep_id int, 外部キー(dep_id)はdep(id)を参照します 更新カスケード 削除カスケード ); これを修正します: 結果は次のとおりです。 今すぐ削除します: 結果は次のとおりです。 多対多の関係:2 つのテーブルのレコード間には双方向の多対 1 の関係があり、これを多対多の関係と呼びます。 どうやってそれを達成するのでしょうか? 左側のテーブルの ID であるフィールド外部キーと、右側のテーブルの ID であるフィールド外部キーを持つ 3 番目のテーブルを作成します。 テーブル作成者( id int 主キー auto_increment, 名前文字(16) ); テーブルブックを作成( id int 主キー auto_increment, bname char(16)、 価格 int ); 著者(名前)の値に挿入 ('monicx1')、 ('monicx2')、 ('モニックx3') ; book(bname,price)の値に挿入する (『入り口から墓場までのパイソン』、200)、 (『入所から死に至るまでのリウンクス』400) (『ジャワの入り口から墓場まで』、300)、 (『PHP 入場から墓場まで』、100) ; #3番目のテーブルを作成します: テーブルauthor2bookを作成します( id int 主キー auto_increment, 著者ID int, 書籍ID int, 外部キー(author_id)はauthor(id)を参照します。 更新カスケード 削除カスケードでは、 外部キー(book_id)はbook(id)を参照します。 更新カスケード 削除カスケード ); author2book(author_id,book_id) の値を挿入する (1,3) (1,4) (2,2) (2,4) (3,1) (3,2) 1 対 1 の関係では、左側のテーブルのレコードは右側のテーブルのレコードに一意に対応し、その逆も同様です。 顧客テーブルを作成( id int 主キー auto_increment, 名前 char(20) が null ではない、 qq char(10) ヌルではない、 電話番号(16)がnullでない ); テーブル学生を作成( id int 主キー auto_increment, class_name char(20) が null ではない、 customer_id int unique, #このフィールドは一意である必要があります。外部キー (customer_id) は顧客 (id) を参照します。#この時点で、外部キーフィールドは一意であることが保証されている必要があります。 削除カスケード 更新カスケード ); MySQL 外部キー (FOREIGN KEY) の使用に関する詳細な事例については、これで終了です。MySQL 外部キー (FOREIGN KEY) の使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: レスポンシブ Web デザインが価値のない 5 つの理由
>>: Docker 経由で wsl の tar ファイルを作成する方法
目次1. フロントエンドルーティングの実装原則2. vue-Routerの基本的な使い方2.1. イ...
私は、WinForm と HTML5 を組み合わせた小さなものを作りたいだけなのですが、突然、そこに...
最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...
なお、この記事では、単に 20.04 ソースに変更する方法を説明するのではなく、20.04 に基づい...
目次序文事例: JD.com の虫眼鏡効果の模倣オフセットシリーズクライアントシリーズスクロールシリ...
目次プロジェクトでデータベースを操作する3つのステップデータベースを操作するための具体的な手順1: ...
1. データを初期化する `test_01` が存在する場合はテーブルを削除します。 テーブル「te...
html4:コードをコピーコードは次のとおりです。 <フォーム> <p>&l...
コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...
承認とは、ユーザーに特定の権限を付与することです。たとえば、新しく作成したユーザーに、すべてのデータ...
インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...
デフォルトでは、ヘッダーの幅と高さはコンテンツに応じて自動的に調整されます。ヘッダーの幅と高さを手動...
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...
1. 前述の通り数年前、Linux ドライバーのコードを読んでいたときにこのマクロを見ました。長い間...
目次VMware バープスイート1. 仮想マシンイメージとVMwareのインストールと使用2. 仮想...