ホームページ >データベース >mysql チュートリアル >MySQL テーブル間の関係は何ですか?テーブル間のさまざまな関係

MySQL テーブル間の関係は何ですか?テーブル間のさまざまな関係

青灯夜游
青灯夜游転載
2018-10-27 17:14:166396ブラウズ

この記事の内容は、MySQL テーブルとテーブル?の関係を紹介することです。テーブル間のさまざまな関係。困っている友人は参考にしていただければ幸いです。

テーブル間の関係

表1 foreign key 表2
则表1的多条记录对应表2的一条记录,即多对一

利用foreign key的原理我们可以制作两张表的多对多,一对一关系多对多:
    表1的多条记录可以对应表2的一条记录
    表2的多条记录也可以对应表1的一条记录

一对一:
    表1的一条记录唯一对应表2的一条记录,反之亦然

分析时,我们先从按照上面的基本原理去套,然后再翻译成真实的意义,就很好理解了

1. まず関係を決定します

2。多側の関連フィールド

1 対多

多対 1 または 1 対多 (複数のレコード)左側のテーブルのレコードは右側のテーブルの唯一のレコードに対応します)

注意事項:

  • 1. 最初に関連テーブルを作成して、フィールドが確実に一致するようにします。関連テーブルの は一意である必要があります。

  • 2. 関連テーブルを作成する場合は、関連フィールドを複製する必要があります。

例:

これは、書籍と出版社の例です。書籍は出版社に関連付けられている必要があります (複数の書籍を関連付けることができます)。 1 社から出版されます (出版社が多数の本を出版することもできます)。

責任のある人と付き合う人は、その基準に従わなければなりません。

  • #テーブルの作成

  • 书要关联出版社
    被关联的表
    create  table press(id int primary key auto_increment, name char(20));
    
    关联的表
    create table book(
    book_id int primary key auto_increment,
    book_name varchar(20),
    book_price int,
    press_id int,
    constraint Fk_pressid_id foreign key(press_id) references press(id)
    on delete cascade
    on update cascade
    );
  • データの挿入

  • insert into press(name) values('新华出版社'), ('海燕出版社'), ('摆渡出版社'), ('大众出版社');
    
    insert into book(book_name,book_price,press_id) values('Python爬虫',100,1), ('Linux',80,1), ('操作系统',70,2), ('数学',50,2), ('英语',103,3), ('网页设计',22,3);
  • 実行結果

1対1

例 1:

ユーザーと管理者 (管理者のみがログインでき、1 人のユーザーに 1 人の管理者が対応します)

管理者関連ユーザー

  • テーブルの作成

  • 先建被关联的表
    create table user(
    id int primary key auto_increment, #主键自增name char(10)
    );
    
    再建关联表
    create table admin(
    id int primary key auto_increment,
    user_id int unique,
    password varchar(16),
    foreign key(user_id) references user(id)
    on delete cascade
    on update cascade
    );
  • データの挿入

    #
    insert into user(name) values('susan1'),('susan2'),('susan3'),('susan4')('susan5'),('susan6');
    
    insert into admin(user_id,password) values(4,'sds156'),(2,'531561'),(6,'f3swe');
#実行結果

例 2:

学生テーブルと顧客テーブル

テーブルの作成

    #
    create table customer(
    id int primary key auto_increment,
    name varchar(10),
    qq int unique,
    phone int unique
    );
    
    create table student1(
    sid int primary key auto_increment,
    course char(20),
    class_time time,
    cid int unique,
    foreign key(cid) references customer(id)
    on delete cascade
    on update cascade
    );
  • #データの挿入

#
insert into customer(name,qq,phone) values('小小',13564521,11111111),('嘻哈',14758254,22222222),('王维',44545522,33333333),('胡军',545875212,4444444),('李希',145578543,5555555),('李迪',754254653,8888888),('艾哈',74545145,8712547),('啧啧',11147752,7777777);

insert into student1(course,class_time,cid) values('python','08:30:00',3),('python','08:30:00',4),('linux','08:30:00',1),('linux','08:30:00',7);
  • #実行結果

  • #Many -to-many

書籍と著者 (書籍テーブルと著者テーブル間の関係を保存する別のテーブルを作成できます)

book_id が必要です。また、author_id は次のように設定されます。結合して一意 一意の一意: unique(book_id, author_id)

結合主キー: alter table t1 add primary key(id,avg)

多対多: 1 人の著者が複数の本を書くことができ、1 つの本に複数の著者が所属することもできます。双方向 1 対多、つまり多数のペアです。リレーションシップ方法: 外部キー 新しいテーブル

例:

## 作成table

========书和作者,另外在建一张表来存书和作者的关系
#被关联的
create table book1(
id int primary key auto_increment,
name varchar(10),
price float(3,2)
);
#========被关联的
create table author(
id int primary key auto_increment,
name char(5)
);
#========关联的
create table author2book(
id int primary key auto_increment,
book_id int not null,
author_id int not null,
unique(book_id,author_id),
foreign key(book_id) references book1(id)
on delete cascade
on update cascade,
foreign key(author_id) references author(id)
on delete cascade
on update cascade
);

データの挿入
  • insert into book1(name,price) values('九阳神功',9.9), ('葵花宝典',9.5), ('辟邪剑谱',5),  ('降龙十巴掌',7.3);
    
    insert into author(name) values('egon'),('e1'),('e2'),('e3'),('e4');
    
    insert into author2book(book_id,author_id) values(1,1),(1,4),(2,1),(2,5),(3,2),(3,3),(3,4),(4,5);

    多対多のリレーションシップの例
ユーザー テーブル、ユーザー グループ、ホスト テーブル
  • #3 つのテーブルを作成

  • ##
    -- 用户表
    create table user (id int primary key auto_increment,username varchar(20) not null,password varchar(50) not null);
    
    insert into user(username,password) values('egon','123'),('root',147),('alex',123),('haiyan',123),('yan',123);
    
    
    -- 用户组表
    create table usergroup(id int primary key auto_increment,groupname varchar(20)  not null unique);
    
    insert into usergroup(groupname) values('IT'),('Sale'),('Finance'),('boss');
    
    
    -- 主机表
    CREATE TABLE host(id int primary key auto_increment,ip CHAR(15) not NULL UNIQUE DEFAULT '127.0.0.1');
    
    insert into host(ip) values('172.16.45.2'),('172.16.31.10'),('172.16.45.3'),('172.16.31.11'),('172.10.45.3'), ('172.10.45.4'),('172.10.45.5'),('192.168.1.20'),('192.168.1.21'),('192.168.1.22'),('192.168.2.23'),('192.168.2.223'),
    ('192.168.2.24'),('192.168.3.22'),('192.168.3.23'),('192.168.3.24');

#関係を確立

#rreee

以上がMySQL テーブル間の関係は何ですか?テーブル間のさまざまな関係の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。