主键的要求

表中至少应该有1个主键,原因是我们要保证 实体的完整性
主键的特点:
1、不具备任何的业务含义
2、主键的内容一定不能改变(稳定性)
3、主键不是越多越好,有1-2就好 当然一般来讲都是只有1个
例如:
身份证能不作为主键?电话号码能不作为主键? 不能

实体的完整性

讲的是我们存入到数据库中的 每个Java实体都是完整,而且不重复的个体;
保证实体完整性的办法:
1、加主键k
2、在某些字段添加 唯一约束

列的完整性

将的是如何保证每一列都是具有一定的含义的,是完整,不是NULL的
保证列完整性的办法:
1、给列加非NULL约束
2、给列添加默认约束 比如:密码 默认值 123456

数据库三大范式(面试题 + 后续设计数据库表的中心思想)

我们现在已经涉及到数据库的建表,建表怎么建?需要遵循一定的规则
设计数据库表时,需要遵从的规矩:三大范式
第一条:列具有原子性 列一定要划分到不可划分(最小)为止
eg:收货地址(address) 四川省成都市高新区孵化园5号楼3楼301号
按照范式约定来讲:省 市 区 街道 详细地址
第二条:表中所有列,都必须与主键有一定的关系 (建立在:遵循第一范式的基础上)
主键:代表的实体
第三条:表中所有列,都必须与主键有直接相关(而不是间接相关) (建立在:遵循第一,二范式的基础上)
比如:能否将女朋友的名字,爸妈,建立在学生表的字段中?

ER图

建表的思想:
1、先按照面向对象的思维习惯,去找对象 ,找对象的属性,找对象和对象之间的关系
2、对象就对应着表 对象的属性就对应着表中的字段 对象和对象之间的关系就对应着表和表之间的关系