工厂中的零件编号一般采取以下规则:
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呢?

解决方案 »

  1.   

    这个你没有说明,所有无法判断你的设计如何。在没有这个要求的基础上。即仅考虑你的前两个1.第一组数字编号表示零件分类,如:
    2.第二组数字表示某零件分类的零件编号,如则应该按照你的设计分成两个表
    零件分类表 (partTypeID, partType, ...)
    零件表 (partID, partTypeID, number, version...)
      

  2.   

    第二组数字表示的某零件分类的零件编号没有出现过,且是以前最大编号+1呢?
    ---------------------------------------
    增加一个自增字段ID,然后取partID=right(10000+ID,4)
      

  3.   


    方法一:在你的应用程序代码中进行检查并生成这个 partID 
      select max(partID) from 零件表 where partTypeID='0000', 然后 +1
    方法二:在触发器中实现,在  零件表 的 before insert 中利用上面的SQL语句,得到本 partTypeID 中最大的 partID 然后加一。同样对NULL处理一下。
      

  4.   

    对了,你上面的版本号字段version是否要考虑某零件分类的零件编号下唯一呢?还是多条记录?或只保留最后的版本号呢?
      

  5.   

    3.末尾数字表示版本号,如:
    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自增字段呢?
      

  6.   

    你这里的“number”你想表示什么呢?
      

  7.   

    考虑你的版本号(为什么一开始不肯说呢?)则应该按照你的设计分成两个表
    零件分类表 (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
      

  8.   

    你可以先建立partTypeID
    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