- E-R关系模型
- 保存树状关系:所有节点作为实体集,在该实体集上建立一个自联系集保存父子关系。类似邻接矩阵。
- 表
- 命名法
- 总则:全s以下小写;下划线'_'分割每个单词;不要与关键字冲突,实在冲突可用``表示元素名;MySQL的标识符识别能力弱,只能自定义单词或字母作为暗示表含义的运算符
- 后缀_log:表明记录为流水账,id自增;最好不要删除记录,因为常常被其他表做外键引用
- 实体集:尽量以单个单词表示
- 弱实体集:所依附的实体集名称+w+本弱实体集名称,例如实体集class,弱实体集为class_w_student。其中w表示weak。在此命名法下,不同的弱实体集虽然可同名,但最好不要同名,因为所依附的实体集名称+w+本弱实体集名称比较长,在部分场景下可能超过命名长度限制
- 二元联系集:(弱)实体集名+[l,m]r+(弱)实体集名+of+联系名,例如men_r_cloth_of_wear表示男人穿衣服的多对多联系集;class_lr_student表示班级有学生的一对多联系集。其中l表示less,m表示more
- 联系集作为实体集:引入左右括号标识实体集,例如a、b分别表示左右括号,可有time_a_mem_r_cloth_of_wear_b表示男人穿衣服这个动作的时间,前面的time可以仅仅是一个字段,不一定是实体集
- 主键
- 总则:以整数字段作为主键,以提升查询速度,也方便管理;先理清表内关系模式的函数依赖,再选择主键
- 实体集:设置唯一主键,即候选键
- 弱实体集:所依附的实体集的候选键与本弱实体集的候选键形成复合主键。MySQL8下,不要将本弱实体集的候选键设置为自增,因为在建立索引时,自增主键必须在最左列,即弱实体集候选键优先于所依附实体集,但实际上要查询时,必须先查找所依附的实体集的候选键,而不是本弱实体集的候选键。
- 二元联系集:将被关联的两个表的候选键放在一起,组成联合主键,唯一标识一个联系。
- 外键
- 弱实体集:将所依附的实体集的候选键设置为外键
- 二元联系集:将被关联的两个表的候选键都分别设为外键
- 复合外键:将被引用的表的多个字段的组合作为外键,定义为一个外键约束。在含有弱实体集的联系中常用(外键为弱实体集的复合主键)
- 外键链:被引用的表已经做过的外键约束,在本表中就无需再次设置外键约束
- 索引
- 总则:主键全部设为索引,被引用的整数外键会被自动设置索引;索引以空间换时间,加快使用被索引字段的查找速度(b+tree)
- 命名法
- information_schema
- auto_increment在存储过程中不能被变量赋值?
- 存储过程
- 事务
- 异常
利用MySQL设计管理数据库的经验
最新推荐文章于 2023-05-30 00:00:00 发布