用基本特性描述表加基本表的做法:
比如:
表-脚:               表-毛                表-眼睛     
ID, 特征1,特征2      ID, 特征1,特征2     ID, 特征1,特征2 
001,长脚,瘸子       001,长毛,有点秃    001,蓝眼睛,玻璃眼
002,短脚,能跑       002,短毛,蓝色      003,黑眼睛,亮宠物表
宠物编号     名称能够    脚特征      毛特征     眼睛特征
0002          狗        002           001       003
0003          猫        001            002      001这样可以基本描述清楚,而且做程序也不复杂

解决方案 »

  1.   

    可是如果原来的宠物中没有长角的,现在来个长角的难道还要改变表结构在宠物表的特性里再加啊?根据poormsteven(STEVEN) 的结构
    zjcxc(: 邹建 :) 的结构好像比较可行,不过一个宠物要有好几条记录了
      

  2.   

    我明办你的意思,把列变成行,老大的表确实不错,但是要考虑到客户的查询能力,现实情况下肯定会碰到把行变成列的情况和动态的sql语句,对于能力不是很强的客户,不知道能不能接收,我的意思是划分基本的特征,如头,脚,等等,而基本表,宠物表不变,如果要增加小的特性,在头,脚之类的表里增加就行了,改动量不会很大,而且也简单,客户应该能接受。
      

  3.   

    答:一个宠物要有好几条记录了
    ===这种情况完全正常,数据库设计很多时候都会这样,如果说一定要一宠物一行则必须变成:宠物编号 特征1 特征2 特征3 .... 特征N 这种结构缺点不用多说了吧我觉得这样更好:
    宠物表
    宠物编号  宠物名称  .....宠物特征类型表
    特征编号  特征类型  特征描述
      001       脚         长
      002       眼         蓝色
    宠物特征表
    宠物编号   特征编号  
      A001   001  
      A001   002  当然表2,3也可考虑合并成一个表
    宠物特征表
    宠物编号   特征类型  特征描述
      A001      脚         长
      A001      眼         蓝色我觉得这样查询比较方便,灵活性强