各工序各存一个表,(如果各工序的要素,属性一致,就用一个表就好了,加个工序编号,各自不同的话,就拆分开)
如果工序之间存在先后关系,那么可以专门放个配置存工序(编码)先后次序,然后订单主表里放当前工序(编码)代表的状态就行了。
设计说明:
订单信息会被反复查到,所以要独立出来。
各工序之间无关联,意味每个工序的修改不会影响(查询,修改)其他工序,所以各自独立出来比较好,每个工序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查询就会更快。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)