未来三天将给大家把数据库开发与ADO.NET基础过一遍,然后就讲呼叫中心那个项目。在数据库开发和ADO.NET这方面,我们主要讲解这些内容:
1、 从零基础将数据开发,怎么进行数据库操作以及一些常见的SQL语句
2、 接着就讲解ADO.NET,文件流的方式还有一种就是数据集的方式
在前面做那个“人力资源管理”那个小程序时我们自己写的数据,我们看看自己的写的数据库的弊端:
麻烦、效率低下,如果数据量非常大的情况下,你查找数据也非常的慢,你得一个个记录一个记录的找。如果你想把你的查询速度调高了,那么对你数据结构和算法的要求非常高。
并发性差,如果我们两个人同时修改数据库内容,会出现什么情况?各种情况,你想想两个人同时将数据写入这个文件。如果都是自己写数据那就是太痛苦了。这样就诞生了数据库这个东西
数据库概述
1、 用自定义文件格式保存数据的劣势
2、 DBMS(DataBase Management System,数据管理系统)和数据库。平时谈到“数据库”有两种含义:
MS-SQL Server、Oracle等某种DBMS
存放一堆数据表的一个分类(Catalog)
3、 不同品牌的DBMS有自己的不同的特点:MySQL(速度非常快,但是不严谨,适用网站开发)、MS-SQL Server(结合.NET比较好)、DB2(大型数据安全性)、Oracle、Access(当文件来用)、Sybase-SQL Sever等。对开发人员来讲、大同小异
4、 SQL<>SQL Server<>MS-SQLServer。最常见的错误
5、 除了Aceess、SQLSeverCE等文件类型的数据库外,大部分数据库需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。
数据库中的概念
数据库数据为什么要分成一个个小格子呢?
Catalog(分类)(专业说法)(又叫数据库DataBase、表空间TableSpace),不同类的数据应该放到不同的数据库中
便于对各个Catalog进行个性化管理
避免命名冲突
安全性更高
Table(表),书放到书架上,碗放到橱柜中,不同类型的资料放到不同类型的格子中,将这种区域叫做表(Table)。不同的表根据放的数据不同进行空间优化,找起来也方便。
列(Column)、字段(Field)。
2011年10月入职,是产品开发部的,姓名马小虎
王二小,技术支持部,入职是2010年7月
姓名 马小虎 姓名 部门 入职时间
部门 开发部
入职时间 2008.06
其实就跟在前面学习C#一样,你如果用字符串来存储“2011年10月入职,是产品开发部的,姓名马小虎”,查找具体信息比如姓名,入职时间就比较累了,我们如果建立一个类来查找就相对来说方便许多。现在很多的表就像Excel数据分的很清楚。
比如我要建立一个管财务的数据,比如我要给别人发工资、报销,放到一个数据库里面。还有员工的管理,他的福利、入职、离职、社保、保险这些东西我也给他放到数据库里面。如果我把这些数据放到一个格子里面就很麻烦了。财务的数据和人力资源的数据都有人的描述。财务数据,我这个员工的银行账号是多少,开户行是什么?人力资源的数据,他的工号是多少?这些不同类型的数据放到一起肯定乱掉了。你想想,如果财务数据和人力资源数据放到一个格子里面?这样就出现了一个问题:管人力资源的人能够看到你财务的数据,我管财务的人也能看到你人力资源的数据,很不安全。一般财务数据在公司很保密的。所以呢,要将不同类型的数据放到不同数据库中。比如我们以后要开发人力资源系统就建立一个人力资源系统的数据库,开发一个OA系统就建立一个OA系统数据库。
先建数据库——建立表——分列
主键
避免重复
如果你公司有相同的名字的员工都叫,王小虎。那么要查找它的入职信息就会重复的情况。这样一般公司都会给你一个工号以用作区分。唯一标识一行数据,工号就是主键。
主键的两种使用策略:业务主键和逻辑主键。
业务主键,对业务来说有意义的主键,比如用他身份证号做主键,用银行账号做主键或用他的工号做主键,你想想什么什么号都是有意义的啊?
逻辑主键:没有业务意义的主键,比如我给每个员工分配一个流水号(计算机才能理解,完全给程序看,业务人员不会看的)
我现在主要推荐逻辑主键,因为业务主键很难保证不重复。比如你开发一个系统用身份证来作主键(有重复的嫌疑),电话号码(升位,之前加个8什么)。
逻辑主键是不给用户看到的
表间关联、外键(ForeignKey)
商品名 |
价格 |
生产厂家 |
厂家地址 |
厂家电话 |
大大香瓜子 |
5.00 |
大大食品厂 |
恰恰大街300号 |
010-123456 |
大大开心果 |
15.00 |
大大食品厂 |
恰恰大街300号 |
010-123456 |
苦咖啡 |
2 |
伊利工厂 |
内蒙古伊利路1号 |
400400400 |
随便 |
3 |
伊利工厂 |
内蒙古伊利路1号 |
400400400 |
冰工厂 |
1 |
伊利工厂 |
内蒙古伊利路1号 |
400400400 |
大家看上面一张表,我要记录产品中所有的信息,我就用这么一张Excel表把它记录下来,我这样记载信息的缺点就是数据重复,一旦我的厂家地址发生便更就要把所有厂家地址都改了,太痛苦了。如果放在数据库里面要更新的,很麻烦。所以,我们设计数据库的时候千万别这么设计。我们应该建立两张表,首先我给工厂编号,001和002两个工厂。我要更新厂家信息的时候也很方便。大家看,这样做有什么缺点,麻烦。但是麻烦归麻烦但是后面的数据库都是这样的
商品 |
价格 |
厂家编号 |
大大香瓜子 |
5.00 |
001 |
大大开心果 |
15.00 |
001 |
苦咖啡 |
2 |
002 |
随便 |
3 |
002 |
冰工厂 |
1 |
002 |
上表中的,厂家编号就是外键(Foreign Key)
编号 |
名称 |
地址 |
电话 |
001 |
大大食品厂 |
恰恰大街300号 |
010-123456 |
002 |
伊利工厂 |
内蒙古伊利路1号 |
400400400 |
上表中编号就是主键(Key)
原文链接:http://blog.csdn.net/youhaoxinqin/article/details/6854261
【编辑推荐】