VB.NET版机房收费系统—数据库设计
之前第一遍机房收费的时候,用的数据库是别人的。认知也仅仅能建立在别人的基础上,等自考中《数据库系统原理》这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化。以下是我设计数据库的一些见解。希望大家多提些意见。
数据库设计
E-R模型:
在观念模型设计阶段,一个系统都是建立在ER模型上的,设计好ER模型,非常重要。
我设计的ER图:
系统中的实体:非常easy,就是将系统中的名词都抽象出来,再详细了就是转换为数据库的逻辑设计时才要考虑的。
系统中的联系:在图中能够看得非常清楚,这里我要重点说的是:
(1)我将T_student表和T_card表分开。是由于之前的设计违反了第三范式,学生和卡号为什么是一对一的关系呢?由于我的设计思想是:一个学生仅仅能有一张卡能够正常使用。其它的,比方说,学生丢了卡了,之前的那张卡不能够使用了。可是卡表里面还是会保存这张不在使用的卡的信息。因此,卡表和学生表分开。但一个学生仅仅能使用一张卡。
(2)这次设计,将曾经的line表和online表和为一张表T_online表,图1所看到的;将曾经的onWork和wordlog表合为一张表T_WordLog表。图2所看到的。将CheckWeek表删除(由于和CheckDay表一样,仅仅是查询条件不同罢了。
)
设计后的T_line表:
图1
设计后的T_WordLog表:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDU0MDEwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
图2
ER的联系:系统ER图中,能够非常清楚的看到他们之间的联系。有1对1。1对多。多对1。多对多的,这个关系一定要理清,就算你的和别人的不一样。没有关系。由于设计的时候,想法不一样,就会产生不同的效果。
ER的属性:详见后面关系模型。
综上就是ER图的设计,事实上。ER设计出来的时候,非常多人都有不同的想法,比方,有的人说我的学生表和卡表分开就会非常乱,注冊的时候。要分开注冊,非常复杂。我认为大家能够各自尝试一下,仁者见仁、智者见智嘛!
仅仅要别人问的时候。给自己一个说法即可了。
关系模型:
ER图中的主要成分是实体类型和联系类型。转换算法就是怎样把实体类型、联系类型转换成联系模式。
ER实体类型转换:(ER图中矩形框的都为实体,可建表):
T_BasicData(Rate,TmpRate,unitTime,leastTime,PrePareTime,limitCash,Head)
T_Card(CardNo,RegisterDateTime,CacncelDateTime,Cash,Head,Type,status)
T_Student(studentNo,CardNo,StudentName,Age,Sex,Department,Grade,Class,Date,Time,Explain)
T_User(UserID,serName,Level,Password。Computer,Head)
T_CheckDay(LastCash,Head,Recharge,CancelCash,ConsumeCash,nowCash,Computer,Status)
T_WordLog(UserID,Level,LoginDate,LoginTime,LogoutDate,LogoutTime,Computer,Status)
ER关系转换:
对于1比1关系,T_student表中能够增加CardNo的字段(StudentNo为主键,CardNo为外键)。
对于1:N关系,能够适当的增加属性值。
对于N:M关系。关系就是一个模式(蓝色菱形 T_Line和T_Recharge)
T_Line(Cardno,Head,OnlienDateTim,OutlineDateTime,ConsumeTime,Consume,Computer,Status)
T_Recharge(CardNo,Head,Recharge,DateTime,Ischeck)
好了一定看看是够符合三范式的要求:
第一范式:属性不可分。事实上这个非常easy就能够看出来。属性值仅仅能是多个单值属性。
第二范式:消除部分依赖,这一条非常easy被功能打乱。由于非常多人都是依据功能来安排属性的,这里能够这么做,做好了之后。检查一下,有没有存在局部依赖。去掉即可了。
第三范式:消除传递依赖,这个得好好看看了。向之前的student表和card表合为一个表事实上里面存在着传递依赖,分开就对了。
设计数据库:
最基本的是注意数据类型吧。这个还是须要看看代码的,我第一版的系统中d全部的日期时间。都是用的DateTime这种数据类型。在vb.net中一定要看看是不是会出问题。
综上,我们要学会应用我们学习到了知识,我学的数据库太浅,非常多还是建立在原来数据库的基础上的。可是我相信,当我们努力学习。大胆尝试,还是非常快就会有所收获的,上面的数据库仅仅是个人的一些想法,有更好的。大家一起分享,交流。
VB.NET版机房收费系统—数据库设计的更多相关文章
- VB.NET版机房收费系统---导出Excel表格
datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...
- VB.NET版机房收费系统---异常处理
异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...
- VB.net版机房收费系统——结账功能实现(调错与优化)
调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...
- VB.NET版机房收费系统---报表
报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- VB.NET版机房收费系统---组合查询
查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...
- VB.NET版机房收费系统---外观层如何写
外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...
- VB.NET版机房收费系统---外观层怎样写
外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...
- VB.NET版机房收费系统—DataGridView应用
事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句, ...
随机推荐
- [暑假集训--数论]poj2657 Comfort
Description A game-board consists of N fields placed around a circle. Fields are successively number ...
- Pushlets的初始化陷阱
Pushlets是在类名为Pushlet的servlet的init方法中进行初始化的.一般我们会在web.xml配置pushlet的时候,指定其servlet在Web应用启动时就进行初始化,即便这样, ...
- 呕心沥血之作:完美解决Informix的中文乱码问题
Informix是IBM旗下的一款数据库,要不是这个项目需要,估计这辈子我都不知道居然还有这么一款数据库.想来公司的项目遍布全国各地,各种部署环境各种应用场景应有尽有,七七八八的问了一大堆的各项目组兄 ...
- python 之 线程池实现并发
使用线程池实现高IO并发 模块:ThreadPoolExecutor, as_completed 测试代码如下: #!/opt/python3/bin/python3 from concurrent. ...
- Codeforces 932 B.Recursive Queries-前缀和 (ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined))
B. Recursive Queries time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- RSA 公钥加密算法
RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的. 这个算法的名字也是他们三个人名字首字母,RSA算法基于一个十分简单的数 ...
- Web前端入门知识
第一阶段:理论知识 第一章:协议理解 第二阶段:了解知识 第二章:前端简介 第三阶段:入门知识 第三章:标签结构 第四章:常用标签 第四阶段:样式搭配 第五章:样式初见 第六章:属性选择 第七章:属性 ...
- 洛谷——P1187 3D模型
P1187 3D模型 题目描述 一座城市建立在规则的n×m网格上,并且网格均由1×1正方形构成.在每个网格上都可以有一个建筑,建筑由若干个1×1×1的立方体搭建而成(也就是所有建筑的底部都在同一平面上 ...
- AtCoder - 3913 XOR Tree
Problem Statement You are given a tree with N vertices. The vertices are numbered 0 through N−1, and ...
- 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)
文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...