### 数据库设计规则详解 #### 一、数据库命名规范 - **组成元素**:数据库命名应当采用26个英文字母(区分大小写)和0-9的自然数(通常较少使用),以及下划线'_'。 - **长度限制**:数据库名称长度不得超过30个字符。 - **示例**: - 简洁命名:`user`, `stat`, `log` - 带前缀命名:`wifi_user`, `wifi_stat`, `wifi_log` - 备份数据库:`user_db_20151210` #### 二、数据库表名命名规范 - **组成元素**:同数据库命名规范。 - **长度与格式**:表名需简洁明确,并且多个单词间用下划线'_'分隔。 - **示例**: - 示例表名:`user_login`, `user_profile`, `user_detail`, `user_role`, `user_role_relation`, `user_role_right`, `user_role_right_relation` - 表前缀使用:如`user_`,这有助于将相关表集中显示。 - 特定场景下的前缀:例如物流表中的同城需求表`t_city_demand`,干线需求表`t_trunk_demand`。 #### 三、数据库表字段名命名规范 - **组成元素**:同数据库命名规范。 - **长度与格式**:字段名需简洁明确,并且多个单词间用下划线'_'分隔。 - **示例**:`user_login`表中的字段包括`user_id`, `user_name`, `password`, `email`, `ticket`, `status`, `mobile`, `add_time`等。 - **特殊要求**:每个表必须包含一个自增主键字段,以及`add_time`(默认为系统时间)、`update_time`(记录最后修改时间)和`status`(记录状态)字段。 #### 四、数据库表字段类型规范 - **基本原则**:尽可能使用更少的空间来存储数据。 - 例如,若能使用`int`类型,则不应使用`varchar`或`char`。 - IP地址推荐使用`int`类型存储。 - 邮政编码等固定长度的数据应使用`char`类型。 - 尽可能使用较小的整数类型,如可用`tinyint`则不必使用`smallint`或`int`。 - 给每个字段设置默认值,并尽可能避免空值`NULL`。 #### 五、数据库表索引规范 - **命名规范**:索引名称需简洁明确,例如`user_login`表中`user_name`字段的索引可命名为`user_name_index`。 - **索引类型**: - 每个表至少创建一个主键索引。 - 合理创建其他索引以提高查询效率。 - 谨慎建立复合索引,因其可能会影响性能。 #### 六、数据库范式 - **第一范式**:字段值具有原子性,即不可再分割。所有关系型数据库系统均满足此条件。 - **第二范式**:表必须拥有主键,以便每行数据均可被唯一识别。前提是该表已满足第一范式。 - **第三范式**:表中不应包含其他相关表中非关键字的信息,即避免数据冗余。前提是该表已满足第二范式。 - 在实际应用中,有时为了提高查询效率,会适度引入数据冗余。 #### 七、MYSQL数据库设计原则 - **核心原则**: - 不在数据库中执行复杂运算。 - CPU密集型计算应在业务层处理。 - 控制列的数量,建议字段数量不超过20个。 - 平衡范式与冗余,优先考虑效率。 - 避免使用大SQL语句、大事务及大批量操作。 - **字段类原则**: - 使用合适的字段类型来节省空间。 - 将字符类型转换为数字类型,以提高查询性能。 - 避免使用NULL字段,因为它们难以优化且会增加索引的存储空间。 - 尽量使用`varchar`替代`text`类型。 - **索引类原则**: - 合理使用索引,改善查询性能但可能会减慢更新速度。 - 对于字符类型的字段建立前缀索引。 - 避免对索引进行列运算。 - 推荐使用自增长列作为InnoDB表的主键。 - 不建议使用外键,可通过程序来确保数据完整性。 - **SQL类原则**: - SQL语句尽可能保持简单,避免使用复杂的事务。 - 避免使用触发器和函数,而是使用客户端程序代替。 - 不使用`SELECT *`,因为它消耗更多CPU、IO、内存和带宽资源。 - 将`OR`逻辑改为`IN`或`UNION`,以提高查询性能。 通过以上详细的规范和原则,可以有效地指导数据库的设计工作,确保数据库系统的高效稳定运行。
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助