关于数据库设计的一个思索-这样做是不好的
2008-09-29 23:52
197 查看
先附上图给大家看
![](http://images.cnblogs.com/cnblogs_com/superwulei/2008-9/db1.png)
今日在设计这个数据库的时候突发灵感,我想:在设计教师表、外聘教师表和授课教师表的时候,是否可以运用面向对象中的知识呢?
三个表是今天我们要讨论的焦点,其他表可以先不看。在这个设计中,教师和外聘教师是两类不同的教师,教师拥有自己的ID而外聘教师也拥有自己的ID,如何通过给出的一个ID判断其是教师还是外聘教师?是哪一个教师还是那一个外聘教师呢?我想了很多办法,但是我最终确定了一个办法,这就是建立另外一个表存储两者的信息,通过这个新加入的表来判断。接着,我看到了教师和外聘教师表中都有共同的属性:性别、宅电、手机号等。于是,我很自然地想到了在面向对象中所学的知识,将其共同属性提出来建立一个新“类”,这个新“类”就是“授课教师表”。将这些共同的属性提到授课教师表中后,我使用教师表和外聘教师表分别继承这个表,然后再保留教师表和外聘教师表中特有的属性,这不是很好么?我很得意。可是当我去掉教师表和外聘教师表中这些共同的属性后,当我看到“赤裸”的教师表和外聘教师表的时候,我突然想到——我错了。我认为这样设计固然可以,这样设计节省了存储空间,加快了查询速度等;但是这违背了基本的设计思想。教师表就应该存储教师表的东西,外聘教师表亦然,授课教师表亦然如此。为什么,因为在面向对象中,子类继承了父类,而数据库中并非这样,如果要实现教师表或者外聘表共有的属性需要通过双表链接来进行操作,这样和面向对象是不一样的。而且,不能滥用面向对象。
PS:各位网友看看我这样设计还有什么需要更正之处或者改善之处,谢谢大家给我提好的建议。这是老师给我的第一个真题,因此我要好好完成它。
![](http://images.cnblogs.com/cnblogs_com/superwulei/2008-9/db1.png)
今日在设计这个数据库的时候突发灵感,我想:在设计教师表、外聘教师表和授课教师表的时候,是否可以运用面向对象中的知识呢?
三个表是今天我们要讨论的焦点,其他表可以先不看。在这个设计中,教师和外聘教师是两类不同的教师,教师拥有自己的ID而外聘教师也拥有自己的ID,如何通过给出的一个ID判断其是教师还是外聘教师?是哪一个教师还是那一个外聘教师呢?我想了很多办法,但是我最终确定了一个办法,这就是建立另外一个表存储两者的信息,通过这个新加入的表来判断。接着,我看到了教师和外聘教师表中都有共同的属性:性别、宅电、手机号等。于是,我很自然地想到了在面向对象中所学的知识,将其共同属性提出来建立一个新“类”,这个新“类”就是“授课教师表”。将这些共同的属性提到授课教师表中后,我使用教师表和外聘教师表分别继承这个表,然后再保留教师表和外聘教师表中特有的属性,这不是很好么?我很得意。可是当我去掉教师表和外聘教师表中这些共同的属性后,当我看到“赤裸”的教师表和外聘教师表的时候,我突然想到——我错了。我认为这样设计固然可以,这样设计节省了存储空间,加快了查询速度等;但是这违背了基本的设计思想。教师表就应该存储教师表的东西,外聘教师表亦然,授课教师表亦然如此。为什么,因为在面向对象中,子类继承了父类,而数据库中并非这样,如果要实现教师表或者外聘表共有的属性需要通过双表链接来进行操作,这样和面向对象是不一样的。而且,不能滥用面向对象。
PS:各位网友看看我这样设计还有什么需要更正之处或者改善之处,谢谢大家给我提好的建议。这是老师给我的第一个真题,因此我要好好完成它。
相关文章推荐
- 一个关于继承和多态的问题(思索篇)
- 关于右键菜单 不好用的一个解决方案
- 为什么你写不好一个快速排序?关于
- 关于windows下adb不好使那些事
- 一个关于webservice的Axis问题 Processing file deploy.wsdd Exception: deploy.wsdd (系统找不到指定的文件。)
- 一个关于360和腾讯的调查
- 一个关于在vertx中使用jersey框架接收text/xml类型的问题
- 关于怎么让多个程序搭建在一个服务器上,搭建一个适合与架构师使用的开发与实现环境
- 关于RelativeLayout的一个奇怪问题
- C# 关于反射类[System.Reflection]的一个小例子
- 一个关于用Struts实现文件上传异常的解决
- 收藏关于Linux IPC的一个系列的文章
- 关于HBase MVCC的设计原理以及MVCC所引起的一个scan问题
- 关于一个int *ptr=(int *)(&a+1)问题的探讨
- 关于释放指针引发的一个错误
- 一个关于CSS Z-index 的东东,解决了我很多疑问
- 发现一个关于测试的好blog
- 一个关于Show窗口与Invalidate();顺序问题
- Android中关于短信侦听的一个类
- 关于一个VC++6.0技术内幕的COM错误问题,错误信息:error C2504: 'IMotion' : base class undefined