数据库特殊类型字段设计规范

本文详细介绍了MySQL和Oracle数据库中的数据类型选择,特别是在处理金融数据和坐标信息时的最佳实践。对于金额字段,建议使用长整型以分作为最小单位存储,确保精度。利率字段推荐使用保留小数点后6位的类型。对于经纬度坐标,推荐使用特定精度的DECIMAL或NUMBER类型,以适应其取值范围。这些最佳实践遵循了精度、存储效率和行业标准的要求。
摘要由CSDN通过智能技术生成

1.Mysql 数据库内置的数据类型

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

2.Oracle 数据库内置的数据类型

NUMBER

数字类型,可以指定它的精度和小数位数。
格式 NUMBER (precision, scale)

  • precision 表示有效数字的位数(注意不是整数的位数),最大38;
  • scale 表示小数位数;
INTEGER

整型类型,小数位数为 0,INTEGER 属于 NUMBER 的子类型,相当于 NUMBER (P,0)

3.金融类字段

金额类字段
根据阿里巴巴 java 开发规范,“任何货币金额,均以最小货币单位且整型类型来进行存储”,因此要使用长整形
  • Mysql : 建议 bigint 以分为最小单位存储时,最大可以表示正负千万亿级别的金额;
  • Oracle : 建议 INTEGER 小数保留到分,整数 16 位,最大可以表示千万亿级别的金额;
利率类字段
根据行业习惯,存储时,利率保留到小数点后6位,展示时,利率只展示到小数点后4位
  • Mysql : 建议 DECIMAL (10,6) ,小数点后保留 6 位,整数 4 位;
  • Oracle : 建议 NUMBER (10,6) ,小数点后保留 6 位,整数 4 位;

4.坐标类字段

二维坐标-经纬度

推荐做法

  • 经度
    • Mysql : DECIMAL (11,8)
    • Oracle : NUMBER (11,8)
  • 纬度
    • Mysql : DECIMAL (10,8)
    • Oracle : NUMBER (10,8)

经度取值范围为 [0,180],纬度的取值范围为 [0,90],因此经度比纬度是要多存一位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值