はじめに: すべてのデータを 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日10万PV以上)、当然MySQLがボトルネックにな...
知らせ! ! ! uid が (a,b,c,null) に含まれないユーザーから * を選択します。...
目次1. scrapy_splash とは何ですか? 2. scrapy_splashの役割3. s...
1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...
1. MySQLサービスをシャットダウンする# service mysqld stop 2. rpm...
背景: MySQL では、レベルに制限がある場合、たとえば、ツリーの最大深度を事前に決定できる場合、...
履歴コマンドを表示し、指定されたコマンドを実行します owen@owen:~/owen/softwa...
この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...
このチュートリアルでは、Linux ターミナルでドメイン名またはコンピューター名の IP アドレスを...
<label> タグは、入力要素のラベル (タグ) を定義します。ラベル要素はユーザーに...
HTML でよく使用されるエスケープ文字をまとめると次のようになります。 改行...
まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...
サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテ...
この記事の例では、ボタンをクリックすることで4桁のランダムな検証コードを生成するjsの具体的なコード...
目次1. jQueryの紹介2. jQueryセレクター2.1 5つの基本セレクタ2.2 4種類の関...