数据库设计常见问题、基本惯用法及规范(总结)
2012-11-22 07:28
447 查看
如果转载本文,请注明出处以示尊重个人劳动, (iihero@CSDN):http://blog.csdn.net/iihero/article/details/8210516, 谢谢。
1. 概述
近几年,在各数据库论坛以及别的场合,有很多人问起这类问题或是遇到此类问题。有命名方面的,有表结构设计方面的,有针对关系范式争论的,有是否要求使用约束、触发器和存储过程的,当然,也有基于建模工具来建模的,如此种种。本文试图对其中的重点问题进行归纳总结。设计规范和惯用法,最终是为了数据库应用系统具备良好的稳定性、可扩展以及可维护服务的,如果不能或者不容易达到此目的,那就形同虚设。2. 问题及解决方案
2.1 数据库对象的命令规则
对于数据库对象的命名,根本宗旨是要使得它有意义并且可维护性可迁移性好。可能与我们在面向对象语言中的对象命名规则有所区别,在OO编程当中,经常采用camel(驼峰)式命名规则,首字母大写进行间隔区分。然而,在这里行不通,也不被推荐,推荐的方式是使用"_"拼接,并且使用英文全小写。原因: 大小写混合,容易导致数据库迁移问题,比如A商家的数据库,当你create table Abc,最终建的表名就是Abc,可是到了B商家的数据库,建的表名,内部就是ABC了。甚至有的数据库当中,表名对应的就是文件名,在不同平台下是区分大小写的。至于不推荐中文表名,理由更充分,中文对象名的支持,并不是各个数据库都完美支持的,并且还涉及到字符集问题。
表名示例:
比如:订单: sales order, 使用sales_order,而不是SalesOrder总结起来:
1. "_"拼接,全小写英文
2. 提供一致的缩写, 不要有的地方用缩写,有的地方又改成另外一种形式
3. 针对各个表结构,有相应的完整的中文字典说明(相对于中文用户)
4. 极力避免采用某数据库的关键字作为表名,如 (role, users, user, object, relation, link等), 作为DBA,尤其是开发性的DBA而言,应该在设计阶段就协调好此事
5. 作为DBA而言,还应该调研清楚目标数据库对象名(表,字段,索引等)的名字能允许的最大长度
5. 索引名,推荐:{table_name}_{column_names}_{suffix后缀}, 前两者按照实际长度酌情缩写, 常见后缀有:
pkey, 主键 (不常使用,因为有primary key定义)
ukey, 唯一键 (不常使用,因为有unique定义)
cons, 约束 (constraint)
idx, 普通索引
6. 显示序列名, 以seq_作前缀,这在Oracle, DB2, PostgreSQL中比较常见,其它数据库中大都有identity, auto_increment标识定义,无此要求
7. 触发器名, {table_name}_{action}_{after|before|..}_trig, 这里action可以是insert, after, delete等。
2.2 SQL代码段编写规则
2.3 模拟数据生成
(待续)相关文章推荐
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
- Atitit 数据库与存储引擎设计与实现 attilax总结 1.1. 数据库的实现有很多种, 遵循一些理论规范,如 Fix Rules、Write-Ahead Log、Force-log-at-
- 设计数据库的基本规范规则
- 用Quartus II + Verilog 做FPGA/CPLD设计/仿真的几个基本问题(自己总结的,对初学者有效)
- Java课程设计常见技术问题(程序部署、数据库、JSP)
- 放大器电路设计中的常见问题经验总结
- Mysql学习总结(16)——Mysql之数据库设计规范
- 常见数据库设计(2)——历史数据问题之单记录变更
- MySql的基本用法(2)_常见的数据库操作
- Mysql学习总结(16)——Mysql之数据库设计规范
- 数据库设计规范和值得注意的问题
- 关于数据库设计中的分级分层问题的总结(适用于组织结构图及家谱等问题)转
- Mysql学习总结(16)——Mysql之数据库设计规范
- CSS,XTHML书写规范以及常见问题总结
- 数据库设计基本规范
- [导入]数据库应用系统设计面临的常见的大的方面的问题?
- Android开发:SurfaceView基本用法总结及开发问题分享
- CSS,XTHML书写规范以及常见问题总结
- 开发中数据库常见的设计问题
- Mysql学习总结(16)——Mysql之数据库设计规范