13日目Mysqlマルチテーブル関係

1つ、外国の鍵

  • これで、「分類テーブル」と「商品テーブル」の2つのテーブルができました。製品がどのカテゴリに属する​​かを示すために、通常、製品テーブルに列を追加して、分類されたcid情報を格納します。この列は外部と呼ばれます。キー
    ここに写真の説明を挿入
    ここに写真の説明を挿入
  • このとき、
    「カテゴリカテゴリ」はプライマリテーブルと呼ばれ、cidはプライマリキーと呼ばれます。
    「Producttableproducts」が呼び出されます。テーブルから、category_idは外部キーと呼ばれます。

    プライマリテーブルのプライマリキーとセカンダリテーブルの外部キーを使用して、プライマリキーと外部キーの関係を説明します。これは、1対多の関係を示します。
  • 外部キーの特性:
    テーブルからの外部キーの値は、メインテーブルのプライマリキーへの参照です。
    テーブルの外部キーのタイプは、プライマリテーブルのプライマリキータイプと一致している必要があります
  • 外部キー制約を宣言する

構文:テーブルからテーブルを変更add [constraint] [外部キー名]外部キー(テーブル外部キーフィールド名から)はメインテーブル(プライマリテーブルのプライマリキー)を参照します。
ここで、[外部キー制約]は外部キー制約を削除するために使用されます。 「_fk」
は、テーブルからテーブルを変更して、外国のキーの外部キー名を削除することをお勧めします。

  • 外部キーを使用する目的:
    データの整合性確保するため

二、テーブルとテーブルの関係

テーブルとテーブルの関係は、テーブルとテーブルデータの関係です。

  1. 1対1の関係:(理解する)
  • 1対1でテーブルを作成できるため、実際の開発には多くのアプリケーションはありません。
  1. 1対多の関係:
  • 一般的な例:顧客と注文、カテゴリと商品、部門と従業員。
  • 1対多のテーブル作成の原則:スレーブテーブル(多側)にフィールドを作成し、フィールドはプライマリテーブル(側)の主キーを指す外部キーとして使用されます。
    ここに写真の説明を挿入
  1. 多対多の関係:
  • 一般的な例:学生とコース、製品と注文、人と役割。

  • 多対多の関係テーブル作成の原則:中央のテーブルに少なくとも2つのフィールドを持つ3番目のテーブルを作成する必要があり、これら2つのフィールドは、各側の主キーを指す外部キーとして使用されます(つまり、1つの多対多を2つの1対多に分割することです)
    ここに写真の説明を挿入

  • 両方のテーブルがマスターテーブルで、3番目のテーブルがスレーブテーブルであり、2つのフィールドがあり、どちらも外部キーです。

3、達成するためのテーブルを作成します

1. 1対多:カテゴリと商品

   #创建数据库
   create database web01;

   #使用数据库
   create web01;

   #创建分类表
   create table category(
      cid int primary key auto_increment, #主表的主键
      cname varchar(20)   #分类名称
   );

   #商品表
   create table products(
      pid int primary key auto_increment,
      name varchar(20),
      price double
   );

   #添加外键字段category_id
   alter table products add category_id int;

   #添加外键约束
   alter table products add foreign key(category_id) references     category(cid);

2.多対多:注文と商品

   #订单表
   create table orders(
      oid int primary key auto_increment,
      totalprice double #总计
   );

   #订单项表
   create table orderitem(
      oid int primary key, #订单id
      pid int primary key  #商品id
   );

   #订单表和订单项表的主外键关系
   alter table orderitem add foreign key(oid) references orders(oid);

   #商品表和订单项表的主外键关系
   alter table orderitem add foreign key(pid) references products(pid);

総括する:

  • データの追加:マスターテーブル:自由に追加;スレーブテーブル:マスターテーブルによって制限され、マスターテーブルに存在しないデータを追加することはできません。
  • データの削除:メインテーブル:データの行がスレーブテーブルに依存していて、スレーブテーブルで使用されている場合、削除できません。テーブルから:自由に削除します。
  • スレーブテーブルに関連するメインテーブルのデータを削除する場合は、次のようにし
    ます。1。マスタースレーブテーブルの制約関係を解除します
    。2。最初にメインテーブルに関連するスレーブテーブルのデータを削除し、次にメインテーブルのデータを削除します。 。

おすすめ

転載: blog.csdn.net/qq_43639081/article/details/108760282