日期:2014-05-18  浏览次数:20427 次

问问大家一个非常简单的数据库的设计问题
现在需要做一个学校的信息发布系统,需要发布的信息有教务考试信息、就业信息、通知等
但是每个信息是要将不同的属性标出的,就像XML文件那种,每个信息要分解成时间地点主题之类的
如果按大类分的话,大概分为以下几类
1、教务信息,包括考试信息、加课停课信息、答疑安排等
      主要属性包括:类型(考试、课程、答疑等)、课程名、面向对象、时间、地点等
2、就业信息
      主要属性包括:类型(招聘、实习、双选会等)、公司名、职位名、工作地点、招聘地点、时间、截止期限等
3、讲座信息
      主要属性包括:讲座类型、讲座题目、演讲人、地点、时间等

我们可以看到以上几个大类中属性重复的要素还是比较多的,比如都有时间、地点等。现在考虑数据库设计,是将每个大类装入不同的表,还是统一装入一张表,在显示信息时再有条件的选择项目?(比如表中有1-5这几个项目,如果是教务信息在显示时显示1-3项,就业则是3-5项。)或者是干脆采用XML形式存储?
因为我对这个基本没有什么了解,也没有任何经验,希望大家能大概指导我一下。主要就是数据库的表,应该只建立一个还是每种类型一个表?谢谢大家!!

------解决方案--------------------
一个大类一张表,大类中的“类型”另外建索引表。这样就变成了
教务信息表
就业信息表
讲座信息表

类型表:这个表是信息表的索引表,类型都放里面。
类型编号(主键) 类型描述 公有类型(bit类型,如果为真,则可以被所有信息表共享,如果为假,则看专属信息字段) 专属信息(这里描述了该类型属于哪张信息表专有,varchar(100))