はじめに: すべてのデータを 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. MySQL の場合、サブクエリと結合の使用は推奨されま...
親ディレクトリを指定する方法../ はソース ファイルの親ディレクトリを表し、../../ はソース...
序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...
1. フォントと文字表示の関係左側と右側の鋭角部分は Songti フォントで表示されます: &l...
関連記事:初心者が学ぶ HTML タグ (1)初心者は、いくつかの HTML タグを理解することで ...
この記事では、画像フォロー効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...
前回の記事では、Oracle でピボット テーブルを実装するいくつかの方法を紹介しました。今日は、同...
目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...
目次質問解決質問この問題には多くの理由があるようです。私の問題は、パラメータ付きのURLを更新できな...
CSSの背景プロパティの値背景色背景画像背景繰り返し背景位置背景添付複合プロパティ: 背景: ba...
1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...
最近、ブログのアップグレードを始めました。テンプレートを変更する過程で、CSS スタイルシートを書き...
1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...
アプリケーションシナリオ多くの場合、Linux サーバーに tomcat や nginx などのソフ...
証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...