1、第一范式(确保每列保持原子性)
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足第一范式。
第一范式的合理遵循需要根据系统给的实际需求来确定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成为一个数据库表的字段就行,但是如果系统经常访问“地址”属性中的“城市”部分,那么一定要把“地址”这个属性重新拆分为省份、城市、详细地址等多个部分来进行存储,这样对地址中某一个部分操作的时候将非常方便,这样设计才算满足数据库的第一范式。
2、第二范式(确保表中的每列都和主键相关)
第二范式在第一范式的基础上更进一层,第二范式需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
比如要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,
3、第三范式(确保每列都和主键列直接相关,而不是间接相关)
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系,而不可以在订单表中添加关于客户其他信息(比如姓名、所属公司)的字段,如下面这两个表所示的设计就是一个满足第三范式的数据库表。
mysql 就是一个基于cs 架构的软件, 管理文件
开启服务端
mysqld
开启客户端
mysql -uroot -p
数据库概念
数据库服务器: 运行数据库管理软件的 机器
数据库管理软件: mysql
文件夹: -->> 数据库
文件: -->> 数据表
数据: -->> 记录
tasklist |findstr mysql
taskkill /F /PID 端口号
mysqld --install
mysqld --remove
net start mysql
net stop mysql
关闭之前的 mysql 进程
跳过授权表开启mysql 服务器
mysql --skip -grant -tables
? 跳过 格兰特 表格
进入客户端
mysql -uroot -p
update mysql.user set password("") where user=‘root‘ and host=‘localhost‘;
flush privileges;
[mysqld]
# 设置mysql的安祖目录, **后面的路径一定是安装sql的目录***
basedir=D:\mysql56
# 设置mysql数据库的数据存放路径, 必须是data
datadir=D:\mysql56\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
slow_query_log =1
slow_query_log_file=C:\mysql-5.6.40-winx64\data\localhost-slow.log
long_query_time = 1
# mysql端口
port=3306
# 字符集
#服务器
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
# 客户端连接
[client]
default-character-set=utf8
[mysql]
# 本地
default-character-set=utf8
# 设置密码
# user=root
# password=123
超哥博客:https://www.cnblogs.com/clschao/articles/10065275.html
Mysql 数据库设置三大范式 数据库五大约束 数据库基础配置
原文:https://www.cnblogs.com/zhang-zi-yi/p/10749208.html