首页 > 数据库 >数据库一对一、一对多、多对多关系

数据库一对一、一对多、多对多关系

时间:2022-11-26 05:44:05浏览次数:34  
标签:cascade 一对一 auto 数据库 char int key 一对 id

  • 数据库一对一、一对多、多对多关系

     

    数据库一对一、一对多、多对多关系

    一、首先给出三种关系的实例

    1. 一对一关系实例

    ​ 一个人对应一张身份证,一张身份证对应一个人

    1. 一对多关系实例

    ​ 一个公司的部门拥有多个职员,一个职员只能够属于某个部门

    1. 多对多实例

    ​ 一本图示可以拥有多个作者,一个作者可以写很多本书。

    一对一关系

    一对多,是最常见的一种设计。就是 A 表的一条记录,对应 B 表的多条记录,且 A 的主键作为 B 表的外键。这主要看以哪张表为中心。

    优点

    1. 便于管理、可提高一定的查询速度
    2. 减轻 CPU 的 IO 读写,提高存取效率。
    3. 符合数据库设计的三大范式。
    4. 符合关系性数据库的特性。

    缺点

    增加一定的复杂程度,程序中的读写难度加大。

    # 左表的一条记录唯一对应右表的一条记录,反之也一样
    # 身份证表
    create table iden(
        id int primary key auto_increment,
        name char(20) not null,
        iden_num char(18) not null unique
    
    );
    
    # 公民表
    create table civi(
        id int primary key auto_increment,
        name char(20) not null,
        civi_id int unique, 
        foreign key(iden_id) references ident(iden_num) #外键的字段一定要保证unique
        on delete cascade
        on update cascade
    );
    

    一对多关系

    一对多,是最常见的一种设计。就是 A 表的一条记录,对应 B 表的多条记录,且 A 的主键作为 B 表的外键。这主要看以哪张表为中心,我们把多对一和一对多统称为一对多关系,数据库中不存在多对一关系。

    create table dep(
        id int primary key auto_increment,
        dep_name char(10),
        dep_comment char(60)
    );
    
    create table emp(
        id int primary key auto_increment,
        name char(16),
        gender enum('male','female') not null default 'male',
        dep_id int,
        foreign key(dep_id) references dep(id)
        on update cascade
        on delete cascade
    );
    

    多对多关系

    多对多,在数据库中也比较常见,可以理解为是一对多和多对一的组合。要实现多对多,一般都需要有一张中间表(也叫关联表),将两张表进行关联,形成多对多的形式。

    create table author(
        id int primary key auto_increment,
        name char(16)
    );
    
    create table book(
        id int primary key auto_increment,
        bname char(16),
        price int
    );
    create table author2book(
        id int primary key auto_increment,
        author_id int,
        book_id int,
        foreign key(author_id) references author(id)
        on update cascade
        on delete cascade,
        foreign key(book_id) references book(id)
        on update cascade
        on delete cascade
    );
    
 

标签:cascade,一对一,auto,数据库,char,int,key,一对,id
From: https://www.cnblogs.com/clark1990/p/16926838.html

相关文章

  • 数据库集群技术 你了解多少?
    当今世界是一个信息化的世界,我们的生活中无论是生活、工作、学习都离不开信息系统的支撑。而信息系统的背后用于保存和处理最终结果的地方就是数据库。因此数据库系统就变得......
  • Mysql-数据库设计
    ......
  • petshop4.0 详解之二(数据访问层之数据库访问设计)
    在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的概念。从本部分开始,我将依次对各层进行代码级的分析,以求获得更加细致而深入的理解。在Pe......
  • MySQL数据库:7、SQL常用查询语句
    Python基础之MySQL数据库目录Python基础之MySQL数据库一、SQL语句常用查询方法前期数据准备1、基本查询2、编写SQL语句的小技巧3、查询之where筛选3、1.功能介绍3、2.实......
  • KingbaseES数据库 通过sys_resetwal恢复被删除数据
    KingbaseES恢复被删除数据生产环境操作请先备份整个data目录或者cp个新的data目录在进行此操作恢复被删除数据,通过备份的新路径恢复数据之后,确认数据完整性。在把数据从......
  • .net数据库连接池配置技巧(默认值)
    以连接字符串关键字控制ConnectionPoolConnectionString属性是SQLConnection对象的一个属性,它支持一个连接串/值对,这个对是用于调整connectionpool行为的。下表是Connec......
  • MYSQL数据库之索引
    一、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于c语言的链表通过指针指向数据记录的内存地址)。使用索引后可......
  • 数据库(部分讲解)
    SQL语句查询关键字单关系查询是指只一张表中的内容查询有关信息,不涉及其他的表,这是查询中最为基本的一种情况类型含义select表示要查找出的表所含有的属性f......
  • 极智穷思,数往知来 | 2022年11月《中国数据库行业分析报告》精彩抢先看
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数......
  • Linux pg数据库设置开机自启动
    今天上班学习摸鱼,专门研究了一下用的数据库开机自启的方法。我们现有数据库使用的是postgres数据库,版本为9.6.10,当年项目是外包的,也不知道他们具体是怎么设置开机自启的,反......