数据库字段多,该怎么设计数据库?。

数据库字段多,该怎么设计数据库?。,第1张

订单主要信息放一个表,

工序各存一个表,(如果各工序的要素,属性一致,就用一个表就好了,加个工序编号,各自不同的话,就拆分开)

如果工序之间存在先后关系,那么可以专门放个配置存工序(编码)先后次序,然后订单主表里放当前工序(编码)代表的状态就行了。

设计说明:

订单信息会被反复查到,所以要独立出来。

各工序之间无关联,意味每个工序的修改不会影响(查询,修改)其他工序,所以各自独立出来比较好,每个工序7-10个字段,拆出来也比较合理。

A表,a_id,a_name,a_tel三个字段。

B表,b_id,b_address,b_sol三个字段。

关联表,ref_id,a_id,b_id,存储着AB两表的id,

比如:A有

a0001,zhang3,139555533

a0002,li4,1397788888

a0003,wang5,13655566

B有

b0001,shanghai,234

b0002,shenyang,332

b0003,chongqing,123

如果想要AB表多对多的话,只需要将关联表进行增加即可,而AB两表基本数据不变,

比如:

关联表ref_table:

r0001,a0001,b0002

r0002,a0001,b0001

r0003,a0001,b0003

r0004,a0002,b0003

通过联合查询,就可以得到多对多的数据了,而且不破坏基本数据表。

一、整型:

1、tinyint:tinyint 是-128到128 。当属性设置为unsigned的时候。最大值就是255了。现在知道为什么需要设置为unsigned属性了。原来是为了最大限度的使用给予的存储空间。如果不设置。那么假如你的值都是正数的。那么-128这一百多个数字就相当于是浪费了。默认tinyint会自动设置为tinyint(3)

2、int,占四个字节,取值范围是-2^31到2^31-1(大约正负二十亿)int 类型phpmyadmin默认会设置int(10)

3、bigint,占八个字节,取值范围是-2^63到2^63-1

二、时间类型

1、Date:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”;

2、TimeStamp:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”;

3、DateTime:也是存储既有日期又有时间的数据。存储和显示的格式跟TimeStamp一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”; (一般用这个)

1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED

2、大小(VARCHAR的长度只分配真正需要的空间)

3、使用枚举或整数代替字符串类型

4、类型(尽量使用TIMESTAMP而非DATETIME,在精度要求高的应用中,建议使用定点数来存储数值,以保证结果的准确性。能用decimal就不要用float)

5、单表不要有太多字段,建议在20以内

6、值(是否允许为空、是否有默认值,尽量避免使用NULL字段,很难查询优化且占用额外索引空间)

7、用整型来存IP

8、合理的字段名(符合3NF,避免不必要的数据冗余,参考 3NF)

9、创建并使用正确的索引

10、将字段设置为not null 还出于另外一种考虑:mysql表的列中包含null的话,那么该列不会包含在所有中。也就是使用索引是无效的。所有,考虑今后会使用索引的字段,就要设置字段属性是not null。

11、如果你要保存NULL,手动去设置它,而不是把它设为默认值。

12、考虑到这个字段今后会作为查询关键字使用like的形式进行搜索。那么要将该字段定义成索引。这样使用like查询就会更快。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6425890.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-22
下一篇 2023-03-22

发表评论

登录后才能评论

评论列表(0条)

保存