數(shù)據(jù)庫開發(fā)與ADO.NET
未來三天將給大家把數(shù)據(jù)庫開發(fā)與ADO.NET基礎過一遍,然后就講呼叫中心那個項目。在數(shù)據(jù)庫開發(fā)和ADO.NET這方面,我們主要講解這些內(nèi)容:
1、 從零基礎將數(shù)據(jù)開發(fā),怎么進行數(shù)據(jù)庫操作以及一些常見的SQL語句
2、 接著就講解ADO.NET,文件流的方式還有一種就是數(shù)據(jù)集的方式
在前面做那個“人力資源管理”那個小程序時我們自己寫的數(shù)據(jù),我們看看自己的寫的數(shù)據(jù)庫的弊端:
麻煩、效率低下,如果數(shù)據(jù)量非常大的情況下,你查找數(shù)據(jù)也非常的慢,你得一個個記錄一個記錄的找。如果你想把你的查詢速度調(diào)高了,那么對你數(shù)據(jù)結構和算法的要求非常高。
并發(fā)性差,如果我們兩個人同時修改數(shù)據(jù)庫內(nèi)容,會出現(xiàn)什么情況?各種情況,你想想兩個人同時將數(shù)據(jù)寫入這個文件。如果都是自己寫數(shù)據(jù)那就是太痛苦了。這樣就誕生了數(shù)據(jù)庫這個東西
數(shù)據(jù)庫概述
1、 用自定義文件格式保存數(shù)據(jù)的劣勢
2、 DBMS(DataBase Management System,數(shù)據(jù)管理系統(tǒng))和數(shù)據(jù)庫。平時談到“數(shù)據(jù)庫”有兩種含義:
MS-SQL Server、Oracle等某種DBMS
存放一堆數(shù)據(jù)表的一個分類(Catalog)
3、 不同品牌的DBMS有自己的不同的特點:MySQL(速度非常快,但是不嚴謹,適用網(wǎng)站開發(fā))、MS-SQL Server(結合.NET比較好)、DB2(大型數(shù)據(jù)安全性)、Oracle、Access(當文件來用)、Sybase-SQL Sever等。對開發(fā)人員來講、大同小異
4、 SQL<>SQL Server<>MS-SQLServer。最常見的錯誤
5、 除了Aceess、SQLSeverCE等文件類型的數(shù)據(jù)庫外,大部分數(shù)據(jù)庫需要數(shù)據(jù)庫服務器才能運行。學習、開發(fā)時是連接本機的數(shù)據(jù)庫,上線運行時是數(shù)據(jù)庫運行在單獨的服務器。
數(shù)據(jù)庫中的概念
數(shù)據(jù)庫數(shù)據(jù)為什么要分成一個個小格子呢?
Catalog(分類)(專業(yè)說法)(又叫數(shù)據(jù)庫DataBase、表空間TableSpace),不同類的數(shù)據(jù)應該放到不同的數(shù)據(jù)庫中
便于對各個Catalog進行個性化管理
避免命名沖突
安全性更高
Table(表),書放到書架上,碗放到櫥柜中,不同類型的資料放到不同類型的格子中,將這種區(qū)域叫做表(Table)。不同的表根據(jù)放的數(shù)據(jù)不同進行空間優(yōu)化,找起來也方便。
列(Column)、字段(Field)。
2011年10月入職,是產(chǎn)品開發(fā)部的,姓名馬小虎
王二小,技術支持部,入職是2010年7月
姓名 馬小虎 姓名 部門 入職時間
部門 開發(fā)部
入職時間 2008.06
其實就跟在前面學習C#一樣,你如果用字符串來存儲“2011年10月入職,是產(chǎn)品開發(fā)部的,姓名馬小虎”,查找具體信息比如姓名,入職時間就比較累了,我們?nèi)绻⒁粋€類來查找就相對來說方便許多。現(xiàn)在很多的表就像Excel數(shù)據(jù)分的很清楚。
比如我要建立一個管財務的數(shù)據(jù),比如我要給別人發(fā)工資、報銷,放到一個數(shù)據(jù)庫里面。還有員工的管理,他的福利、入職、離職、社保、保險這些東西我也給他放到數(shù)據(jù)庫里面。如果我把這些數(shù)據(jù)放到一個格子里面就很麻煩了。財務的數(shù)據(jù)和人力資源的數(shù)據(jù)都有人的描述。財務數(shù)據(jù),我這個員工的銀行賬號是多少,開戶行是什么?人力資源的數(shù)據(jù),他的工號是多少?這些不同類型的數(shù)據(jù)放到一起肯定亂掉了。你想想,如果財務數(shù)據(jù)和人力資源數(shù)據(jù)放到一個格子里面?這樣就出現(xiàn)了一個問題:管人力資源的人能夠看到你財務的數(shù)據(jù),我管財務的人也能看到你人力資源的數(shù)據(jù),很不安全。一般財務數(shù)據(jù)在公司很保密的。所以呢,要將不同類型的數(shù)據(jù)放到不同數(shù)據(jù)庫中。比如我們以后要開發(fā)人力資源系統(tǒng)就建立一個人力資源系統(tǒng)的數(shù)據(jù)庫,開發(fā)一個OA系統(tǒng)就建立一個OA系統(tǒng)數(shù)據(jù)庫。
先建數(shù)據(jù)庫——建立表——分列
主鍵
避免重復
如果你公司有相同的名字的員工都叫,王小虎。那么要查找它的入職信息就會重復的情況。這樣一般公司都會給你一個工號以用作區(qū)分。唯一標識一行數(shù)據(jù),工號就是主鍵。
主鍵的兩種使用策略:業(yè)務主鍵和邏輯主鍵。
業(yè)務主鍵,對業(yè)務來說有意義的主鍵,比如用他身份證號做主鍵,用銀行賬號做主鍵或用他的工號做主鍵,你想想什么什么號都是有意義的啊?
邏輯主鍵:沒有業(yè)務意義的主鍵,比如我給每個員工分配一個流水號(計算機才能理解,完全給程序看,業(yè)務人員不會看的)
我現(xiàn)在主要推薦邏輯主鍵,因為業(yè)務主鍵很難保證不重復。比如你開發(fā)一個系統(tǒng)用身份證來作主鍵(有重復的嫌疑),電話號碼(升位,之前加個8什么)。
邏輯主鍵是不給用戶看到的
表間關聯(lián)、外鍵(ForeignKey)
商品名 |
價格 |
生產(chǎn)廠家 |
廠家地址 |
廠家電話 |
大大香瓜子 |
5.00 |
大大食品廠 |
恰恰大街300號 |
010-123456 |
大大開心果 |
15.00 |
大大食品廠 |
恰恰大街300號 |
010-123456 |
苦咖啡 |
2 |
伊利工廠 |
內(nèi)蒙古伊利路1號 |
400400400 |
隨便 |
3 |
伊利工廠 |
內(nèi)蒙古伊利路1號 |
400400400 |
冰工廠 |
1 |
伊利工廠 |
內(nèi)蒙古伊利路1號 |
400400400 |
大家看上面一張表,我要記錄產(chǎn)品中所有的信息,我就用這么一張Excel表把它記錄下來,我這樣記載信息的缺點就是數(shù)據(jù)重復,一旦我的廠家地址發(fā)生便更就要把所有廠家地址都改了,太痛苦了。如果放在數(shù)據(jù)庫里面要更新的,很麻煩。所以,我們設計數(shù)據(jù)庫的時候千萬別這么設計。我們應該建立兩張表,首先我給工廠編號,001和002兩個工廠。我要更新廠家信息的時候也很方便。大家看,這樣做有什么缺點,麻煩。但是麻煩歸麻煩但是后面的數(shù)據(jù)庫都是這樣的
商品 |
價格 |
廠家編號 |
大大香瓜子 |
5.00 |
001 |
大大開心果 |
15.00 |
001 |
苦咖啡 |
2 |
002 |
隨便 |
3 |
002 |
冰工廠 |
1 |
002 |
上表中的,廠家編號就是外鍵(Foreign Key)
編號 |
名稱 |
地址 |
電話 |
001 |
大大食品廠 |
恰恰大街300號 |
010-123456 |
002 |
伊利工廠 |
內(nèi)蒙古伊利路1號 |
400400400 |
上表中編號就是主鍵(Key)
原文鏈接:http://blog.csdn.net/youhaoxinqin/article/details/6854261
【編輯推薦】
- 養(yǎng)成一個SQL好習慣帶來一筆大財富
- 告訴你,如何成就DBA職業(yè)生涯
- SQL Server性能調(diào)優(yōu)之淺析SQL執(zhí)行的過程
- 客戶的一次疏忽,DBA的一次噩夢
- 數(shù)據(jù)庫點滴之精妙SQL語句