本文主要是介绍数据库常用类型字段设计规范,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【强制】 任何货币金额,均以最小货币单位且整型类型来进行存储
decimal
存储小数,必须使用 decimal, 不要用 float 和 double等其他类型,否则可能会出现精度丢失
在 decimal (M,N) 中
- M 表示有效数字数的位数。(注意不是整数的位数,例如 -123.45 中 M=5 而不是3)
- N 表示小数点后的位数
- 整数的位数为 M-N
- 存储占用 M+2 bit,因为要包含正负号和小数点
bigint
- 取值范围 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807),可以表示正负十亿亿级别的数值
- 储存空间 64 bit
Oracle 数据库内置的数据类型
NUMBER
数字类型,可以指定它的精度和小数位数。
格式 NUMBER (precision, scale)
- precision 表示有效数字的位数(注意不是整数的位数),最大38
- scale 表示小数位数
INTEGER
整型类型,小数位数为 0,INTEGER 属于 NUMBER 的子类型,相当于 NUMBER (P,0)
金融类字段
金额类字段
根据阿里巴巴 java 开发规范,“任何货币金额,均以最小货币单位且整型类型来进行存储”,因此要使用长整形
- Mysql : 建议 bigint 以分为最小单位存储时,最大可以表示正负千万亿级别的金额
- Oracle : 建议 INTEGER 小数保留到分,整数 16 位,最大可以表示千万亿级别的金额
利率类字段
根据行业习惯,存储时,利率保留到小数点后6位,展示时,利率只展示到小数点后4位
- Mysql : 建议 DECIMAL (10,6) ,小数点后保留 6 位,整数 4 位,
- Oracle : 建议 NUMBER (10,6) ,小数点后保留 6 位,整数 4 位,
坐标类字段
二位坐标-经纬度
推荐做法
经度
- Mysql : DECIMAL (11,8)
- Oracle : NUMBER (11,8)
维度
- Mysql : DECIMAL (10,8)
- Oracle : NUMBER (10,8)
经度取值范围为 [0,180],纬度的取值范围为 [0,90],因此经度比纬度是要多存一位
转载自:https://juejin.cn/post/6889233095417921549
这篇关于数据库常用类型字段设计规范的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!