在系统设计过程中,发现系统中存在大量的自动表,其结构非常的相似。考虑用一个表设计,但是同事说一个表看的不明白。我认为在数据库中统一字典表是有意义的。
主要观点为虽然每个字典意义不同,那表现在对人的理解上,但结构对程序来说是重复,从重构的角度的来说,放在一块比较好。
可是换种角度,如果是分表设计,也可以在程序设计时所有的字典的维护用一套程序。 字典设计到底是多表存储好还是单表存储好,综合考虑后,个人认为单表大一点,希望各位给个建议。
主要观点为虽然每个字典意义不同,那表现在对人的理解上,但结构对程序来说是重复,从重构的角度的来说,放在一块比较好。
可是换种角度,如果是分表设计,也可以在程序设计时所有的字典的维护用一套程序。 字典设计到底是多表存储好还是单表存储好,综合考虑后,个人认为单表大一点,希望各位给个建议。
SQL都是二维的!!!
只是字段不同如果出于 易扩展和维护;考虑使用动态表!有一个问题,你设计的1或N长表,将来数据量非常庞大(所以不建议 经常变动的表做次设计)
或你可考虑,分表保存(按模块分,或按数据类型分)
Id,Type,Code,Name,OrderId,F1...F10(字符型),F11...F20(Decimal型)
遍历就要获取所有表属性
根据需要构建不同表,很多使用的就可使用外键关联。
表到实体时就可使用泛型
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
)
列设计.EmpId,SexId,DepartId,LevelId转换成行设计就是EmpId,FieldType,FieldValue这样在外键关联式只需要FiledValue字段外键关联字典的DictId就可以保证全约束。PS:这个场景只是描述一下,可能不太恰当,但是大家应该都能看懂。