有三个表
1. 商品表(商品编号,商品规格,商品条码,商品名称,商品单位)
2.销售主表(销售单ID,销售日期,销售人员编号,销售人员姓名)
3.销售明细表(商品编号,销售人员编号,销售数量,销售日期)
问题:
1.要为每个表建立一个数据模型
2. 写一个SQL语句,在2008.1.1到2008.3.1,每个销售人员销售每件商品的总数。要求结
果中要包括销售人员姓名,商品名称,销售每件商品的总数
看到题目首先明确概念:
主表中的日期是销售清单产生的日期,明细表中的销售日期是单个商品的销售日期。
一张销售清单中可能有多个商品售出。
很久没写SQL语句了,硬着头皮写了个
首先建三个表:
商品表: product(productid#, spec, barcode, name, unit)
销售主表: sale(saleid#, date, staffid, staffname)
销售明细表: detail(productid#,staffid#,num, date)
select s.staffname, p.name, sum(d.num)
from product p, sale s, detail d
where s.staffid = d.staffid and p.productid = d.productid
group by d.productid
having s.date between '2008-1-1' and '2008-3-1'
热心的水木网友licy也写了一个:
select p.name, s.staffname, t.productSum
from product p, sale s,
(select staffid, productid, sum(num) as productSum
from detail
where date between '2008-1-1' and '2008-3-1'
group by staffid,productid) t
where p.productid = t.productid and s.staffid = t.staffid
没考虑左右连接之类的.
认真看过licy写的,我写的错了,错在group by d.productid这行,这里丢了一个d.staffid,不能按销售人员统计商品数量。
再回头看看题目中表设计得挺别扭,原来这里存里两个问题:
1> 销售主表存在传递依赖, 销售单ID-->销售人员编号-->销售人员姓名,应该拆出一个销售人员表。
2>销售主表和销售明细表中都存在一个销售日期字段,冗余。
同时,从这个例子中可以看出关系数据库的局限性,如果要保存每个销售单中的内容是很不方便,因为单子里商品数量不是固定的,而每个销售单建个小表也是不现实的,这样的需求用XML数据库就很合适了。
后记:
今天(09/01/08)看了这篇文章 http://blog.csdn.net/liuzuofei/archive/2009/01/07/3727793.aspx
文章结尾处的有这样的观点:
但是第三范式的弊端在于关联性太多,如是在对于查询时,会造成瓶颈。由此回到前面所说的“第三范式首先应该被抛弃”....
话虽这么说,销售主表不符合第三范式可能带来的问题就是,无法对销售人员数据进行添加和删除,而且销售人员姓名数据冗余。
分享到:
相关推荐
数据库工程师常见面试题,优秀数据库工程师之路——MySQL数据库经验及技巧大汇总,数据库工程师职业规划,数据库工程师面试技巧,MySQL常用命令速查手册
总结面试经验,集成一套面全面面试题供大家参考学习....
收集总结了许多学长面试不同公司时面到的实际面试题。以及分享了回答问题的经验。 自己在去年10月份校招时,感觉有点用,特别是在给自己查漏补缺方面有一定的帮助。可以边看边结合里面提供的代码进行上机试验,已...
总结: 系统优缺点:本系统是在学习过数据库系统原理后用MFC语言所做的 一款系统,具有简易的图书馆信息管理功能,但是对于惩罚系统和对借 阅时间的管理上做的不够完善和智能,操作界面略显简陋,不够优美赏 心悦目...
mysql面试题以及相关技巧经验总结(MySQL常见错误及解决方案、MySQL常用命令速查手册、深入浅出MySQL数据库开发、优化与管理维护、常见面试题、面试技巧、职业规划、经验及技巧大汇总)
葵花宝典(给刚刚毕业没有经验的人准备的,有了它基本笔试可以搞定了),同学培训是培训学校给的面试题(其实培训后,面试全是靠这个过关的),葵花宝典 (欲练此功,必先自宫)里面覆盖了比较全面,面试经常出现的...
大型数据库课程设计 设计报告 题 目: 网吧管理系统数据库 学 号: 学生姓名: 指导教师: 提交时间: 2013-11-23 第1章 需求分析 1。1 需求分析任务 1。2 需求分析过程 1.3 数据字典和流程图 1。4 系统功能分析 ...
本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心...
本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心...
【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..
跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题库 高吞吐低延迟Java应用的垃圾回收优化.docx 黑马...
跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题 面试题库 高吞吐低延迟Java应用的垃圾回收优化....
2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用...
跳还是不跳,是一个问题——跳槽时该如何权衡?.docx 进入IT企业必读的324个JAVA面试题.pdf 阿里2015实习生-客户端笔试题目解析.docx 面试帮-IT面试宝典.apk 面试题 面试题库 高吞吐低延迟Java应用的垃圾回收优化....
本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心...
第一章 数据库应用系统开发方法。数据库三级考试,对应真题考试题做的各章节思维导图,以及易错和难题,选择题,应用题和填空题的总结。经验分享~希望大家都能通过考试!
十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...
资源包中囊括了MySQL数据库中的存储过程的...该资源下所有内容都是本人的日常软件开发经验总结,对于初学者使用MySQL存储过程的程序员具有重要参考价值,问大家要10分是不过分的,用过就知道了,欢迎大家下载参考及使用