在系统设计过程中,发现系统中存在大量的自动表,其结构非常的相似。考虑用一个表设计,但是同事说一个表看的不明白。我认为在数据库中统一字典表是有意义的。 
主要观点为虽然每个字典意义不同,那表现在对人的理解上,但结构对程序来说是重复,从重构的角度的来说,放在一块比较好。 
可是换种角度,如果是分表设计,也可以在程序设计时所有的字典的维护用一套程序。 字典设计到底是多表存储好还是单表存储好,综合考虑后,个人认为单表大一点,希望各位给个建议。

解决方案 »

  1.   

    按照你的说法,其实所有表 结构都相同
    SQL都是二维的!!!
    只是字段不同如果出于 易扩展和维护;考虑使用动态表!有一个问题,你设计的1或N长表,将来数据量非常庞大(所以不建议 经常变动的表做次设计)
    或你可考虑,分表保存(按模块分,或按数据类型分)
      

  2.   

    另外多说一句,我的表结构大体如下。
    Id,Type,Code,Name,OrderId,F1...F10(字符型),F11...F20(Decimal型)
      

  3.   

    一般来说,字典表中只要用decimal和string类型就代表其他的类型(int,bool,datatime),通过预设字段的方式,同一个字段在不同的类型中表示的含义可以不一致。当然需要另外定义表对象字段进行说明。
      

  4.   

    syscolumns和sysobjects里已有各种表的字段、类型等值
    遍历就要获取所有表属性
    根据需要构建不同表,很多使用的就可使用外键关联。
    表到实体时就可使用泛型
      

  5.   


    Create Table tbDictionary
    (
        UID INT NOT NULL IDENTITY(1,1)
        [Name] NVARCHAR(128) NOT NULL,
        [VALUE] NVARCHAR(128) NOT NULL,
        [TPYE] NVARCHAR(64) NOT NULL
    )
      

  6.   

    我的单表字典的应用一个场景就是,将列设计转换成行设计是的外键约束问题。
    列设计.EmpId,SexId,DepartId,LevelId转换成行设计就是EmpId,FieldType,FieldValue这样在外键关联式只需要FiledValue字段外键关联字典的DictId就可以保证全约束。PS:这个场景只是描述一下,可能不太恰当,但是大家应该都能看懂。