我的数据库是这样设计的,先设计了一些基础信息表(比如说性别表,籍贯表,血型表等等),这些表都是单独的表。现在还要设计一张学生表,问题来了:
学生表里面的信息,要来自于这些信息表中,但是还要能够动态的添加与删除,也就是说比如我现在添加性别,那么在做学生信息时,就要能够有添加性别这一项,如果把这一项删除,那么在添加学生信息时,性别就没有了。
我搞的是asp.net程序,请问各位大侠,这样的需求,数据库应该怎么设计比较合理呢,先谢过了。
大家可以看看下图:
在表与表之间建立关联啊
表冗余 性别这类的 完全没有必要单独成表
1、这个东西要肯定你添加或者删除的栏目(像你说的性别之类的)是你事先有的吧,不是后来用户自己添加的栏目吧
2、你可以现在表中有10个字段,然后再另外的表维护这10个字段是否显示,用户填写的栏目就是你设置为显示的栏目,不显示填写的时候就不用出现了
3、或者高级一些的,你可能需要用户字可以自定义栏目,但是这些栏目1)可以定义规则,然后参与固定的几种运算2)没有规则,就是一些说明类的,就能显示一下,没有什么实际意义
性别、血型这类表需要单独成表?没这个必要吧。
基础信息表建议做成Dict字典表形式,参考结构
Id TypeEnum Value
1 0 A型
2 0 B型
3 1 男
在Student表里进行引用就可以了,这样既可以减少冗余,同时又保持结构的简洁,因为这里的信息是很少维护的,属于系统预置的