Office中国论坛/Access中国论坛

标题: 【新手入门】之二十六:查询的大型翻车现场——再谈表设计范式(之三) [打印本页]

作者: roych    时间: 2020-4-12 18:43
标题: 【新手入门】之二十六:查询的大型翻车现场——再谈表设计范式(之三)
按前面拆解完之后,我们可以开始建表了。
学生信息表没什么好说的,都符合表设计范式,所以我们只需要把学籍号设置为主键即可。
重点是测试成绩表和成绩指标表:
[attach]63719[/attach]
我们先来看看数据库第一范式:数据库表中的字段都是单一属性的,不可再分。看到这里,很多人可能会问,这表确实是单一不可分了啊。身高一列,体重一列,800米一列…每一列都是单一属性,都是数值型字段。有什么问题吗?
乍一听似乎确实没什么问题。但我们仔细想想,这些是不是都应该归类为考试项目呢?既然都归类为考试项目,它们只是不同的考试项目,为什么还要分成不同的列呢?
——这时候有人可能会抬杠了:为什么有些表设计会把省份、城市和地址拆开?难道它们不符合第一范式了?
——现在我来回答这个问题:因为实际应用中,可能会经常访问到这两个字段,例如,你可能需要统计每个省公司的销量,你可能要查看某些销量低的地级市。一个笼统的地址没法直接给到这样的结果,你可能需要使用like或者in之类查询。而这个表呢?我们是不是可以通过查询“身高”(直接关联,而不需要用like之类)得到每个学生的身高?
因此,这张表需要化宽为长,大体修改为如下:
[attach]63720[/attach]
有人可能会问了,这个51项目是什么?为什么不用文字表示?我们将在下一节讲解。

【新手入门】之一:If分支语句
【新手入门】之二:分支语句总结
【新手入门】之三:循环语句For
【新手入门】之四:循环语句Do和死循环
【新手入门】之五:公共变量与传址过程、传值过程
【新手入门】之六:“悲欢离合总无情”——浅谈Split和Join
【新手入门】之七:嵌套与并列——再谈If流程问题
【新手入门】之八:“连就连”——浅谈“&”和“+”连接符的区别

【新手入门】之九:从百钱百鸡谈起——浅谈“规划求解”兼答lingjiang问
【新手入门】之十:书到用时方恨少——自定义菜单(Access 2003)的制作
【新手入门】之十一:浅谈ADO之序言
【新手入门】之十二:浅谈ADO之Connection
【新手入门】之十三:浅谈ADO之Conmmand(上)
【新手入门】之十四:浅谈ADO之Command(下)
【新手入门】之十五:浅谈ADO之Recordset(上)
【新手入门】之十六:浅谈ADO之Recordset(下)
【新手入门】之十七:浅谈列表框的使用
【新手入门】之十八:双击列表框修改数据
【新手入门】之十九:从“书与女友恕不外借”谈起——浅谈“Bookmark”的使用
【新手入门】之二十:“书与书签”——bookmark属性答疑
【新手入门】之二十一:记录集的“凌迟”——逐条导出记录集
【新手入门】之二十二:分组行号
【新手入门】之二十三:“富则妻妾成群”——浅谈一对多录入数据
【新手入门】之二十四:查询的大型翻车现场——再谈表设计范式(之一)
【新手入门】之二十五:查询的大型翻车现场——再谈表设计范式(之二)
【新手入门】之二十六:查询的大型翻车现场——再谈表设计范式(之三)
【新手入门】之二十七:查询的大型翻车现场——再谈表设计范式(之四)

【新手进阶】之一:基础算法(一)
【新手进阶】之二:基础算法(二)
【新手进阶】之三:基础算法(三)
【新手进阶】之四:基础算法(四)
【新手进阶】之五:排序搜索(一)
【新手进阶】之六:排序搜索(二)
【新手进阶】之七:递归算法
【新手进阶】之八:冒泡排序
【新手进阶】之九:浅谈不绑定数据源操作记录
【新手进阶】之十:工作日的计算
【新手进阶】之十一:“庖丁解牛”和“纪昌学射”——浅谈表格式文本数据的导入
【新手进阶】之十二:从四脚腾空的奔马谈起——原来界面可以这样设计
【新手进阶】之十三:Outlook风格导航界面
【新手进阶】之十四:仓库管理系统【新手进阶】之十五:你可能遇到了一个假的标签效果







欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3