CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

再次请教数据表的设计

楼主duola1(朵啦)2003-08-01 21:32:14 在 MS-SQL Server / 疑难问题 提问

http://expert.csdn.net/Expert/topic/2096/2096678.xml?temp=.7741205  
  接上面这个问题  
  本人在做一个学生缴费模块,在数据表设计过程中有点疑问想请教一下:  
  如果收费项目是固定的(只有学杂费、教材费、住宿费),数据表可以这样设计:  
  1、收费项目表(项目编号,项目名称)  
                                  0001         学杂费  
                                  0002         教材费  
                                  0003         住宿费  
  2、学杂费表(项目编号,专业名称,           收费标准)  
                            0001     计算机及应用(专科)   5900  
                            0001     工商管理(本科)           3600  
                            ...  
  3、教材费表(项目编号,专业名称,           收费标准)  
                            0002     计算机及应用(专科)     300  
                            0002     工商管理(本科)             200  
                            ...  
  4、住宿费表(项目编号,住宿类型,收费标准)  
                            0003             4人间             1000  
                            0003             6人间               800  
                            ...  
  5、学生缴费信息表(学号,姓名,专业,                             班级,     是否住宿,应缴费,实缴费,找零,欠费,经办人,缴费日期)  
                          00000000001   张三     计算机及应用(专科)计算机001   走读           6200           6200       0           0           王五         03/08/02    
                          00000000002   李四     计算机及应用(专科)计算机001   寄宿           7000           6000       0           1000     王五         03/08/02  
                          ...  
  6、学生缴费清单表(学号,学杂费,教材费,住宿类型,住宿费)  
                            00000000001   5900         300            
                            00000000002   5900         300           6人间           800  
  说明:应缴费=学杂费+教材费+住宿费     (收费项目之和)  
   
  而现在的实际情况是收费项目每学期不是固定的,要由用户来定义。例如上面的收费项目包括学杂费、教材费、住宿费,用户也可能将收费项目定为学杂费、培养费、教材费、代办费等,且每个收费项目又可以有多个不同的收费标准,所以数据表不能像上面这样设计。请教一下数据表要如何设计比较好?  
  问题点数:50、回复次数:22Top

1 楼zjcxc(邹建)回复于 2003-08-01 21:52:04 得分 0

最好将收费项目归并为一个表设计:  
  1、收费项目表(项目编号,项目名称)  
                                  0001         学杂费  
                                  0002         教材费  
                                  0003         住宿费  
  2.收费项目明细表(项目编号,专业名称,收费标准)  
                            0001     计算机及应用(专科)   5900  
                            0001     工商管理(本科)           3600  
                            ...  
                            0002     计算机及应用(专科)     300  
                            0002     工商管理(本科)             200  
                            ...  
                            0003             4人间             1000  
                            0003             6人间               800  
  Top

2 楼zjcxc(邹建)回复于 2003-08-01 21:58:18 得分 0

明细表中还少了一个子编号:  
   
  2.收费项目明细表(项目编号,明细编号,专业名称,收费标准)  
                            0001     01     计算机及应用(专科)   5900  
                            0001     02     工商管理(本科)           3600  
                            ...  
                            0002     01     计算机及应用(专科)     300  
                            0002     02     工商管理(本科)             200  
                            ...  
                            0003     01     4人间             1000  
                            0003     02     6人间               800  
   
  3.学生信息表(学号,姓名,专业,班级,是否住宿)  
                          00000000001   张三     计算机及应用(专科)计算机001   走读  
                          00000000002   李四     计算机及应用(专科)计算机001   寄宿  
  4.学生费信息表(学号,项目编号,明细编号,应缴费,实缴费,找零,欠费,经办人,缴费日期)  
            00000000001   6200     0001   01       6200       0           0           王五         03/08/02    
            00000000002   7000     0003   02       6000       0           1000     王五         03/08/02  
            ......  
  Top

3 楼zjcxc(邹建)回复于 2003-08-01 22:01:11 得分 0

6.学生缴费清单表(学号,学杂费,教材费,住宿类型,住宿费)  
   
  这个表不用建,根据上面表中的数据,写一个存储过程,将它计算出来就行了.  
  这个计算要用到动态生成交叉表的知识.  
   
   
  这样,你的收费项目就可以随时变动了.  
   
  对于每个表,要根据编号建立主键.  
   
  对于   收费项目明细表,要用:项目编号   和明细编号   建立联合主键.  
  Top

4 楼duola1(朵啦)回复于 2003-08-01 22:07:54 得分 0

按zjcxc朋友的设计,存在问题:在学生费信息表中一个学号将对应多条记录  
  例:学号,       项目编号,明细编号,应缴费,实缴费,找零,欠费,经办人,缴费日期  
  00000000001   0001         01               5900  
  00000000001   0002         01               300  
  00000000002   0001         01               5900  
  00000000002   0002         01               300  
  00000000002   0003         02               800  
       
  Top

5 楼newly_ignorant(不学无术)回复于 2003-08-01 22:14:29 得分 25

不考虑合理性,可以这么设置  
   
  学生表......  
   
  收费标准表  
   
      收费类型、收费标准名称、收费标准  
   
  收费定义表  
   
      收费类型、学期、关联字段名  
   
  其中关联字段名来自学生表的字段名  
   
  统计实现过程,先从收费定义表找到本学期的各收费类型、以及它的关联字段名  
  取关联字段的值,结合收费类型、收费标准,就得到某收费类型的收费标准  
  循环收费定义表则得到该学生应收费用  
   
  .....Top

6 楼newly_ignorant(不学无术)回复于 2003-08-01 22:19:59 得分 0

至于各种名称什么的就统一放到字典表里面  
   
  字典表  
      字段名、编号、名称等Top

7 楼golden24kcn(不甜)回复于 2003-08-01 22:22:16 得分 0

upTop

8 楼duola1(朵啦)回复于 2003-08-01 22:31:48 得分 0

newly_ignorant朋友能否用具体数据说明一下?谢谢!Top

9 楼newly_ignorant(不学无术)回复于 2003-08-01 22:40:21 得分 0

无聊透了:(  
   
  字典表  
   
  字段名 编号 名称  
  收费标准 01 学费  
  收费标准 02 教材费  
  收费标准 03 住宿费  
  收费标准 04 杂费  
  专业名称 01 机械  
  专业名称 02 计算机  
  专业名称 03 经济管理  
  住宿类型 01 走读  
  住宿类型 02 四人间  
  住宿类型 03 六人间  
  。。。  
   
  Top

10 楼zjcxc(邹建)回复于 2003-08-01 22:46:22 得分 25

回楼主:  
  按zjcxc朋友的设计,存在问题:在学生费信息表中一个学号将对应多条记录  
   
   
   
   
  这个不是问题吧?为什么一个学号只能对应一条记录?  
   
  这个学生有多少个收费项目,就对应多少条记录不好吗?  
   
   
  比如,你的收费项目有20项,如果有大部分的学生都只用到了其中的某几项.  
  如果照你的表设计,岂不是有十多项经常是空置不用的?  
  Top

11 楼newly_ignorant(不学无术)回复于 2003-08-01 22:49:10 得分 0

字典表  
   
  字段名 编号 名称  
  收费类型 01 学费  
  收费类型 02 教材费  
  收费类型 03 住宿费  
  收费类型 04 杂费  
  专业名称 01 机械  
  专业名称 02 计算机  
  专业名称 03 经济管理  
  住宿类型 01 走读  
  住宿类型 02 四人间  
  住宿类型 03 六人间  
  。。。  
   
   
  学生表  
  学号 姓名 专业名称 住宿类型 应交缴费  
  20030001 张三 01 02  
  20030002 李四 03 03  
  。。。  
   
  收费定义表  
  收费类型 关联字段名 学期  
  01 专业名称 2003年上学期  
  02 专业名称 2003年上学期  
  03 住宿类型 2003年上学期  
  04 专业名称 2003年上学期  
  01 专业名称 2003年下学期  
  03 住宿类型 2003年上学期  
   
  收费标准表  
  收费类型编号 子项目编号 收费标准  
  01 01 1000  
  01 02 2000  
  01 03 0  
  02 01 50  
  02 03 40  
   
  Top

12 楼newly_ignorant(不学无术)回复于 2003-08-01 22:54:34 得分 0

计算某人收费,比如张三  
   
  从收费定义表中获得2003年上学期要收费的有01~04标准  
  对01标准,发现关联字段为专业名称,从学生表中取专业名称的值得01  
  从收费标准表,收费类型编号01而且子项目编号01的收费标准为1000  
   
  这样得到01标准张三应该交1000大洋,依次找出02~04收费标准,求和得到张三2003年上学期应收费Top

13 楼duola1(朵啦)回复于 2003-08-01 23:00:29 得分 0

zjcxc朋友:  
  我觉得按你的想法,数据表要设计为:  
  1、收费项目表(项目编号,项目名称)  
                                  0001         学杂费  
                                  0002         教材费  
                                  0003         住宿费  
  2.收费项目明细表(项目编号,明细编号,专业名称,           收费标准)  
                                    0001           01     计算机及应用(专科)   5900  
                                    0001           02     工商管理(本科)           3600  
                                    ...  
                                    0002           01     计算机及应用(专科)     300  
                                    0002           02     工商管理(本科)             200  
                                    ...  
                                    0003           01     4人间                               1000  
                                    0003           02     6人间                                 800  
                                    ...  
  3、学生缴费信息表(学号,姓名,专业,班级,是否住宿,应缴费,实缴费,找零,欠费,经办人,缴费日期)  
  4、学生缴费清单表(学号,项目编号,明细编号,收费标准)  
                             
   
   
   
  Top

14 楼duola1(朵啦)回复于 2003-08-01 23:01:49 得分 0

newly_ignorant朋友的方法我先消化一下再答复。Top

15 楼duola1(朵啦)回复于 2003-08-01 23:20:58 得分 0

newly_ignorant的方法是可行的,但存在一个问题:对于用户操作不是很友好。Top

16 楼newly_ignorant(不学无术)回复于 2003-08-01 23:26:35 得分 0

没有啊,显示的都是中文  
   
  计算可以考虑用存储过程实现  
   
  编程的时候稍复杂点而已Top

17 楼duola1(朵啦)回复于 2003-08-01 23:45:51 得分 0

首先用户要定义字典表就够让他们晕了。Top

18 楼newly_ignorant(不学无术)回复于 2003-08-01 23:48:45 得分 0

这种事情只需要做一次的,初始化数据这种工作有时候需要软件提供方协助完成的  
   
  客户只需要关心以后添加小量的东西就可以了  
   
  再说,界面做得合理点,客户仍然很容易理解的Top

19 楼duola1(朵啦)回复于 2003-08-01 23:51:54 得分 0

可是这个初始化工作是需要每学期做一次的,总不能每学期开学时软件提供方都去学校协助完成吧?Top

20 楼newly_ignorant(不学无术)回复于 2003-08-02 00:02:53 得分 0

字典表基本上不变,客户只需要每学期更新收费定义表而已  
   
  也就是填下这个学期要收哪些费用而已  
   
  Top

21 楼duola1(朵啦)回复于 2003-08-02 22:12:54 得分 0

字典表怎么会基本不变?字典表里有每个收费项目的名称、专业的名称,这些都是存在变化的。  
   
  Top

相关问题

  • 数据表设计问题
  • 数据表设计问题.
  • 请教数据表设计问题
  • 关于数据表设计问题
  • 火车时刻查询数据表设计问题???
  • 各位高手:数据表设计小问?
  • 站内短信服务的数据表如何设计
  • 高分请教数据表设计问题。
  • 问一个数据表的设计的问题
  • 问一个数据表设计的问题

关键词

  • 收费
  • 项目
  • 学期
  • 学号
  • 学杂费
  • 计算机
  • 专业
  • 教材
  • 应用
  • 学生

得分解答快速导航

  • 帖主:duola1
  • newly_ignorant
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo