資料庫ch1 — Introduction

慈慈
Nov 8, 2020

--

file-processing system

傳統的作業系統,用來管理檔案
會永久儲存各種檔案
檔案可以做哪些事,都是由工程師寫應用程式來執行

產生的問題:
1. Data redundancy and inconsistency(資料冗餘&不一致)
稀奇是資工系也是通訊系的學生
當他搬家時,地址只更新到資工系的,通訊系的還記著舊的地址

2. Difficulty in accessing data(存取資料困難)
要找修了60學分以上的學生
只能自己篩選或者請工程師幫忙寫

3. Data isolation(資料分離)
資料都分散在不同檔案、格式也不一樣
4. Integrity problems(完整性問題)
->Integrity constraints(一致性限制)
資工系的銀行帳戶餘額
限制在A檔案中的存款金額不得小於0
但在B檔案的存款金額卻沒限制

5. Atomicity of updates(單元性問題)
A轉帳給B但轉到一半系統故障
導致A的戶頭被扣錢,B的戶頭沒收到錢
->要就全做,不然就不要做
6. Concurrent access by multiple users(多個使用者同時使用)
選課時,已有39人選課,上限是40
然後此時有兩人同時加選(程式讀到的皆為39人)
明明只能40個人選,但實際上有41個人

7. Security problems(安全性問題)
不是所有人都看得到資料庫的所有資料

Data Models

Relational model

🔺Relational model的發明者🔺

Entity-Relationship data model(mainly for database design)

Object-based data models(Object-oriented and Object-relational)

Semi-structured data model(XML)

btw 除了Relational Model 其他看看就好~

Data Abstraction

View level:使用者看得到的,像是查詢之類的

Logical level:定義有哪些資料,他們之間的關係

type instructor = record
ID : string;
name : string;
dept_name : string;
salary : integer;
end;

physical data independence
->
可以在不影響logical level的情況下,修改physical level
->因為應用程式取決於logical level

Physical level:低層次的資料架構,你不需要知道

instance:就是資料

schema:資料庫的架構,又分成physical schema & logical schema
->🔺一般指的schema是logical schema🔺

Data Definition Language(DDL)

create table instructor (
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2)
)

DDL 就像是上述這樣
他輸出的資料會被放置在Data Dictionary

Data Dictionary包含metadata(有關資料的資料)
->
Data schema
->
Integrity constraints //ex. primary key
->
Authorization // 誰可以看到什麼

Data Manipulation Language(DML)

DML也稱作查詢語言(query language)

分法1
pure:用來證明或者優化的純數學
commercial:像SQL一樣用於商業系統的

分法2:
Procedural DML:會講要什麼、怎麼要
Declarative DML:只講要什麼

SQL Query Language

SQL「沒有」universal Turing machines 那麼厲害
他只能做比較簡單的計算,常搭配著其他高階語言使用!
像是C/C++、java等等

Database Design

又分成
logical design
有Business decision(決定有哪些attributes) &
computer science decision(怎麼去實作)

physical design
決定physical level的那些東東

Database Engine

Storage Manager
跟資料儲存有關的

Query processing

transaction management
Transaction-management component
如果系統失效,也需要把事情做完,不然就不要做 => 可用log行為紀錄判斷現在要不要做

Concurrency-control manager
當很多人同時上線,要確保不會同時操作到同一筆資料 => 可用lock鎖住別人的操作

Database Architecture

centralized database

client-sever

parallel database

distributed database

Database Application

Two-tier architecture

在client端的application,可以影響在server端的database system

Three-tier architecture

在client端的前端不能直接呼叫database
client端與application server會透過表單溝通
application server端可以access data in database system

--

--

No responses yet