はじめに: すべてのデータを 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 ファイルを作成する方法
CSSスタイルとHTMLタグ要素を使用するさまざまな HTML タグに点線の境界線を追加するために、...
最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...
この記事の例では、参考のためにVueカスタムポップアップ効果の具体的なコードを共有しています。具体的...
インデックス集約を使用しない MySQL クエリご存知のとおり、インデックスを追加することはクエリ速...
目次1. 結論から始めましょう2. キーの役割2.1 例2.2 上記の例を修正する2.3 例を再度修...
場合によっては、ページにプロンプト ボックスやバブル ボックスが必要になることがあります。CSS...
データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...
目次MySQL マスター スレーブ レプリケーション環境を設定する場合、マスター データベースとスレ...
目次1. Dockerをインストールする2. GitLabをインストールする3. GitLabを初期...
1. jsonオブジェクトをjson文字列に変換し、文字列が「{}」であるかどうかを判断します。 v...
目次設定を追加json 構成レイヤー構成の表示論理層の構成位置追跡をオンにする録音を開始開始座標を決...
目次1. スイッチ2. whileループ3. Do/Whileループ3. 文字列を数値に変換する1....
故障したストレージ ドライブからデータを救出する場合でも、アーカイブをリモート ストレージにバックア...
目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...
目次実際の戦闘プロセスまずは主なコマンドと詳細を一つずつ説明しましょう起動が成功したかどうかを確認す...