軟體開發概論
This presentation is the property of its rightful owner.
Sponsored Links
1 / 48

軟體開發概論 第六章、資料庫 PowerPoint PPT Presentation


  • 54 Views
  • Uploaded on
  • Presentation posted in: General

軟體開發概論 第六章、資料庫. Understanding Databases. Objective Domain Matrix. 資料 VS. 資訊. 資料可以合成為資訊 資料: 80 , 20 資訊的呈現要經過適當的詮釋 80% 的營收來自 20% 產品 的銷售. 資料層級. 位元( Bit ) 位元組( Byte ) 字元( Character ) 字串( String ) 資料 欄位( Field ) 資料記錄( Record ) 檔案( File ) 資料庫( Database ). 資料超 市( Data Mart )

Download Presentation

軟體開發概論 第六章、資料庫

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


軟體開發概論第六章、資料庫

Understanding Databases


Objective Domain Matrix


資料 VS. 資訊

  • 資料可以合成為資訊

    • 資料:80,20

  • 資訊的呈現要經過適當的詮釋

    • 80% 的營收來自 20% 產品的銷售


資料層級

  • 位元(Bit)

  • 位元組(Byte)

  • 字元(Character)

  • 字串(String)

  • 資料欄位(Field)

  • 資料記錄(Record)

  • 檔案(File)

  • 資料庫(Database)

  • 資料超市(Data Mart)

  • 資料倉儲(Data Warehouse)


資料庫

  • 資料庫是資料的集中儲存位置,藉由關聯的定義,將多筆、多樣的不同資料,成為一個緊密結合的處理單元

  • 高效率的資料存取

  • 多人同時共用

  • 容量

  • 資料型別

  • 使用者介面

  • 應用程式介面


展現層

邏輯層

資料層


資料庫

  • 資料庫系統(Database Systems)的組成

    • 資料庫(Database)

    • 資料庫管理系統(Database Management System,DBMS)

    • 應用系統(Application System)

  • 關聯式資料庫

    • Relational Database

    • 關聯式資料庫管理系統(Relational DBMS,RDBMS)

  • 物件導向式資料庫

    • Object-Oriented Database(OODB)

    • 物件導向式資料庫管理系統(Object DBMS, ODBMS)


常見的資料庫系統

  • 單機:

    • Microsoft Access (JET)

  • 嵌入式

    • SQLite

    • MySQL Embedded

    • Microsoft SQL Server Compact

  • 伺服器:

    • Microsoft SQL Server

    • Oracle Database

    • IBM DB2

    • Sybase Advantage Database Server (ADS)

    • MySQL

    • PostgreSQL


關聯式資料庫

  • 常見的 SQL Server、Access、Oracle、MySQL 等都是 RDBMS

  • 資料儲存在資料表(Table)之中

  • 一個資料庫系統之中可以有很多個資料庫

  • 一個資料庫之中可以有很多個資料表

    • 資料表之間存在著某些關係(Relationship)


資料表的結構

  • 橫向:資料列(Row)

    • 又稱為資料紀錄(Record)

  • 縱向:資料行(Column)

    • 又稱為資料欄位(Field)


資料表之間的關係


資料表之間的關係

Note the Price column, which has been added.


資料表之間的關係


索引鍵(Key)

  • 識別的依據(Identifier)

    • 唯一性(Uniqueness)

  • 例如:

    • 身份證字號

    • 學號

  • 可供識別的依據不只一個

    • 候選鍵(Candidate Keys)

  • 主鍵(Primary Key)

    • 主索引

  • 資料排序的依據


索引鍵(Key)

家庭成員的主鍵是什麼?

社團會員的主鍵是什麼?

學生基本資料的主鍵是什麼?

客戶基本資料的主鍵是什麼?

產品基本資料的主鍵是什麼?


實體關係圖(Entity Relationship Diagrams)

  • 以圖形的方式,呈現關聯式設計的結果

    • 實體(Entity):系統運作所需的個體

    • 屬性(Attribute):對實體的描述,形容實體如何存在於資料庫內

    • 關係(Relationship):實體之間的關係


實體關係圖的常見符號

  • 矩形代表實體

    • Entity

  • 橢圓代表屬性

    • Attribute

  • 菱形代表關係

    • Relationship


數量關係:

1 對 1

1 對 多

多 對 多


關聯式資料庫的設計

  • 列出或寫下資料庫的任務

  • 那些資料需要儲存?那些不需要儲存?需要儲存的資料中,又應使用什麼資料型態?

  • 將屬性類似的資料集中,成為一個資料表

  • 在多個欄位中,選擇一個主索引

    • 主鍵(Primary Key)

    • 組合鍵(Composite Key):由多個欄位組成

  • 在多個資料表之間,找出應該建立的關聯

  • 將前步驟的結果,根據正規化的要求,予以正規化


將實體關係圖轉換至關聯式資料庫

  • 處理實體

    • 一個實體轉換成一個或多個資料表

  • 處理關係

    • 關係轉換成外來鍵(Foreign Key)

      • 外部索引鍵

      • 不是我的主鍵,是因為和別人建立關係才有的索引鍵

      • 用途:查表


資料庫設計範例

  • 銷售系統需求描述

    • 本公司是腳踏車的中盤商,以批發為主,偶爾也賣給散客

    • 銷售系統的主要目的為提供每日銷售狀況,讓主管掌握營收金額、了解庫存現狀、知道貨賣到哪裡去了


資料庫設計範例

  • 銷售系統需求描述

    • 客戶購買產品時會有訂單,訂單上註明客戶的名稱、聯絡電話、送貨地址、預定交貨日期以及總金額。

    • 一張訂單可以購買許多項產品,每一項產品註明其產品編號、產品名稱、單價、數量以及小計(小計=單價*數量)


資料庫設計範例


正規化處理

正規化是針對前一階段的分析結果,再進一步的處理

目的是檢視分析結果中有沒有可能導致資料不一致、違反完整性的情況,若有則予以更正

要點:消除重複的資訊

動作:分割資料表


Data Anomalies資料異常

  • 新增異常(Insert Anomaly)

    • You cannot insert new data because of unrelated dependency

  • 刪除異常(Delete Anomaly)

    • Deleting one piece of data causes unintended loss of other data

  • 更新異常(Update Anomaly)

    • Updating a single data value requires multiple rows to be updated


資料異常再一例

  • 處女座的設備管理員不接受不完整的紀錄

  • 新買一台: 400,車床,5000,沒有維修紀錄無法登錄?

  • 刪除銑床 2012/4/19 的維修紀錄,銑床的進貨價不見了!?

  • 更新鑽床的進貨價 3560,到底是要改那幾個地方?


Data Normalization資料正規化

  • 消除資料異常,確保資料完整性(Integrity)

  • 第一階正規化(First Normal Form)

    • 1NF

  • 第二階正規化(Second Normal Form)

    • 2NF

  • 第三階正規化(Third Normal Form)

    • 3NF


First Normal Form (1NF)

單一值(Atomic)

一格只能存放一個值


Second Normal Form (2NF)

必先符合 1NF

2NF all non-key columns are functionally dependent on the entire primary key

非鍵欄位必須相依於『整個』主鍵


Third Normal Form (3NF)

不符合 3NF 因為 ReorderFax取決於 SupplierId而不是主鍵 ItemId

欲符合 3NF 必先符合 2NF

3NF 不是鍵值的欄位( non-key attributes )之間,不得存在功能相依性(Functional Dependency)


功能相依性(Functional Dependency)

表格中有C→D的功能相依性,因為只要知道欄位C的值,就能決定欄位D的值。只要C是吐司,D必定是30,若C是牛奶,則D必是50;我們可以把D看成是物品C的價格。

欄位A與欄位B若有存在功能相依性,而此關係為A→B時,則任何記錄的欄位A的值將只有唯一的欄位B的值與其對應,此關係也可表示成「A determines B」。


功能相依性(Functional Dependency)

{A,B}  C?

{A,B}  C?


結構化查詢語言Structured Query Language (SQL)

  • 用途:SQL 查詢關聯式資料庫

  • T-SQL: Transact SQL

    • 微軟的『交易式』SQL

  • 執行 T-SQL 的方式

    • 自訂的 SQL 查詢敘述

    • 預存程序(Stored Procedure)


SQL 查詢

  • 增刪查改

    • INSERT、DELETE、SELECT、UPDATE

  • SELECT 撈(選取)資料

  • INSERT 新增(插入)資料

  • UPDATE 更新(改)資料

  • DELETE 刪除資料


執行 SQL 查詢

  • 連接 SQL Server 執行 SQL:

    • 透過 Visual Studio IDE

    • 寫程式(C#/VBN.ET)

    • SQL Query Analyzer

    • osql命令列工具


SELECT

SELECTlist_of_fields列出欄位,* 代表所有欄位

FROMlist_of_tables列出資料表

WHEREwhere_clause列出條件(過濾資料)

GROUP BY group_by_clause分組依據(欄位)

HAVINGhaving_clause分組後的條件(過濾資料)

ORDER BY order_by_clause排序方式


SELECT 範例

查詢訂單與客戶資料合併後的結果:

SELECTOrderID, Customers.CustomerId, ContactName

FROM Orders INNER JOIN Customers

ONOrders.CustomerId = Customers.CustomerId

列出交貨地點為加拿大的訂單:

SELECT *

FROM Orders

WHEREShipCountry = 'Canada'


UPDATE

  • 更改舊資料

    • 何謂舊資料?

  • 更改客戶名稱:

    UPDATE Customers

    SETContactName = 'Maria Anderson'

    WHERECustomerId = 'ALFKI'


INSERT

  • 插入新資料

    • 何謂新資料?

  • 新增訂單明細:

    INSERT INTO [Order Details]

    (OrderId, ProductId, UnitPrice, Quantity, Discount)

    VALUES (10248, 2, 19.00, 2, 0)


DELETE

刪除舊資料

刪除指定的客戶資料:

DELETEFROM Customers

WHERECustomerId = 'ALFKI'


預存程序Stored Procedures

  • 儲存在資料庫裡的副程式

  • 可以從外部呼叫

  • 優點

    • 儲存複雜的 SQL,可供重複使用

    • SQL Server 事先編譯預存程序,執行速度更快

    • 減少網路傳輸資料量


建立預存程序

  • 指令:CREATE PROCEDURE

  • 列出法國客戶:

    CREATE PROCEDURE GetCustomersFromFrance

    AS

    SELECT * FROM Customers

    WHERE Country = 'France'

    RETURN


預存程序帶參數

  • 變數與參數第一個字符必須為 @

    CREATE PROCEDURE dbo.GetCustomerSales

    (

    @CustomerId char(5),

    @TotalSales money OUTPUT

    )

    AS

    SELECT @TotalSales = SUM(Quantity * UnitPrice)

    FROM (Customers INNER JOIN Orders

    ONCustomers.CustomerId = Orders.CustomerId)

    INNER JOIN [Order Details]

    ONOrders.OrderId = [Order Details].OrderId

    WHERECustomers.CustomerId = @CustomerId

    RETURN


使用平坦檔案(Flat File)

  • 平坦檔案:沒有階層結構的檔案

    • 文字檔案(Text File)

    • 二進位檔案(Binary File)

  • 使用 StreamReader、StreamWriter存取文字檔

  • 使用 BinaryReader、BinaryWriter存取二進位檔


Extensible Markup Language (XML)

具有階層式結構的文字檔


使用 XML

  • 主要工具都在 System.Xml命名空間內

    • XmlReader、XmlWriter:

      • 快速

      • 無快取(non-cached)

      • 單向、向前(forward-only)

    • XmlDocument:

      • 檔案載入記憶體,建立樹狀結構

      • 可以來回查詢與編輯


使用 DataSet

  • 資料集DataSet

    • 儲存在記憶體內的關聯式資料庫

  • 內含資料表(DataTable)、關聯、資料完整性約束條件(單一值索引、外來鍵)

  • DataAdapter為資料來源和DataSet之間的橋樑

  • DataAdapter儲存資料庫連線和 SQL 指令

    • 包括查詢用的 SQL

    • 使用CommandBuilder自動產生增刪改的 SQL


總結

  • 關聯式資料庫設計

    • 個體關係圖 Entity Relationship Diagram

    • 資料正規化 (1NF, 2NF, 3NF)

  • 資料查詢

    • SQL

    • 預存程序

  • 資料庫連結方式

    • 平坦檔案(Flat File)、XML、DataSet


  • Login