之前第一遍机房收费的时候,用的数据库是别人的。认知也仅仅能建立在别人的基础上,等自考中《数据库系统原理》这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化。以下是我设计数据库的一些见解。希望大家多提些意见。

数据库设计

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版机房收费系统—数据库设计的更多相关文章

  1. VB.NET版机房收费系统---导出Excel表格

    datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...

  2. VB.NET版机房收费系统---异常处理

    异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...

  3. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  4. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

  5. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  6. VB.NET版机房收费系统---组合查询

    查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...

  7. VB.NET版机房收费系统---外观层如何写

    外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...

  8. VB.NET版机房收费系统---外观层怎样写

    外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...

  9. VB.NET版机房收费系统—DataGridView应用

    事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句, ...

随机推荐

  1. 2017 UESTC Training for Data Structures-解题报告

    题目链接:http://acm.uestc.edu.cn/#/contest/show/155 这个数据结构训练主要针对线段树,树转数组和并查集.比较适合刚入门数据结构的同学. 注意,因为后面题的代码 ...

  2. Java基础加强-(注解,动态代理,类加载器,servlet3.0新特性)

    1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annota ...

  3. Atcoder CODE FESTIVAL 2017 qual B C - 3 Steps 二分图

    题目链接 题意 给定一个无向图,\(n\)个点,\(m\)条边(\(n,m\leq 1e5\)). 重复如下操作: 选择相异的两点u,v满足从点u出发走三条边恰好能到达点v.在这样的u,v点对之间添一 ...

  4. strace工具的实现原理【转】

    转自:http://blog.csdn.net/jasonchen_gbd/article/details/44044539 版权声明:本文为博主原创文章,转载请附上原博链接.   目录(?)[-] ...

  5. svn不是内部或外部命令?

    svn不是内部或外部命令? 我的系统是Win7, [计算机]-->右键[属性]-->[高级系统设置]-->[环境变量]-->[系统变量 (S)]-->[Path]--&g ...

  6. R语言集合函数

    union intersect setdiff(A,B):A-B A %in% B :A是否存在于B

  7. PAT 甲级 1045 Favorite Color Stripe(DP)

    题目链接 Favorite Color Stripe 题意:给定$A$序列和$B$序列,你需要在$B$序列中找出任意一个最长的子序列,使得这个子序列也是$A$的子序列 (这个子序列的相邻元素可以重复) ...

  8. T1155 金明的预算方案 codevs

    累~~~  http://codevs.cn/problem/1155/ 题目描述 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高 ...

  9. luogu P1402 酒店之王

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...

  10. Parameter Binding in ASP.NET Web API #Reprinted

    http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api