はじめに: すべてのデータを 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 ファイルを作成する方法
この記事では、Vueを使用して天気コンポーネントをロードする方法を参考までに紹介します。具体的な内容...
一般的には、左側にメニューがあった後、ページの上部に履歴タブ メニューを追加する必要があります。他の...
#docker 検索#docker プルポーター1. イメージを取得した後、中国語パッケージをダウン...
UNION演算子の使用union : 2 つ以上の SELECT ステートメントの結果を 1 つの...
1. ワニスの概要1. ワニスの紹介Varnish は、新しいソフトウェア アーキテクチャを使用し、...
1. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など)コード値...
目次序文プロジェクト設計後部フロントエンドプロジェクトを実行する質疑応答序文これまでの API 開発...
目次1. 配列の分解2. オブジェクトの分解3. 不完全な解体4. 分割代入を使用して変数交換を実装...
目次背景提供/注入共有状態の抽出データを提供するデータの挿入まとめ反応的な共有状態の抽出共有状態の使...
今日 Docker コンテナを作成したとき、誤ってイメージの名前を間違って入力しました。その結果、コ...
JavaScriptゲームSnakeの実装アイデア(完全なコード実装)を参考までに説明します。具体...
関連する依存関係をインストールするnpm i lib-flexible --save npm i p...
1. 公式ウェブサイトからMySQLをダウンロードします。 これが私たちが探しているものです、win...
イベントとは、クリック、マウスオーバー、ページの読み込み後にトリガーされる読み込みイベントなど、ユー...
この記事の例では、ドロップダウンリスト選択ボックスを実装するためのJavaScriptの具体的なコー...