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语句, ...
随机推荐
- linux centos7无法连接ssh
在centos7连接ssh时,参考了以下博文,终于完美解决 https://blog.csdn.net/trackle400/article/details/52755571 1. 首先,要确保Ce ...
- 58同城职位分类数据 json
{ "level0": {"0": "销售", "1": "客服", "2": ...
- LeetCode OJ--Best Time to Buy and Sell Stock III
http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ 这三道题,很好的进阶.1题简单处理,2题使用贪心,3题使用动态 ...
- 神秘的FrontCache
用jmap -histo的时候,发现堆内存中有很多奇怪的对象,其class name为 java.util.HashMap$FrontCache 跳转到HashMap的源码中,直接搜索FrontCac ...
- 在线扩展根分区 red hat 4.8.3-9
跑程序的时候发现报错,提示空间不足,仔细查看后发现是根分区已满 27G的空间只有20k剩余 考虑从/data分区压缩一点空间到/分区 切换到root用户 执行下面的命令 1. umount /data ...
- (39)C#Ping类
一.Ping类 引用命名空间 using System.Net.NetworkInformation 控制台版 using System; using System.Collections.Gener ...
- ARC072/ABC059
AtCoder Regular Contest 072 / Beginner Contest 059 Announcement <br > 猛然发现今天有一场AC.....然后..显示手残 ...
- String,StringBuffer,StringBuilder源码分析
1.类结构 String Diagrams StringBuffer Diagrams StringBuilder Diagrams 通过以上Diagrams可以看出,String,StringBuf ...
- Linux BPF/bcc for Oracle Tracing
Luca Canali on 26 May 2016 Topic: In this post you will find a short discussion and pointers to the ...
- Leanote 二进制版详细安装教程 Windows
https://github.com/leanote/leanote/wiki 本教程适合 Windows 用户的二进制版安装. Windows 用户的源码版安装,参见这里. Mac, Linux 用 ...