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
  • 相关阅读:
    cad怎么样创建动态块
    块定义从一个图形传到当前图形
    AutoCAD200X\Support\acad.lsp 启动时自动加载dll
    菜单变灰
    CAD实体双击弹出自定义窗体,可根据扩展数据(通用)
    转载:双击实体弹出对话框(重载AcDbDoubleClickEdit)
    当前已保存的用户坐标系坐标点到世界坐标系的转换
    Windows下编译PHP的C扩展
    flexpaper使用介绍
    IE6 png处理
  • 原文地址:https://www.cnblogs.com/xlwu/p/13640131.html
Copyright © 2011-2022 走看看