💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Mysql设计规范 ## 前言 在设计数据库前,请先参照此规范已有定义字段类型设计数据库,未规范的字段类型请团队自行研究. > 对于数据库的管理 Windows 使用 [Heidisql](https://www.heidisql.com/) Mac 使用 [SequelPro](https://sequelpro.com/) 公司PHPmyadmin在不久将会关闭停用 ## 起步 ### 范式 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准确的理解): + 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解,即没有表中表; + 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; + 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 > 通常情况下,这3个范式适用于大多数场景 > 在设计时遵循 由低到高,逐步规范,权衡利弊,适可而止 ### 数据库常用字段类型 ### 表设计规范 + 表必须有自增唯一主键 + 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; + 命名简洁明确,多个单词用下划线'_'分隔; > 例如:user_login, user_profile, user_detail, user_role, user_role_relation,user_role_right, user_role_right_relation + 表前缀'user_'可以有效的把相同关系的表显示在一起; ### 外键规范 + 使用表全名作为外键字段 比如 user => user_id ,order => order_id ,user_detail => + 不需要表前缀 比如表名为dp_user 直接为user_id ### 字段设计规范 + 用尽量少的存储空间来存数一个字段的数据; > 例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256); + IP地址最好使用int类型; + 固定长度的类型最好使用char,例如:邮编; + 能使用tinyint就不要使用smallint,int; + 最好给每个字段一个默认值,最好不能为null; ### 常用字段设计 这里整理出生产过程中常用的字段设计 使用范围 | 类型 | 备注 ----|------|---- 价格 | decimal(8,2) | foo 时间 | int(10) | bar