1つ、外国の鍵
- これで、「分類テーブル」と「商品テーブル」の2つのテーブルができました。製品がどのカテゴリに属するかを示すために、通常、製品テーブルに列を追加して、分類されたcid情報を格納します。この列は外部と呼ばれます。キー。
- このとき、
「カテゴリカテゴリ」はプライマリテーブルと呼ばれ、cidはプライマリキーと呼ばれます。
「Producttableproducts」が呼び出されます。テーブルから、category_idは外部キーと呼ばれます。
プライマリテーブルのプライマリキーとセカンダリテーブルの外部キーを使用して、プライマリキーと外部キーの関係を説明します。これは、1対多の関係を示します。 - 外部キーの特性:
テーブルからの外部キーの値は、メインテーブルのプライマリキーへの参照です。
テーブルの外部キーのタイプは、プライマリテーブルのプライマリキータイプと一致している必要があります - 外部キー制約を宣言する
構文:テーブルからテーブルを変更add [constraint] [外部キー名]外部キー(テーブル外部キーフィールド名から)はメインテーブル(プライマリテーブルのプライマリキー)を参照します。
ここで、[外部キー制約]は外部キー制約を削除するために使用されます。 「_fk」
は、テーブルからテーブルを変更して、外国のキーの外部キー名を削除することをお勧めします。
- 外部キーを使用する目的:
データの整合性を確保するため
二、テーブルとテーブルの関係
テーブルとテーブルの関係は、テーブルとテーブルデータの関係です。
- 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。最初にメインテーブルに関連するスレーブテーブルのデータを削除し、次にメインテーブルのデータを削除します。 。