Docstoc

02 Gioi thieu CSDL quan he

Document Sample
02 Gioi thieu CSDL quan he Powered By Docstoc
					Mô hình dữ liệu quan hệ Relation Model

1

TT.CNTT - Đại học Huế

Nội dung trình bày
 Định nghĩa mô hình dữ liệu quan hệ  Ngôn ngữ truy vấn SQL  Định nghĩa dữ liệu  Cập nhật dữ liệu  Truy vấn dữ liệu  Mô tả ràng buộc

2

TT.CNTT - Đại học Huế

Tạo sao phải nghiên cứu mô hình quan hệ?
 Là mô hình được dùng rộng rãi nhất.  Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc.  Đối thủ cạnh tranh: mô hình hướng đối tượng  ObjectStore,Versant, Ontos  a synthesis emerging: object-relational model
 Informix Universal Server, UniSQL, O2, Oracle, DB2

3

TT.CNTT - Đại học Huế

Các định nghĩa
 Cơ sở dữ liệu quan hệ: tập hợp các quan hệ (relation).  Quan hệ: gồm 2 phần:  Thể hiện: là một table, với các hàng và cột.  Lược đồ (Schema): đặc tả tên quan hệ cũng như tên và kiểu của mỗi cột.
 Ví dụ. Students(sid: string, name: string, login: string,

integer, gpa: real)

age:

 Có thể coi quan hệ như tập hợp các dòng (rows) hoặc

bộ (tuples).

4

TT.CNTT - Đại học Huế

Ví dụ: Thể hiện của quan hệ Sinh viên
sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8

5

TT.CNTT - Đại học Huế

Ví dụ: Thể hiện quan hệ Tài khoản
Acct 1005 1002 1003 1008 1010 1012 Name Address Jones 11 First St Smith 12 First St Smith 12 First St Green 14 Fourth St Balance $1023.22 $22.43

$11000.12 $1077.23 $5,000,000,000.00 Gates 20 Tenth St Smith 15 Second St $443.77

TT.CNTT - Đại học Huế

6

Nội dung trình bày
 Định nghĩa mô hình dữ liệu quan hệ  Ngôn ngữ truy vấn SQL
   

Định nghĩa dữ liệu Cập nhật dữ liệu Truy vấn dữ liệu Mô tả ràng buộc

 Chuyển mô hình ER thành mô hình quan hệ

7

TT.CNTT - Đại học Huế

Ngôn ngữ truy vấn quan hệ
 Lợi ích chính của mô hình quan hệ: hỗ trợ việc truy vấn

dữ liệu đơn giản mà hiệu quả.  Các truy vấn có thể mô tả bằng trực giác, và DBMS chịu trách nhiệm thực hiện truy vấn.

8

TT.CNTT - Đại học Huế

Ngôn ngữ truy vấn SQL
 Được phát triển bởi IBM (system R) vào những năm

1970  Bao gồm các chuẩn:
   

SQL-86 SQL-89 SQL-92 (chuẩn hiện tại đang sử dụng) SQL-99 (đề xuất mở rộng)

9

TT.CNTT - Đại học Huế

Tạo một bảng trong SQL
 CREATE TABLE Students

(sid CHAR(20), name CHAR(20), login CHAR(10), age INTEGER, gpa REAL)

 CREATE TABLE Enrolled

(sid CHAR(20), cid CHAR(20), grade CHAR(2))

10

TT.CNTT - Đại học Huế

Xóa hoặc thay đổi bảng
 Xóa bảng Students.

DROP TABLE Students  Thêm một cột mới vào bảng Students. ALTER TABLE Students ADD COLUMN firstYear: integer

11

TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples
 Thêm một bộ:
INSERT INTO Students (sid, name, login, age, gpa) VALUES (53699, 'Green ', 'green@ee', 18, 3.5)

 Và:
INSERT INTO Students (sid, name, login, age, gpa) VALUES (53666, 'Jones', 'jones@cs', 18, 3.4) INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688, 'Smith ', 'smith@eecs', 18, 3.2) INSERT INTO Students (sid, name, login, age, gpa) VALUES (53650, 'Smith ', 'smith@math', 18, 3.5)

12

TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples (tt.)
 Thể hiện của Bảng Sinh viên sau khi thêm:

sid 53666 53688 53650 53600
13 TT.CNTT - Đại học Huế

name Jones Smith Smith Green

login jones@cs smith@eecs smith@math green@ee

age 18 18 19 18

gpa 3.4 3.2 3.8 3.5

Thêm và bớt các bộ - Tuples (tt.)
 Có thể xoá các

bộ thoả một số điều kiện (vd., name =

Smith):
DELETE FROM Students S WHERE S.name = ‘Smith’

 Thể hiện của quan hệ Student:

sid name login 53666 Jones jones@cs 53600 Green green@ee
14 TT.CNTT - Đại học Huế

age 18 18

gpa 3.4 3.5

Thêm và bớt các bộ - Tuples (tt.)
 Thêm các bộ vào quan hệ:
INSERT VALUES INSERT VALUES INSERT VALUES INSERT VALUES INSERT VALUES INSERT VALUES INTO Bank_Acct (acct, name, address, balance) (1025, 'Blue', '14 Third St', 2344.22) INTO Bank_Acct (acct, name, address, balance) (1005, 'Jones', '11 First St', 1023.22) INTO Bank_Acct (acct, name, address, balance) (1002, 'Smith', '12 First St', 22.43) INTO Bank_Acct (acct, name, address, balance) (1003, 'Smith', '12 First St', 11000.12) INTO Bank_Acct (acct, name, address, balance) (1008, 'Green', '14 Fourth St', 1077.23) INTO Bank_Acct (acct, name, address, balance) (1010, 'Gates', '20 Tenth St', 5000000000.00)

15

TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples (tt.)
 Thể hiện Bank_Acct sau khi thêm:

Acct 1005 1002 1003 1008
1010 1025
16

Name Address Jones 11 First St Smith 12 First St Smith 12 First St Green 14 Fourth St
Gates 20 Tenth St Blue 14 Third St

Balance $1023.22 $22.43 $11000.12 $1077.23 $5,000,000,000.00 $2344.22

TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples (tt.)


Xoá các bộ thoả điều kiện (e.g., acct = 1008) khỏi quan hệ Bank_Acct:
DELETE FROM Bank_Acct B WHERE B.acct = 1008

17

TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples (tt.)


Bảng Bank_Acct sau khi xoa:
Name Address Jones 11 First St Smith 12 First St Smith 12 First St Gates 20 Tenth St Smith 12 Second St Blue 14 Third St Balance $1023.22 $22.43 $11000.12 $5,000,000,000.00 $443.77 $2344.22

Acct 1005 1002 1003 1010 1012 1025
18

 Powerful variants of these commands are available; more later!
TT.CNTT - Đại học Huế

Thêm và bớt các bộ - Tuples (tt.)
 Thêm vào bảng Enrolled:

INSERT VALUES INSERT VALUES INSERT VALUES INSERT VALUES
19

Enrolled (sid, cid, grade) ('53831', 'Carnatic 101', 'C') INTO Enrolled (sid, cid, grade) ('53831', 'Reggae 203', 'B') INTO Enrolled (sid, cid, grade) ('53650', 'Topology 112', 'A') INTO Enrolled (sid, cid, grade) ('53666', 'History 105', 'B')
INTO

TT.CNTT - Đại học Huế

Truy vấn dữ liệu
 Tìm những sinh viên 18 tuổi:

SELECT * FROM Students S WHERE S.age=18

sid

name

login jones@cs

age gpa 18 3.4 3.2

53666 Jones

53688 Smith smith@ee 18

•Nếu chỉ tìm names và logins, thay dòng đầu bằng:
SELECT S.name, S.login FROM Students S

20

TT.CNTT - Đại học Huế

Truy vấn dữ liệu (tt)
 Tìm khách hàng có tên là Smith:

SELECT * FROM Bank_Acct B WHERE B.name='Smith'

Name Address

Phone

Email Smith@cs Smith@ee

6033335567 Smith 12 First St Smith 12 Second St 6039788765
21 TT.CNTT - Đại học Huế

Ràng buộc khóa chính
 Tập các trường là khoá của một bảng nếu: 1. Không có hai bộ khác nhau mà có cùng giá trị của khóa 2. Điều này không đúng với tất cả tập con của khoá.  Nếu quan hệ có nhiều hơn 1 khoá thì sẽ chọn ra 1 khóa chính primary key.  Ví dụ, sid là khóa của Students.

22

TT.CNTT - Đại học Huế

Khóa ngoại, toàn vẹn tham chiếu
 Khoá ngoại: Tập các thuộc tính (cột) trong 1 Bảng dùng để ‘tham

chiếu’ tới 1 bộ trong 1 Bảng khác.  Vd. sid là một khóa ngoại tham chiếu đến Students:
 Enrolled(sid: string, cid: string, grade: string)

23

TT.CNTT - Đại học Huế

Mô tả khóa ngoại trong SQL
CREATE TABLE Enrolled (sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid,cid), FOREIGN KEY (sid) REFERENCES Students )

Enrolled
sid 53666 53666 53650 53666 cid grade Carnatic101 C Reggae203 B Topology112 A History105 B

Students
sid 53666 53688 53650 name login Jones jones@cs Smith smith@eecs Smith smith@math age 18 18 19 gpa 3.4 3.2 3.8

24

TT.CNTT - Đại học Huế

Mô tả khóa ngoại trong SQL (tt.)


Tạo bảng khách hàng
CREATE TABLE Customer_Info (name CHAR(20), addr CHAR(40), phone CHAR(10), email char (40), PRIMARY KEY (name, addr))



Tạo bảng tài khoảng ngân hàng tham chiếu đến khách hàng
CREATE TABLE Bank_Acct (acct CHAR (4), name CHAR (20), address char (40), balance REAL, PRIMARY KEY (acct) ,

25

TT.CNTT - Đại học Huế

Foreign Key (name, address) references Customer_Info)

Mô tả khóa ngoại trong SQL (tt.)
Acct 1005 1002 1003 1008 1010 1012 Name Jones Smith Smith Green Gates Smith Address 11 First St 12 First St 12 First St 14 Fourth St 20 Tenth St 15 Second St Balance $1023.22 $22.43 $11000.12 $1077.23 $5,000,000,000.00 $443.77

Name Jones Smith Green Gates Smith
26

Address 11 First St 12 First St 14 Fourth St 11 First St 12 Second St

Phone 6032223456 6033335567 7814447890 1223336789 6039788765

Email Jones@cs Smith@cs Green@cs Gates@ms Smith@ee

TT.CNTT - Đại học Huế

Khung nhìn (View)
 Một view là một quan hệ, nhưng chỉ lưu một tập của các bộ.
CREATE VIEW YoungActiveStudents (name, grade) AS SELECT S.name, E.grade FROM Students S, Enrolled E WHERE S.sid = E.sid and S.age<21


View có thể xóa bằng cách dùng lệnh DROP VIEW.

27

TT.CNTT - Đại học Huế