数据库设计 -- 字段的选择

数据库设计 -- 字段的选择

 

 

为什么要注意字段的选择?

 

       在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费。在数据量特别大的情况下,这样的设计原理将会使数据库空间造成严重的浪费,也会对数据库的执行效率造成很大的影响。所以我们在做数据库设计的时候要谨慎再谨慎、小心再小心。

 

 

 

 

常用的数据类型

 

       int、float、double、 decimal、varchar、char、 date、datetime等八种常用的类型。

 

 

 

 

字符串

 

  • 当数据存储的是字符,且长度是一个固定区间定值的话就可以考虑使用char来进行存储.
  • 当字符长度是未知的且长度变化特别明显的话,这个时候最好使用varchar来存储。

       但是不管使用的是哪种字段来进行存储,都不要把字段的初始长度设置为最大化,应该是根据业务需求来存储最合适的长度字段。

 

 

 

 

整型

 

    可以根据需求,选择下面的数据类型:

 

  • bigint :从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 
  • int :从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。
  • smallint :从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。 
  • tinyint :从 0 到 255 的整型数据。存储大小为 1 字节。 

       数据库设计过程中尽量使用int来作为字段类型,因为在所有的数据类型中int不管是存储空间还是执行速度方面都是最好的。例如:如果业务中存储的都是数据的话而且长度不是特别长的话,就可以考虑使用int来进行存储,或者业务中要对数据进行排序的时候需要使用某一标识权重之类的,也可以使用int来进行存储。但是不要因为int高效,而有意识的把所有字段都设计成int来处理,最终还是要根据业务的具体需求来设计相应的字段。

 

    bit

 

       只存储一位的数组,通常用于存储状态,active\inactive,is_deleted

 

 

 

 

浮点型

 

  • float(N):当你给定的数据是整数的时候,那么它就以整数给你处理。
  • double(N):无论何时都以小数处理,default值为:0.00而实际存储是0,同样我存取货币为12.00,实际存储是12。
  • decimal(N,M):N是总长度,M是小数点后位数,多则截断,少则补0

       在涉及到金额的时候如果对精度要求不高的情况下可以优先使用float,其次是使用double来进存储。如果对精度要求比较高的情况下最好使用decimal来存储,但是相应的它 的效率没有float和double那么高效。具体使用哪种还是要根据业务的具体需求来选择。

 

 

 

 

时间类型

 

       关于date和datetime的用法,就要看你想要存储时间的精确值了,如果仅仅是想要精确到天的话使用date就可以了,如要要精确到秒一级别的就要使用datetime了。有时候大家使用datetime的使用却只是存储到天的日期单位时,这个时候就会自动添加00:00:00在数据的后面,作为秒一级别的数据。

 

 

 

 

问题

 

int(5)和int(10)的区别是什么?

 

       其实5和10其实只是显示长度的区别而已,也就是不管int(x)x的值是什么值,存储数字的取值范围还是int本身数据类型的取值范围,x只是数据显示的长度而已。当然,存储数据超出这个长度,还是会报错。

 

 

varchar(10)和char(10)的差别是什么?

 

       在MYSQL5,5以后,varchar(x)x中范其实是存储字段的长度范围,就是一个字符代表一个长度,不管这个字符是汉子还是字符都算是一个长度单位。varchar虽然设置长度值,可是因为varchar是可变的长度类型,也就是当存储的长度小于x时候,其实实际的存储空间不是x而是实际存储的字符长度+一些标示空间。当然如果超过x的长度的话还是会报错的。而char(y)中y的值就是存储空间实际的存储长度,超过这个长度的话就会报错。

 

 

 

 

必要字段

 

       id,created_time,created_by,updated_time,updated_by,is_deleted

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值