>  기사  >  데이터 베이스  >  MySQL 테이블 간의 관계는 무엇입니까? 테이블 간의 다양한 관계

MySQL 테이블 간의 관계는 무엇입니까? 테이블 간의 다양한 관계

青灯夜游
青灯夜游앞으로
2018-10-27 17:14:166374검색

이 기사에서는 MySQL 테이블과 테이블 간의 관계를 소개합니다. 테이블 간의 다양한 관계. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

테이블 간의 관계

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

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

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

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

1. 관계를 먼저 결정하세요

2. 더 많은 면을 찾아 관련 필드를 더 많은 면에 작성하세요

일대다

다. 일대일 또는 일대다(왼쪽 테이블의 여러 레코드가 오른쪽 테이블의 유일한 레코드에 해당)

참고 사항:

  • 1. 관련 테이블의 테이블은 고유해야 합니다.

  • 2. 관련 테이블 생성 시 관련 필드가 중복되어야 합니다.

예:

책과 출판사의 예입니다. 책은 출판사와 연결되어야 합니다(여러 책이 하나의 출판사가 될 수도 있고, 하나의 출판사가 여러 책을 가질 수도 있습니다).

동료는 누구의 기준을 따라야 하는 사람입니다.

  • 테이블 만들기

书要关联出版社
被关联的表
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명에 해당)

관리자가 사용자 연결

  • 테이블 만들기

先建被关联的表
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);
  • 결과 실행

  • ㅋㅋㅋ 고유: 고유(book_id, 작성자_id)

공동 기본 키: alter table t1 add 기본 키(id,avg)

다대다: 한 명의 저자가 여러 권의 책을 쓸 수 있고, 한 권의 책도 작성할 수 있습니다. 다중 작성자, 양방향 일대다, 즉 다수의 쌍관계 방법: 외래 키+새 테이블

예:

테이블 만들기

========书和作者,另外在建一张表来存书和作者的关系
#被关联的
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);

다대다 관계의 예

사용자 테이블, 사용자 그룹, 호스트 테이블

  • 테이블 세 개 만들기

-- 用户表
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');
  • 관계 설정

아아아아

위 내용은 MySQL 테이블 간의 관계는 무엇입니까? 테이블 간의 다양한 관계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제