夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> vs2022_vs2019_vs2017_vs2014_vs2012
ADO.NET中的关系型数据库
夜鹰教程网 来源:www.yyjcw.com 日期:2016-12-5 21:16:45
数据库就是储存数据的地方。关系型数据库是由许多数据表(Table)所组成,资料表又是由许多笔记录(Row 或Record)所组成,而纪录又是由许多的字段(Column 或Filed)所组成。假设我们是一个电子商务网站,现在要纪录使用者的数据,你可能会想到要纪录使用者的账号、密码、姓名、电话、住址以及E-mail 等数据;这一些你所要纪录的项目,每一个项目就是一个字段。所以我们将这些字段做个整理,分析出这些字段的长度、数据型态、是

数据表的组成

    数据库就是储存数据的地方。关系型数据库是由许多数据表(Table)所组成,资料表又是由许多笔记录(Row 或Record)所组成,而纪录又是由许多的字段(Column 或Filed)所组成。假设我们是一个电子商务网站,现在要纪录使用者的数据,你可能会想到要纪录使用者的账号、密码、姓名、电话、住址以及E-mail 等数据;这一些你所要纪录的项目,每一个项目就是一个字段。所以我们将这些字段做个整理,分析出这些字段的长度、数据型态、是否必须要有数据后,得到下列数据表的规格表: 
    
  我们先利用Access 2000 先将这个数据表建好,首先先打开Access 2000,则出现下列对话盒:

   选择「Access 空白数据库」选项来建立新的数据库,并将这个档案取名MyWeb 后,储存于C:\\Inetpub\\wwwroot\\CR\\CH05 的下:

   Access 2000 就会将这个数据库存在我们指定的之下,并自动将扩展名命名为mdb,表示这个档案是Access 数据库档案。现在这个数据库就建立好了,但是这个数据库里面是空的,里面还没有任何数据表。所以我们开始将字段一个个的填上去,我们在「使用设计检视建立数据表」上按两下或选择开启数据表设计画面:


  接下来我们依照数据规格表所定义的规格,设定每一个字段的名称、数据型态以及长度。另外要特别注意,由于我们强迫使用者不可以输入空白的字段,所以我们在「必须有数据」这一栏要选择「是」:

  数据输入完毕后,我们再将数据表存盘,命名为Members。但是我们在存盘的时候,系统会出现没有定义主索引的警告,这里我们先选择「否」:

  这样我们的第一个数据表就定义完成了。

  当然,数据表除了定义好字段资外,还要实际拥有数据;这些数据就是我们所说的纪录。我们将每一个使用者的数据完整的输入后,每一个横列所组合起来的就是一个完整的数据,也就是我们所说的一笔记录。数据表就是由直的字段以及横的纪录所组合的。完成之后的数据表内并没有任何数据数据,所以我们先简略的输入下列三笔数据,让数据表完成。请在「Members」数据表上按两下后输入:

   输入完毕后就是一个数据表了。 
  
  这样一来我们就可以在数据表内作数据的新增、编辑、查询以及删除等工作了。

  主键

  不过这个数据表严格说起来还有瑕疵,那就是使用者一但增加,一定会有重复的使用者账号。如果使用者账号有重复的话,使用在者登入的时候就无法确认到底是哪个使用者。所以我们必须将使用者账号设定成不允许重复,只要将这个字段设定成主键(Primary Key)就可以了:
  0  外来键
  
  字段设定成主键最主要的功能除了不允许重复外,另外还可以建立两个数据表之间的关联。将数据库的结构作一个合理的分析,适当的将数据分散到各个数据表以及建立数据表之间的关联,这个动作叫做数据库的正规化。关系型数据库有什么好处呢?我们来举一个实际的例子,假设我们的网站除了使用者的数据外,还要记载使用者的订单状况。这样一来数据表就会多了订单日期、产品名称、单价、订购数量以及小计等项目,如果这些数据都和使用者基本数据记录在一起,我们的数据表就会变成(因为会重复的输入使用者的基本数据,所以我们将使用者数据表主键的设定关掉): [Page]

  1 我们在上列数据表中新增了三笔资料。但是除了使用者的订单数据外,我们发现使用者的基本数据重复输入了。数据重复输入有许多坏处,第一是增加数据库的储存空间,第二是可能会导致数据输入错误,第三是不容易维护及管理。假设使用者的电子邮件信箱改变了,在这种数据库里面需要将使用者所有纪录的电子邮件信箱字段全部作更新,不但浪费数据库空间而且不好管理;所我们应该把这些重复出现的数据独立出来,再建一个订单数据表。我们在数据库对话盒中选择新建,如下图所示:

  2然后输入数据表架构,输入完毕后将数据表命名为Orders,如下所示:

  3由于订单数据表中要纪录订单是哪个使用者所下的,所以我们在这里产生了和Members 数据表中定义一样的UserId 字段,这个字段表示是要参考Members 数据表中的UserId 字段,所以一个字段若要参考其它字段的主键,则这个字段就叫做外来键(Foreign Key),这个字段我们在下个建立数据表的关联时会用到。数据表结构在存盘的时候依然发出没有主键的警告,在这里我们不需要建立主键,所以选择「否」存档后离开。接下来我们要设定这两个数据库之间的关联了。在设定关联之前请先确定Members 数据表是否有设定主键UserId,倘若没有请设先定完毕后再选择「数据库关联图」选项:

  4出现「显示资料表」对话盒后,我们将Members 以及Orders 分别点选新增:

  5 新增完毕后这两个数据表就被加到「数据关联图」窗口中了,如下图所示:

  6接下来我们可以利用拖放的方式,将Orders 数据表中的UserId 字段拖到Members 窗体中,就会出现「编辑关联」对话盒。我们将对话盒中的「强迫参考完整性」、「串接更新相关数据」以及「串接删除相关纪录」的选项打勾,如下所示:

  7选择这些选项表示在输入订单数据表时其UserId 字段会参考Members 数据表的UserId 字段,倘若所输入的数据在Members 数据表中没有这个使用者账号,则所输入的使用者是错误的数据,所以不会被接收;这一来可以确保所输入的订单都可以找到是哪个使用者所下的。另外要删除某个使用者数据的时候,假设订单数据中还有参考到这笔要删除的纪录,则也是不允许删除;因为如果把被参考到的纪录删除,那么会造成只有订单数据却不知道是哪一个使用者下单的情形。这样一来就可以确保资料的完整性,不会造成错误的数据或是有孤儿数据等等的问题。选项设定好后,则出现下列的关联图:

8在关联图中我们看到两个资料表有一条线连起来,表示这两个数据表之间有关联的关系。到在Members 资料表旁显示数值1,表示Members 资料表的UserId 字段是主键,而且字段内的值不允许重复;而Orders 数据表旁显示∞ 符号,表示Orders 数据表的UserId 字段是外来键,表示字段的数据参考到别的字段的主键,而且允许输入重复的值(因为使用者可以下多笔订单)。所以倘若我们再输入订单数据时,随便输入一个没有在Members 数据表中存在的UserId,我们所输入的数据不会被接受外还会出现如下的警告讯息: [Page]


  9所以其实关联就是一种限制(Constraint),限制使用者所输入的数据必须是正确的,以及限制数据的完整性。善用关系型数据库的一些特点,不但可以帮助我们避免输入错误的数据外,也可以让日后的维护更轻松容易。 

复制链接 网友评论 收藏本文 关闭此页
上一条: C#.net常用函数汇总  下一条: List采用delegate快速实现排序、查找操…
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
一个关于天气预报的WebService【C…
VS2010最大的新特点是并行编程的进…
TextBox控件:asp.net中如何为密码…
Web服务调用实例:实现天气预报的…
ASP.NET程序员面试试题(130道题)
ASP.NET教程:调用WebService的源码…
网站开发全程设计
据说这套.net面试题很多网络公司都…
考考你:C#常见题型及部分答案
原创:.net读取数据库sql2000
伪静态URL重写配置
配置web.config代码asp.net3.5个性…
使用线程池提高性能 Socket网络编…
ASP.NET(C#)GridView表头的增加…
如何找到正确的学习方向【.NET版】…
  最近更新
C#修改注册表demo
一个获取内容中的图片地址的方法
ASP.NET 4.0尚未在 Web 服务器上注…
四大作用域:application,session…
ConfigurationManager不存在的解决…
vs2012_vs2013_vs2015没有Web Dep…
vs2015禁用解决方案中单击打开文件…
微软为Visual Studio 2015新增安卓…
C#如何实现搜索引擎网络爬虫程序
C#中正则表达式的用法
用C#抓取需要登录的页面数据
VS2015新功能
VS2015安装图解教程
vs2015新功能介绍
vs2015安装图解

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3