我最开始接触数据库,是根据Excel建数据库表;
1)3范式核心:同类合并,异类分开;建表时才能字段总数最少,才能效率变高,节省资源;即使SQL会变复杂;
第一范式(1NF):
数据表中的每一列(字段),必须是不可拆分的最小单元;
第二范式(2NF):
数据库最好只有一个主键;
第三范式(3NF):
要求表中的每一列必须与主键直接传递;
如Excel中不同的表格只有年份不同,年份抽离出来当字段使用;就叫同类合并,表面上因为合并增加了一个年份字段,实际上节约消失了多张表;
如下图违反异类分开;违反了第1范式,字段不符合原子性;也违反了第3范式,数量和价格应该另建一张表;异类合并令数量字段借助了物品字段,物品越多,导至数量字段倍数增加;
2)根据需求:将一堆Excel表,导入同一个库;
3)目标:导入的前提下,数据库和库中的字段越少越好,节省资源;
4)工具:excel(数据采集)+pgsql()+navicat(可视化工具);
5)PostGreSql数据库id类型叫BIGSERIAL(64);MySql数据库id类型叫INT;Oracal数据库id类型叫VARCHAR2;
#5.1)"id" bigserial:postgreSql中只能使用序列赋值id(64位id适应UUID),
必须空表时加序列,有旧数据时,id会出现双序列后果
#5.2)postgreSql建表时,不支持直接复制表:因为复制后会多表共用一个序列;
核心:总字段数要少;
补:范式1,每个列名必须有原子性;范式2,主键是单字段;范示3,拆分成多个单表;
范式的作用:解决增删改异常和数据冗余