工厂中的零件编号一般采取以下规则:
0000.0000.00
1.第一组数字编号表示零件分类,如:
零件分类编号 零件
0001 CPU
0002 Memory
0003 GPU
0004 Main Board
0005 Monitor2.第二组数字表示某零件分类的零件编号,如
0001.0001 core2 T5600,
0001.0002 core2 P8400
0003.0001 HD 5850
0003.0002 GTX 2853.末尾数字表示版本号这样要怎么建立表格呢?
1.首先要建立一个零件分类表格:
partTypeID, partType...
2.建立零件表格:
partID, partTypeID, number, version...可是,当增加数据的时候怎么样才能保证
第二组数字表示的某零件分类的零件编号没有出现过,且是以前最大编号+1呢?
0000.0000.00
1.第一组数字编号表示零件分类,如:
零件分类编号 零件
0001 CPU
0002 Memory
0003 GPU
0004 Main Board
0005 Monitor2.第二组数字表示某零件分类的零件编号,如
0001.0001 core2 T5600,
0001.0002 core2 P8400
0003.0001 HD 5850
0003.0002 GTX 2853.末尾数字表示版本号这样要怎么建立表格呢?
1.首先要建立一个零件分类表格:
partTypeID, partType...
2.建立零件表格:
partID, partTypeID, number, version...可是,当增加数据的时候怎么样才能保证
第二组数字表示的某零件分类的零件编号没有出现过,且是以前最大编号+1呢?
2.第二组数字表示某零件分类的零件编号,如则应该按照你的设计分成两个表
零件分类表 (partTypeID, partType, ...)
零件表 (partID, partTypeID, number, version...)
---------------------------------------
增加一个自增字段ID,然后取partID=right(10000+ID,4)
方法一:在你的应用程序代码中进行检查并生成这个 partID
select max(partID) from 零件表 where partTypeID='0000', 然后 +1
方法二:在触发器中实现,在 零件表 的 before insert 中利用上面的SQL语句,得到本 partTypeID 中最大的 partID 然后加一。同样对NULL处理一下。
0003.0001.00 HD 5850-1G
0003.0001.01 HD 5850-1.5G
0003.0002.00 GTX 285-1G
0003.0002.01 GTX 285-1.5G这种结构有一个很严重的问题就是:
每次新增数据都要找出某零件的已有编号。
而且partTypeID, number, version还要增加唯一索引,
如果有这三列的唯一索了,还需不需要
零件表 (partID, partTypeID, number, version...) 中的partID自增字段呢?
零件分类表 (partTypeID, partType, ...)
零件表 (partID,version, partTypeID, number, ....)零件表 中数据partTypeID partID version number
0003 0001 00 HD 5850-1G
0003 0001 01 HD 5850-1.5G
0003 0002 00 GTX 285-1G
0003 0002 01 GTX 285-1.5G生成新号码,仍然是用程序或触发器如果 partID 为空,则按照上述生成新的 partID, version=0
如果 partID 不为空,则查找上次最大的 version 然后 version+1
partTypeID partID version number
0003 0001 00 HD 5850-1G
0003 0001 01 HD 5850-1.5G
0003 0002 00 GTX 285-1G
0003 0002 01 GTX 285-1.5G
如果哦有更新加入partID
partID version number
00030001 00 HD 5850-1G
00030001 01 HD 5850-1.5G
00030002 00 GTX 285-1G
00030002 01 GTX 285-1.5G