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语句, ...
随机推荐
- *NOI热身赛C. 小x的城池
码农题gun.
- 标准C程序设计七---56
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- dedecms--二次开发文章内容页未登录禁止访问和同一个帐号只允许一个ip登录
最近在用dedecms二次开发会员功能,领导要求,会员未登录不允许访问文章内容页,和同一个账号只允许一个ip登录,我是将这两个在一起判断的,判断session存不存在,不存在的情况下就是未登录,这时候 ...
- ssm实现查看流程图
jsp <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=& ...
- arch 安装
xfce参考 http://my.oschina.net/u/1408707/blog/182581#OSC_h2_6 chm阅读 – chmsee作为一个苦逼的码农,要忍受各种chm文件的蹂躏,这个 ...
- PyTorch学习笔记之n-gram模型实现
import torch import torch.nn as nn from torch.autograd import Variable import torch.nn.functional as ...
- GO -- socket读取内容
func handleRead(conn net.Conn, done chan string) { for { buf := make([]) reqLen, err := conn.Read(bu ...
- mac 安装scrapy
https://jingyan.baidu.com/article/14bd256e748346bb6d2612be.html 1.安装Python 安装完了记得配置环境,将python目录和pyth ...
- Utuntu 和 window共享文件
由于自己想用服务器跑代码,数据集和模型一般都在本机电脑上,用实验室服务器需要拷贝数据或者,在服务器上重新下载数据很麻烦 都在局域网内可以实现文件共享,代码和数据都在本地,共享给服务器,只需要使用服务器 ...
- [Algorithms] Sort an Array with a Nested for Loop using Insertion Sort in JavaScript
nsertion sort is another sorting algorithm that closely resembles how we might sort items in the phy ...