zoukankan      html  css  js  c++  java
  • 37 数据库设计三范式(重点内容:面试经常问)

    37 数据库设计三范式(重点内容:面试经常问)
     
        什么是设计范式?
            设计表的依据,按照这个三范式设计的表不会出现数据冗余。
            
            三范式都是哪些?
                第一范式:任何一张表都应该有主键。并且每一个字段原子性不可再分。
                
                第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。
                    
                    ***** 多对多?三张表,关系表中有两个外键。
                    
                    t_student学生表
                    sno(pk) sname
                    -------------
                    1        张三
                    2        李四
                    3        王五
                    
                    t_teacher 讲师表
                    tno    (pk)    tname
                    ----------------
                    1            王老师
                    2            张老师
                    3            李老师
                    
                    t_student_teacher_relation 学生讲师关系表
                    id(pk)        sno(fk)    tno(fk)
                    ----------------------------
                    1            1            3
                    2            1            1
                    3            2            2
                    4            2            3
                    5            3            1
                    6            3            3
            
            第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。
                
                 ***** 一对多?两张表,多的表加外键。
                
                班级 t_class
                cno(pk)    cname
                ---------------
                1            班级1
                2            班级2
                
                
                学生 t_student
                sno(pk)    sname    classno(fk)
                -----------------------------
                101            张1        1
                102            张2        1
                103            张3        2
                104            张4        2
                105            张5        2
                
            提醒:在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。
            
        一对一怎么设计?
        
            一对一设计有两种方案:主键共享
            
            t_user_login 用户登录表
            id(pk)        username        password
            ---------------------------------
            1            zs                123
            2            ls                456
            
            t_user_detail 用户详细信息表
            id(pk+fk)        realname     tel    ...
            -------------------------------
                            zs            1111
                            ls            2222
            
        
            一对一设计有两种方案:外键唯一
            
            t_user_login 用户登录表
            id(pk)        username        password
            ---------------------------------
            1            zs                123
            2            ls                456
            
            t_user_detail 用户详细信息表
            id(pk)        realname     tel    userid(fk+unique)...
            -------------------------------
            1            zs            1111    1
            2            ls            2222    2
  • 相关阅读:
    vue 之循环添加不同class
    小程序 之使用HMACSHA1算法加密报文
    微信小程序 之wx.getLocation()获取地理信息中的小坑
    js 时间戳与yyyy-mm-dd或yyyy-MM-dd HH-mm-ss互相转换
    小程序 之登录 wx.login()
    打开串口(COM)号大于9时报错
    linux的mysql权限错误导致看不到mysql数据库
    Nginx报错汇总
    获取磁盘总空间和剩余空间
    关于CoCreateInstance的0x800401f0问题
  • 原文地址:https://www.cnblogs.com/xlwu/p/13640131.html
Copyright © 2011-2022 走看看