要同时支持Oracle 和SQLServer数据库,表设计的时候,栏位的数据类型是其中一个考虑因素。
我采取的原则很简单:
1. 尽可能少的引入数据类型
2. 不同数据库的字符类型栏位长度保持一致
类型根据下面的表格进行对应。
Oracle | SQL Server |
NUMBER(p[,s]) | decimal(p[,s]) |
NUMBER(3,0) | int (以is开头的栏位,用于表示bool值) |
NUMBER(10,0) | int |
CLOB | nvarchar(max) |
RAW(16) | uniqueidentifier |
DATE | date / datetime |
VARCHAR2(N CHAR) | nvarchar(N) (含多国文字) |
VARCHAR2(N BYTE) | nvarchar(N) (不含多国文字) |
BLOB | varbinary(max) |
其它的一些相关规则也整理如下:
1. 对象名称不使用关键字,用英文命名。长度不超过30
2. 对象名称统一采用大写
3. 不确定的栏位长度一般以50,100,150进行定义
4. 日期类型数据以_ON结果
5. bool类型数据以IS_开头
6.描述栏位统一命名为DESCRIPITON, 长度500
7. 添加追踪栏位
created_on / created_by
changed_on / changed_by