目前有问题,不知如何设计数据表更为稳妥。情况如下:
有12种物品(暂时确定有12种)a1、a2、a3...a12。需要一张表记录该12种物品是否被选择。有两种设计
一:
product varchar(30) 用该字段存储物品的代号。如该字段数据a1a3a5代表选取1、3、5物品二:
建立12个字段用tinyint字段 0/1 确定是否被选择。这两种见表有什么优劣么?请高人指点

解决方案 »

  1.   

    物品表:
    物品ID 是否被选择
    a1     1
    a3     1
    a5     1    
    物品对照表
    物品ID 名称
    a1     ...
      

  2.   

    物品表里的是否被选择置1,不选择的置0么?不是也将所有的物品都要罗列出来。哦。是我的需求说的不明了。是有N多个客户去选择物品。每个客人只能从这12种里选择,但是选择的种类不唯一,要知道的是每个用户都选择了什么物品。不是以物品ID为连接的。
      

  3.   

    物品表里的是否被选择置1,不选择的置0么? 是不是也将所有的物品都要罗列出来  不用,通过连接可以查询出来哪些物品没有选择
    物品表:
    客户id 物品ID 是否被选择
    1      a1    1
    1      a3    1
    1      a5    1 
    2      a2    1 
    2      a4    1
    2      a6    1
    物品对照表
    物品ID 名称
    a1 ...
      

  4.   

    常规的设计是userid, materialid 
    张三 , A1
    张三 , A3
    张三 , A5
    李四 , A1
    李四,  A2你的两种方法都不符合传统的数据库设计要求。你的更新,统计等一系统操作会很复杂。如果有新的产品,你需要修改你的表结构来添加字段。并且一旦当你的产品多到上千时,会受到表最大字段上限  
      

  5.   

    你可以计算一下是多少记录。 300万条记录对MYSQL来说不至于崩掉。
      

  6.   

    因为是长年累积的,很可能会大于300万,以前使mysql。300万不到就会崩~
      

  7.   


    mysql的简介中说过,它可以支持亿级别的数据量。当然那个时候需要很高的硬件支持了,不过百万级别肯定是没问题的。不过需要设计的效率很高才行。