数据库一对一,一对多,多对多关系图_django数据库一对多

数据库一对一,一对多,多对多关系图_django数据库一对多数据库一对一、一对多、多对多关系 数据库一对一、一对多、多对多关系 一、首先给出三种关系的实例 一对一关系实例 ​ 一个人对应一张身份证,一张身份证对应一个人 一对多关系实例 ​ 一个公司的部门拥有多个职员,一个职员只能够属于某个部门 多对多实例 ​ 一本图示可以拥有多个作者,一个作者可以写很多本书

数据库一对一,一对多,多对多关系图_django数据库一对多"

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

     

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

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

    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
    );
    

 

今天的文章数据库一对一,一对多,多对多关系图_django数据库一对多分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/52080.html

(0)
编程小号编程小号
上一篇 2023-08-31
下一篇 2023-08-31

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注