IX。データベース(マルチテーブルが3人の関係の外部キーバリアントを照会)

外側のキー(複数表関係)

1.外部キー(外部キー)

外部キー制約があるため、2つのテーブルを作成するには、3つの関係を形成するために:

多対
-オン

2、かどうかを確認するために2つのテーブル間の関係を理解することに焦点を当て

ステップ解析:
 1、角度を見つけるためにテーブルを放置し
、左右のテーブルフィールドにテーブルの外部キーフィールド、それがない場合、左テーブルは、権利テーブルレコードに複数のレコードに対応することができるかどうかを(通常ID )

2、及びテーブルの右角度見えるスタンド
がない場合は、右の表は、記録レコード左テーブルの複数に対応することができるかどうか、外部キーフィールド右表の左テーブルのフィールド(通常ID) 

3.概要:多対:
唯一のステップ1が成立した場合、左のテーブルは多くから右テーブルである
唯一のステップ2が成立した場合、右の表は、多対左テーブルである

#1 -many 
同時にステップ1及び2は、設定している場合ときは、双方向の多対多のものの2つのテーブル間の関係を保存するために2つのテーブルのテーブル間の関係を定義する必要があることを証明する二つの特別な

-オン: 
1と2が確立されていない場合、およびこれは、左テーブルが一意記録右テーブル、及びその逆に相当します。この状況は左表UNIQに右表の外部キー、外部キーフィールドに基づいて、つまり、左のテーブルに簡単です

3. 3つの関係表

(1 )本との出版社

  の多くの(または多くを):プレスは本を公開することができます。図言葉。

  連想:外部キー

                                                                                 

表を押して作成します(
    ID int型主キーAUTO_INCREMENTを、
    名前VARCHAR( 20は
); 

表ブック(作成
    ID int型主キーAUTO_INCREMENT、
    名前VARCHARを( 20は)、
    press_id int型ないヌル、
         外部キー(press_id)fk_book_press制約が参照するプレス(ID)
    ON DELETE CASCADEを
    更新カスケードON 
); 

最初は、関連テーブルのレコードを挿入する
INSERT INTOプレス(名)の値北京出版業界の鉱山)、 人の音楽は、プレス音しませんでした)、 " IPRなしプレスによって"
; 

そしてさらに記録対応テーブルに挿入
INSERT INTO帳(名前、press_id)の値' 9つの正マジック'、1 )、 ' 人的資源の構成'、2 )、 ' 九阴白骨爪'、2 ) 、' マジック'、3 )、 ' 顔にドラゴン10の平手打ち'、2 )、 ' 聖なるキヤノン'、3 
; 

クエリ結果:
MySQLの > SELECT * からブック;
 + ---- + --- + ---------- + --------------
|上記ID |名前| press_id | 
| 3 |知的財産無用プレス|
----------------- ---------- + ---- + + + 
| 1 |ナインヤンマジック| 1 | 
| 2 | jiuyin真2 | |によって
| 3 |九阴白骨爪| 2 | 
| 4 |マジック| 3 | 
2 | | | 5 |ドラゴン10平手打ち
3 | | | 6 |聖なるキヤノン
+ ---- + --- + ---------- + --------------  SET(0.00 秒)

のMySQL > SELECT * から押し、
 + ---- + ---- + ---------------------------- 
|上記ID |名| 
+ ---- + ---------- + ---------------------- 
| 1 |北京工業用鉱山プレス| 
| 2 |人の音楽は、ボタンを押して音しませんでした| 
+ ---- + - + ------------------------------  SET(0.00 秒)

書籍や出版(多対)

 

 

 

(2 関係)や書籍の著者は

  -many:1本の著者はこの本は、双方向対多、多対つまり、複数の著者を持つことができ、複数の本を書くことができます。図言葉。

  連想:外部キー +新しいテーブル

                                                                   

多対している作成の話の前に関係の著者は、テーブルを関連付けられているテーブル、本のテーブルを作成し
、表の作成者(作成
    上記のid int型主キーAUTO_INCREMENT、前述
    名VARCHAR( 20 
); 
この表が格納するテーブルと帳テーブル作者を関係、2件の検索の間の関係は、その上に、このテーブルを照会
テーブルauthor2book(作成
    上記のid int型ではないnullをUNIQUE AUTO_INCREMENT、
    AUTHOR_IDのint型ではないnullで、
    book_id int型ではないnullで、
    制約fk_author外部キー(AUTHOR_ID)参考文献の著者(上記のID)
    、ON DELETEカスケードは、
    ON UPDATE CASCADEを、
    制約Aは、外部キー(book_id)参考書籍(上記ID言及した)fk_book 
    ON DELETE CASCADEを
    、ON UPDATE CASCADEを
    キープライマリ(AUTHOR_ID、book_id)
); 
#の4の挿入、IDターンが配置された 
著者(名前)の値(INTO INSERTを' エゴン')、(' アレックス')、(' wusir ')、(' yuanhao ' ); 

各著者の傑作
エゴン:9つのヤンマジック、人的資源の構成、九阴白骨爪、魔法、ドラゴン10平手打ち聖なるキヤノン
アレックス:9つのヤン魔法、神聖なキヤノンの
wusir:魔法、ドラゴン10スラップ、ヒマワリキヤノンは
yuanhao:9 yangshengongの

対応するデータテーブルに挿入がauthor2book 

INSERT INTOのauthor2book(AUTHOR_ID、book_id)値 1,1 )、  1,2 )、  1,3 )、  1,4を)、 (
)、 1,5 
| 5 | 1 | 5 |)、  1,6 )、  2,1 )、  2,6 )、  3,4 )、  3,5 )、  3,6 )、  4,1 
; 
#は、今author2bookを確認することができ対応する著者と書籍の関係 
のMySQL> SELECT * からauthor2book;
 + ---- + ----------- + --------- + 
|上記ID | AUTHOR_ID | book_id | 
---- + ----------- + --------- + + 
| 1 | 1 | 1 | 
| 2 | 1 | 2 | 
| 3 | 1 | 3 | 
| 4 | 1 | 4 | 
| 7 | 2 | 1 |
。。。| 6 | 1 | 6 |
| 8 | 2 | 6 | 
| 9 | 3 | 4 | 
| 10 | 3 | 5 | 
| 11 | 3 | 6 | 
| 12は| 4 | 1 | 
+ --------- + ---- - + --------- +  SET(0.00 秒)

(多くの多くの)著者や書籍の関係

 

 

 

(3 )ユーザーとブログ

  -オン:ユーザーは一対一の関係というのブログにサインアップすることができます。図言葉

  に関連する方法:外部キー + UNIQUE

                                              

#例如: 一个用户只能注册一个博客

#两张表: 用户表 (user)和 博客表(blog)
# 创建用户表
create table user(
    id int primary key auto_increment,
    name varchar(20)
);
# 创建博客表
create table blog(
    id int primary key auto_increment,
    url varchar(100),
    user_id int unique,
    constraint fk_user foreign key(user_id) references user(id)
    on delete cascade
    on update cascade
);
#插入用户表中的记录
insert into user(name) values
('alex'),
('wusir'),
('egon'),
('xiaoma')
;
# 插入博客表的记录
insert into blog(url,user_id) values
('http://www.cnblog/alex',1),
('http://www.cnblog/wusir',2),
('http://www.cnblog/egon',3),
('http://www.cnblog/xiaoma',4)
;
# 查询wusir的博客地址
select url from blog where user_id=2;

用户和博客(一对一)

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/Sup-to/p/11243363.html