数据库01-范式总结

数据库:文档型sqlite,服务型mysql
范式:关系模式-一张表的结构 关系-一张实例化了的数据表
    1NF的定义为:每个属性都不可再分
    2NF:消除了非主属性对于码的部分函数依赖(非主属性不能由部分码确定,必须由全部码才能          唯一确定非主属性)
    解决方法:把部分依赖的关系,形成新的表分离
    进步:数据冗余过大    修改异常
    3NF:消除了非主属性对于码的传递函数依赖(非主属性之间存在着主键的关系)
    解决方法:直接把非主传递的属性分成新的表,在原表中去掉非主的非主属性
    进步:数据冗余过大    删除异常
    BCNF:消除主属性对于码的部分与传递函数依赖
总结:2范式:主和非主的关系解除
        3范式:非主属性之间的解除
        BCDF:主属性之间的解除
问题所在:
    数据冗余过大 :表重复太多
    插入异常:只要码没有确定,非主属性就不能往表里面写入
    删除异常:一旦把主键删完了,对应的非主属性全部都消失了
    修改异常:一个属性在多个表中都有记录,删除一个表的,别的表中就会有异常
补充:
    函数依赖 :‘于’代表的是反方向
        完全函数依赖:学号 F→ 姓名
        部分函数依赖:(学号,课名) P→ 姓名
        传递函数依赖: Z 函数依赖于 Y,且 Y 函数依赖于 X (『Y 不包含于 X,且 X 不函数依        赖于     Y』这个前提),那么我们就称 Z 传递函数依赖于 X
    属性:
        “码”:唯一标示确定一条记录的属性(可以是一个字段也可以是多个字段)
        “主属性”:当码是多个对象的时候,其中的任意一个属性就是主属性
        “部分函数依赖”:非主属性由码的一部分就能唯一确定
数据库Linux下安装:
安装:sudo apt-get install mysql-server mysql-client
service mysql start        service mysql stop        service mysql restart
允许远程连接
找到mysql配置文件并修改
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address=127.0.0.1注释
登录mysql,运行命令
grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
flush privileges;
重启mysql


    

原文地址:https://www.cnblogs.com/tony-xu999/p/8508188.html