ch5.thiet kedulieu

49
LOGO Chương 5: Thiết kế dữ liệu lưu trữ 1 GVLT: Phạm Thi Vương

Upload: nguyen-thu-hang

Post on 15-Jul-2015

65 views

Category:

Health & Medicine


0 download

TRANSCRIPT

Page 1: Ch5.thiet kedulieu

LOGO

Chương 5: Thiết kế dữ liệu lưu trữ

1

GVLT: Phạm Thi Vương

Page 2: Ch5.thiet kedulieu

LOGO Nội dung

Lưu trữ dữ liệu bằng CSDL quan hệ

Một số kỹ thuật để ánh xạ sơ đồ lớp sang sơ

đồ logic (tổ chức lưu trữ dữ liệu bằng CSDL

quan hệ)

2

Page 3: Ch5.thiet kedulieu

LOGO

3

Xác định các đối tượng lưu trữ

Các loại dữ liệu tồn tại trong một hệ thống: Là kết quả tạm thời để đánh giá một biểu thức

Các biến trong quá trình thực thi một thủ tục (các tham số và biến trong phạm vi cục bộ)

Các biến toàn cục và các biết cấp phát một cách tự động

Dữ liệu tồn tại giữa các lần thực thi một chương trình

Dữ liệu tồn tại giữa các phiên bản của một chương trình

Dữ liệu tồn tại vượt ngoài phạm vi sống của một chương trình

Dữ liệu

tạm thời

(transient

)

Dữ liệu

lâu dài

(persiste

nt)

Page 4: Ch5.thiet kedulieu

LOGO

4

Xác định các đối tượng lưu trữ

Các loại dữ liệu tồn tại trong một hệ thống:

Các lớp transient

Page 5: Ch5.thiet kedulieu

LOGO

5

Xác định các đối tượng lưu trữ

Các lớp persistent của hệ thống ATM

GiaoDịchRút GiaoDịchGởi

KháchHàng

#tênKháchHàng:String #họKháchHàng:String #mãPIN::String #sốThẻ:String

GiaoDịch

#giaoDịchID:String #ngàyGiaoDịch:Date #thờiGianGiaoDịch:Time #loạiGiaoDịch:String #sốTiền:float #sốDư:float

TàiKhoản #sốTàiKhoản:String #loạiTàiKhoản:String #sốDư:float

1

1

0..n 1

#tàiKhoản:TàiKhoản

#giaoTác:GiaoDịch

(complete, disjoint)

Page 6: Ch5.thiet kedulieu

LOGO

6

Chuyển đổi sang mô hình Quan hệ

Dữ liệu luận lý

Các lớp persistent

Dữ liệu vật lý

Page 7: Ch5.thiet kedulieu

LOGO Quy tắc #1

Thông thường, mỗi lớp đối tượng đơn giản được ánh xạ thành một bảng

7

Ví dụ?

Page 8: Ch5.thiet kedulieu

LOGO

8

Quy tắc #1

Chuyển đổi lớp – bảng (class – table)

Một lớp một bảng

Một thuộc tính (persistent) một cột: chỉ có các

thuộc tính có nhu cầu lưu trử và được đòi hỏi bởi ứng

dụng sẽ được chuyển thành cột của bảng.

Một đối tượng (thể hiện) một dòng

KháchHàng

tênKháchHàng họKháchHàng mãPIN sốThẻ

Tên_KH Họ_KH MãPIN Số_Thẻ

Page 9: Ch5.thiet kedulieu

LOGO

Ví dụ

9

Page 10: Ch5.thiet kedulieu

LOGO Quy tắc #2

Quan hệ 1-1

10

A B 1 1

A B

MA

MA

A B

MB

MB

A B

MA

MB

MB

MA

A B

MA

MA

AB

A B

MB

MB

… Ví dụ?

Page 11: Ch5.thiet kedulieu

LOGO

11

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết (association, agregration)

1-1 KháchHàng

tênKháchHàng họKháchHàng mãPIN sốThẻ

TàiKhoản

sốTàiKhoản loạiTàiKhoản sốDư

1

1

Bảng KháchHàng

Bảng TàiKhoản

Tên_KH Họ_KH MãPIN Số_Thẻ

Số_TK Loại_TK Số_Dư_TK Số_Thẻ

(*)

(*): Số_Thẻ là một khoá của bảng TàiKhoản

Page 12: Ch5.thiet kedulieu

LOGO

12

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết (association, agregration)

1-1 KháchHàng

tênKháchHàng họKháchHàng mãPIN sốThẻ

TàiKhoản

sốTàiKhoản loạiTàiKhoản sốDư

1

1

Bảng KháchHàng_TàiKhoản

Tên_KH Họ_KH MãPIN Số_Thẻ Số_TK Loại_TK Số_Dư_TK

(*)

(*): Số_Thẻ là một khoá của bảng TàiKhoản

Page 13: Ch5.thiet kedulieu

LOGO Quy tắc #3

Quan hệ 1-n

13

A B 1 *

A B

MA

MA

Ví dụ?

Page 14: Ch5.thiet kedulieu

LOGO

14

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết (association, agregration)

1-n

Số_TK Loại_TK Số_Dư_TK Số_Thẻ

GiaoDịch

giaoDịchID ngàyGiaoDịch thờiGianGiaoDịch loạiGiaoDịch sốTiền sốDư

TàiKhoản

sốTàiKhoản loạiTàiKhoản sốDư 0..n 1 1

GD_ID Ngày_GD Giờ_GD Loại_GD Số_Tiền Số_Dư Số_TK

Bảng TàiKhoản

Bảng GiaoDịch

Page 15: Ch5.thiet kedulieu

LOGO

15

Page 16: Ch5.thiet kedulieu

LOGO

16

Page 17: Ch5.thiet kedulieu

LOGO Quy tắc #4

Quan hệ m-n

17

A B * C *

A C

MA

MB

B

MA

MB

Ví dụ?

Page 18: Ch5.thiet kedulieu

LOGO

18

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết (association, agregration)

n-n

Mã_NV Tên_NV Số_ĐT

NhânViên

mãNhânViên tênNhânViên sốĐiệnThoại 0..n 0..n

Tham gia

CôngViệc

côngViệcID môTảCôngViệc ngàyBắtĐầu

Mã_NV Công_Việc_ID

Công_việc_ID Mô_tả_CV Ngày_BĐ

Bảng NhânViên

Bảng NhânViên_CôngViệc

(ThamGia)

Bảng CôngViệc

Page 19: Ch5.thiet kedulieu

LOGO

19

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết (association, agregration)

n-n

Số_ĐH Ngày_ĐH DiễnGiải_ĐH Số_ĐH MS_NL SốLượn

g

ĐơnGiá

MS_NL TênNL ĐVT

Bảng ĐơnHàng

ĐơnHàng

sốĐơnHàng ngàyĐơnHàng diễnGiải 0..n 1..n

NguyênLiệu

mãSố tênNLiệu ĐVT

dòngĐH

sốLượng đơnGiá

Bảng DòngĐH

Bảng Nguyên Liệu

Page 20: Ch5.thiet kedulieu

LOGO

20

Page 21: Ch5.thiet kedulieu

LOGO

21

Page 22: Ch5.thiet kedulieu

LOGO

22

Page 23: Ch5.thiet kedulieu

LOGO Quy tắc #5

Quan hệ kế thừa

23

A B

A(MA, x, y, z) A

+ x

# y

- z

B

# t

# u

C

-v

C

B(MB, x, y, t, u) C(MC, x, y, v)

+ Đơn giản

- Không thấy mối liên hệ giữa các loại đối tượng A, B, C

- Khó thống kê tổng quát

Ví dụ?

Page 24: Ch5.thiet kedulieu

LOGO

24

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết kế thừa

Mã_NV Tên_NV Điện_Thoạ

i

NhânViên

mãNhânViên tênNhânViên sốĐiệnThoại

NhânViênCôngNhật

lươngNgày

NhânViênBiênChế

lươngTháng bậcLương

Mã_NV Tên_NV Điện_Thoạ

i

Lương_Tháng Bậc_Lương

Mã_NV Tên_NV Điện_Thoại Lương_Ngày

Bảng NhânViên Bảng NhânViênBiênChế

Bảng NhânViênCôngNhật

Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete,

overlapping), (incomplete, disjoint), (incomplete, overlapping)

Page 25: Ch5.thiet kedulieu

LOGO Quy tắc #5

Quan hệ kế thừa

25

A

+ x

# y

- z

B

# t

# u

C

-v

+ Có được cái nhìn tổng quát về các đối tượng

- Lãng phí không gian lưu trữ

A

A(M, Loại, x, y, z, t, u, v)

Loại x y z t u v

A

B

C

Ví dụ?

Page 26: Ch5.thiet kedulieu

LOGO

26

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết kế thừa NhânViên

mãNhânViên tênNhânViên sốĐiệnThoại

NhânViênCôngNhật

lươngNgày

NhânViênBiênChế

lươngTháng bậcLương

Mã_NV Tên_NV Điện_Thoại Lương_Ngày Lương_Tháng Bậc_Lương Loại_NV

Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete,

overlapping), (incomplete, disjoint), (incomplete, overlapping)

Page 27: Ch5.thiet kedulieu

LOGO Quy tắc #5

Quan hệ kế thừa

27

A

+ x

# y

- z

B

# t

# u

C

-v

Chung_A

R_B

Chung_A(M, x, y)

R_C

R_B(M, t, u) R_C(M, v)

+ Tiết kiệm không gian lưu trữ

+ Cho phép có cái nhìn tổng quát

- Tổ chức khá phức tạp

R_A

R_B(M, z)

Ví dụ?

Page 28: Ch5.thiet kedulieu

LOGO

28

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết kế thừa

NhânViên

mãNhânViên tênNhânViên sốĐiệnThoại

NhânViênCôngNhật

lươngNgày

NhânViênBiênChế

lươngTháng bậcLương

Mã_NV Tên_NV Điện_Thoại Lương_Tháng Bậc_Lương

Mã_NV Tên_NV Điện_Thoại Lương_Ngày

Bảng NhânViênBiênChế

Bảng NhânViênCôngNhật

Chỉ phù hợp cho: (complete, disjoint)

Page 29: Ch5.thiet kedulieu

LOGO

29

Chuyển đổi sang mô hình Quan hệ

Chuyển đổi liên kết kế thừa

Mã_NV Tên_NV Điện_Thoại

NhânViên

mãNhânViên tênNhânViên sốĐiệnThoại

NhânViênCôngNhật

lươngNgày

NhânViênBiênChế

lươngTháng bậcLương

Mã_NV Lương_Tháng Bậc_Lương

Mã_NV Lương_Ngày

Bảng NhânViên Bảng NhânViênBiênChế

Bảng NhânViênCôngNhật

Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete,

overlapping), (incomplete, disjoint), (incomplete, overlapping)

Page 30: Ch5.thiet kedulieu

LOGO

30

Ví dụ - Quan hệ kế thừa

NHAN_VIEN

MA_NV

TEN_NV

DIA_CHI

QUA_TRINH_TANG_LUONG

NGAY_HIEU_LUC

LUONG_MOI

NV_KINH_DOANH

NV_KD_LAU_NAM NV_KD_TAP_SU

DON_HANG

SO_DDH

KHACH_HANG

TRI_GIA

HOA_HONG

1 0..*

0..* 1..*

Thương lượng

Hướng dẫn cho

1 1..*

Page 31: Ch5.thiet kedulieu

LOGO

31

Ví dụ - Quan hệ kế thừa

NHAN_VIEN

MA_NV

TEN_NV

DIA_CHI

LOAI_NV

NV_HUONGDAN

QUA_TRINH_

TANG_LUONG

MA_NV

NGAY_HIEU_LUC

LUONG_MOI

THUONG_LUONG

MA_NV

SO_DDH

HOA_HONG

DON_HANG

SO_DDH

KHACH_HANG

TRI_GIA

Cách 1

Page 32: Ch5.thiet kedulieu

LOGO

32

Ràng buộc toàn vẹn:

Loai_nv nhận một trong ba giá trị: nhân viên lâu năm, hoặc

nhân viên tập sự hoặc nhân viên khác

Nếu nhân viên có loai_nv=“Nhân viên tập sự” thì:

• Thuộc tính nhân viên hướng dẫn <> null

• Ngược lại thuộc tính nhân viên hướng dẫn = null

Ràng buộc chỉ có nhân viên kinh doanh mới có thương

lượng đơn hàng

t THUONG_LUONG, n NHAN_VIEN sao cho:

n.MA_NV=t.MA_VN thì n.Loai_NV<>’Nhân viên khác’

Cuối

Ví dụ - Quan hệ kế thừa

Page 33: Ch5.thiet kedulieu

LOGO

33

Ví dụ - Quan hệ kế thừa

NHAN_VIEN

MA_NV

TEN_NV

DIA_CHI

LOAI_NV

QUA_TRINH_

TANG_LUONG

MA_NV

NGAY_HIEU_LUC

LUONG_MOI

THUONG_LUONG

MA_NV

SO_DDH

HOA_HONG

DON_HANG

SO_DDH

KHACH_HANG

TRI_GIA

Cách 2

NV_KINHDOANH

MA_NV

LOAI_NV_KD

NV_HUONGDAN

1 0..1

Page 34: Ch5.thiet kedulieu

LOGO Quy tắc #6

Lớp đối tượng có thuộc tính có cấu trúc phức tạp

Tách thành bảng phụ để lưu trữ thuộc tính có cấu trúc phức tạp đó

34

class A

{

B x;

} Cấu trúc của B gồm:

Thuộc tính 1

Thuộc tính 2

A B

MA

MA

ThuocTinh1

ThuocTinh2

Ví dụ?

Page 35: Ch5.thiet kedulieu

LOGO Quy tắc #7

Lớp đối tượng có thuộc tính kiểu mảng

Tách thành bảng chi tiết

35

class A

{

B[] x;

}

Ví dụ?

A B

MA

MA

Page 36: Ch5.thiet kedulieu

LOGO Quy tắc #8

Thuộc tính có giá trị rời rạc: Tách thành bảng danh mục

36

Ví dụ?

Page 37: Ch5.thiet kedulieu

LOGO Quy tắc #9

Bảng tham số

Dạng 1

37

Khóa ThamSố#1 ThamSố#2 … ThamSố#N

… … … … …

Mỗi tham số tương ứng với một cột trong bảng tham số

Bảng tham số thường chỉ gồm 1 dòng (chứa giá trị các tham số hiện hành)

? Cần bổ sung tham số mới?

Cần vô hiệu hóa tác dụng của một tham số?

Page 38: Ch5.thiet kedulieu

LOGO Quy tắc #9

Bảng tham số

Dạng 2

38

MãThamSố TênThamSố Kiểu GiáTrị TìnhTrạng

… … … … …

Mỗi tham số tương ứng với một dòng trong bảng tham số

Giá trị hiện tại của tham số được lưu bằng dạng chuỗi

Mỗi tham số cần lưu trữ kiểu giá trị để phần mềm “hiểu” đúng nội dung

giá trị hiện tại của tham số

? Cần bổ sung tham số mới?

Cần vô hiệu hóa tác dụng của một tham số?

Được lưu

dạng chuỗi

Page 39: Ch5.thiet kedulieu

LOGO

39

Chuyển đổi sang mô hình Quan hệ

Mô hình dữ liệu quan hệ của hệ thống ATM

Tên_KH Họ_KH MãPIN Số_Thẻ

Số_TK Loại_T

K

Số_Dư_TK Số_Thẻ

GD_ID Ngày_GD Giờ_GD Loại_GD Số_Tiền Số_Dư Số_TK

Bảng KháchHàng

Bảng TàiKhoản

Bảng GiaoDịch

Page 40: Ch5.thiet kedulieu

LOGO

40

Phải chú ý đến các vấn đề sau:

Không gian

Thời gian

Khối lượng dữ liệu phát sinh rất nhanh theo

thời gian

Đáp ứng yêu cầu truy xuất nhanh

….

Thiết kế dữ liệu

Page 41: Ch5.thiet kedulieu

LOGO

41

Page 42: Ch5.thiet kedulieu

LOGO

42

Page 43: Ch5.thiet kedulieu

LOGO

43

Page 44: Ch5.thiet kedulieu

LOGO

44

Page 45: Ch5.thiet kedulieu

LOGO

45

Page 46: Ch5.thiet kedulieu

LOGO

46

Page 47: Ch5.thiet kedulieu

LOGO

47

Page 48: Ch5.thiet kedulieu

LOGO

48

Page 49: Ch5.thiet kedulieu

LOGO

http://www.tomjewett.com/dbdesign/dbdesign.php

49