Chuyển đổi sơ đồ quan niệm dữ liệu sang sơ đồ logic dữ liệu

Một phần của tài liệu Tài liệu hướng dẫn giải dạy chương trình kỹ thuật viên ngành lập trình học phần 4 phân tích hệ thống (Trang 54)

I. Lập sơ đồ logic dữ liệu

I.1. Chuyển đổi sơ đồ quan niệm dữ liệu sang sơ đồ logic dữ liệu

Trong phần này, chúng tôi sẽ giới thiệu một số qui tắc cơ bản được sử dụng trong việc chuyển đổi sơ đồ quan niệm dữ liệu từ mô hình E-R sang mô hình quan hệ. Sơ đồ kết quả của quá trình chuyển đổi được gọi là sơ đồ logic dữ liệu.

9 Qui tắc 1 : Chuyển đổi các loại thực thể thành các bảng và chuyển đổi các thuộc tính của

loại thực thể thành các thuộc tính của bảng tương ứng. Khóa của mỗi bảng là khóa của loại thực thể tương ứng.

Học phần 4 – Phân tích Hệ thống Trang 54/150

ABC thuộc tính 1 thuộc tính 2

thuộc tính 3 ABC( ttinh1 , ttinh2 , ttinh3 )

Chuyển đổi loại thực thể ABC thành bảng ABC

Chú ý:

1/ Tên của các bảng và các thuộc tính cần đặt theo đúng qui định về mặt cú pháp của các hệ quản trị cơ sở dữ liệu sẽ được dùng để cài đặt cơ sở dữ liệu.

2/ Nếu giá trị min của bản số của thuộc tính trong sơ đồ quan niệm dữ liệu lớn hơn 0 thì thuộc tính này sẽ có đặc tính not null trong sơ đồ logic dữ liệu.

3/ Đối với những thuộc tính có giá trị max của bản số lớn hơn 1 thì chúng ta có thể áp dụng một trong hai phương án sau:

a. Tăng độ rộng của thuộc tính để có thể chứa đồng thời nhiều giá trị (mỗi giá trị có thể cách nhau bằng một dấu phân cách): áp dụng cho những thuộc tính chỉ mang ý nghĩa tham khảo, không cần được xử lý.

b. Tạo thêm một bảng mới và khóa của bảng mới có chứa khóa của bảng ban đầu.

Ví dụ:

Chuyển đổi các thực thể trong sơ đồ quan niệm dữ liệu của ứng dụng quản lý đơn đặt hàng.

DMHH( mahh, tenhh, dvt )

DMKH( makh, hotenkh, diachikh, dthoaikh ) DDH( sodh, ngaydh, ngaygiaodk )

CTIETDH( sttdh, sldh, dongiadh, sotiendh ) PGH( sogh, ngaygh )

CTIETGH( sttgh, slgh, dgiagh, sotiengh ) HOADON( sohd, ngayhd, hoten, diachi ) CTIETHD( stthd, slhd, dgiahd, sotienhd ) PNHAP( sopn, ngaypn )

CTIETPN( sttpn, slpn, sotienpn )

CNO( sttcno, namthangcno, nodk, tienno, tienthu, nock ) PCHI( sopc, ngaypc, sotienpc, dgiaipc )

PTHU( sopt, ngaypt, sotienpt, dgiaipt )

TKHO(stttko, namthangtkho, tondk, slnhap, slxuat, tonck)

9 Qui tắc 2 : Nếu một mối kết hợp K mà cả hai nhánh của nó đều có bản số max là n thì mối

kết hợp này sẽ được chuyển thành một bảng K’ gồm các thuộc tính của mối kết hợp K, cộng thêm các thuộc tính khóa của hai bảng A, B tương ứng với hai loại thực thể tham gia vào mối kết hợp. Khóa của bảng K’ gồm cả hai khóa của hai bảng A và B.

Học phần 4 – Phân tích Hệ thống Trang 55/150

A thuộc tính a1 thuộc tính a2 thuộc tính a3

K( ttinha1 , ttinhb1 , ttinhk1 , ttinhk2 ) B thuộc tính b1 thuộc tính b2 K ...-n thuộc tính k1 ...-n thuộc tính k2

Chuyển loại mối kết hợp mà cả 2 nhánh đều có bản số max là n

Ví dụ:

NHAØ NGHIÊN CỨU mã nhà nghiên cứu tên nhà nghiên cứu

Nghiencuu ( mannc , mactr )

CÔNG TRÌNH mã công trình tên công trình ngày công bố 0-n Nghiên 1-n cứu

Minh họa qui tắc chuyển đổi thứ 2

Chú ý:

1/ Nếu một nhánh của mối kết hợp có bản số min lớn hơn 0 (thông thường là 1), thì ngoài hai ràng buộc toàn vẹn khóa ngoại, chúng ta cần bổ sung thêm một ràng buộc toàn vẹn khác có liên quan đến bản số min này. Trong ví dụ phía trên, ngoài hai ràng buộc về khóa ngoại:

NGHIENCUU[mannc] NHANC[mannc] và NGHIENCUU[mactr] CTRINH[mactr]

chúng ta cần phải thêm ràng buộc toàn vẹn : “Mỗi công trình phải được thực hiện bởi ít nhất một nhà nghiên cứu”.

2/ Trong một số trường hợp đặc biệt, ngoài khóa nội của hai bảng ban đầu, khóa nội của bảng mới phát sinh có thể chứa thêm một số thuộc tính khác. Lấy ví dụ: để quản lý trình độ ngoại ngữ của các nhân viên, chúng ta có mô hình sau:

NHÂN VIÊN mã nhân viên tên nhân viên

CCNgoaiNgu( manv , mann, trinhdo, ngaycap)

NGOẠI NGỮ mã ngoại ngữ tên ngoại ngữ 0-n 0-n trình độ ngày cấp bằng c.chỉ ngoại ngữ

Có trường hợp cũng cùng một ngoại ngữ nhưng một nhân viên có thể có nhiều bằng cấp khác nhau (thực tế có nhu cầu quản lý) nên chúng ta không thể chọn bộ khóa manv,mann (do áp dụng qui tắc 2) mà phải chọn lại bộ khóa là manv,mann,trinhdo (bổ sung thêm thuộc tính trinhdo làm

Học phần 4 – Phân tích Hệ thống Trang 56/150 thuộc tính khóa).

9 Qui tắc 3 : Nếu mối kết hợp mà một nhánh có bản số max là 1 (nhánh A) và nhánh còn lại

có bản số max là n (nhánh B) thì loại bỏ mối kết hợp này khỏi sơ đồ và thêm các thuộc tính khóa của bảng tương ứng với loại thực thể ở nhánh B vào bảng tương ứng với loại thực thể ở nhánh A (khóa của B sẽ trở thành khóa ngoại của A). Nếu mối kết hợp có các thuộc tính thì những thuộc tính này cũng được thêm vào bảng tương ứng với loại thực thể ở nhánh A.

A thuộc tính a1 thuộc tính a2 thuộc tính a3

A( ttinha1, ttinha2, ttinha3, ttinhb1 )

B thuộc tính b1 thuộc tính b2 ...-1 ...-n B( ttinhb1, ttinhb2 ) K

Chuyển đổi mối kết hợp theo qui tắc 3

Ví dụ:

Bổ sung khóa makh của bảng DMKH vào bảng DDH

DDH(sodh, ngayddh, makh, ngaygiaodk)

Chú ý:

1/ Nếu bản số của nhánh A là (1,1) thì các thuộc tính mới thêm vào loại thực thể ở nhánh A sẽ có đặc tính NOT NULL và ngược lại, nếu là (0,1) thì sẽ không có đặc tính NOT NULL.

2/ Nếu loại mối kết K có các thuộc tính riêng thì những thuộc tính này cũng sẽ được đưa thêm vào bảng A.

9 Qui tắc 4 : Nếu mối kết hợp mà cả hai nhánh đều có bản số max là 1 thì áp dụng qui tắc 3

cho một trong hai nhánh tùy chọn.

Kinh nghiệm giảng dạy:

Nên cho học viên áp dụng 4 qui tắc để chuyển (không nên sử dụng công cụ DB-Main trước) nhằm tập cho học viên hiểu và nắm vững việc vận dụng 4 qui tắc để chuyển

0

Học phần 4 – Phân tích Hệ thống Trang 57/150

I.2. Một số trường hợp đặc biệt

ƒ Nhiều loại mối kết hợp định nghĩa trên hai loại thực thể.

Trong trường hợp có nhiều loại mối kết hợp định nghĩa giữa hai loại thực thể thì chúng ta có thể chuyển đổi lần lượt từng loại mối kết hợp, chú ý đặt tên phân biệt cho các thuộc tính.

1-n LỘ TRÌNH

mã lộ trình độ dài

LoTrinhCacTP ( malotrinh , maTPdi, maTPden, dodai ) THAØNH PHỐ mã thành phố tên thành phố 1-1 Bắt đầu 1-1 Kết 1-n thúc

Chuyển đổi từng mối kết hợp và đặt tên phân biệt cho các thuộc tính

ƒ Chuyên biệt hóa – tổng quát hóa.

Chúng ta có hai phương án chuyển đổi chính:

(PA 1) Tổ chức lưu trữ trong một bảng (cha) duy nhất, gồm tất cả những thuộc tính của các loại thực thể cha và con.

NhanVien ( manv , tennv,luongngay, ngaykyHD, thoihan, luongthang,ngaybc)

Lưu trữ tất cả các thuộc tính trong 1 bảng

(PA 2) Chuyển đổi mỗi loại thực thể con thành một bảng riêng, trong đó, khóa nội của mỗi bảng này phải chứa thêm các thuộc tính khóa nội của loại thực thể cha.

Học phần 4 – Phân tích Hệ thống Trang 58/150

NhanVien ( manv , tennv) NVThoiVu ( manv , luongngay)

NVHopDong ( manv , ngaykyHD, thoihan, luongthang) NVBienChe ( manv , luongthang,ngaybc)

Lưu trữ từng bảng riêng

Chú ý:

Trong cả hai phương án nói trên, người thiết kế đều cần phải bổ sung các ràng buộc toàn vẹn thích hợp

ƒ Loại mối kết hợp định nghĩa trên một loại thực thể duy nhất (đệ qui).

Sau khi chuyển đổi loại thực thể thành bảng, người thiết kế sẽ bổ sung thêm một thuộc tính phân cấp vào bảng mới tạo thành và bổ sung các ràng buộc toàn vẹn cần thiết.

DonVi ( madv , tendv, madvquanly )

Bổ sung thêm thuộc tính làm khóa nội.

Chúng ta cũng có thể trình bày lại sơ đồ logic dữ liệu dưới dạng sau: (chỉ trình bày một phần để minh họa cho sơ đồ)

DMKH 1 n DDH 1 n CTIETDH n 1 DMHH

makh sodh mahh

Ví dụ về sơ đồ logic dữ liệu (vẽ theo sơ đồ quan hệ Relation ship như trên Access)

ƒ Thuộc tính có bản số đa trị [0-n], [1-n]. I.3. Tối ưu hoá sơ đồ logic dữ liệu

Sau khi chuyển đổi ra sơ đồ logic dữ liệu (gồm các bảng và các khoá ngoại), chúng ta cần phải tối ưu hoá sơ đồ logic dữ liệu để việc cài đặt dữ liệu đạt tính hiệu quả cao. Kết quả của việc tối ưu là một sơ đồ vật lý dữ liệu (gồm các bảng và các quan hệ sẽ được cài đặt trong cơ sở dữ liệu).

Học phần 4 – Phân tích Hệ thống Trang 59/150

Để tối ưu tốt sẽ phải phụ thuộc rất nhiều vào kinh nghiệm của mỗi cá nhân. Nhưng nói chung là luôn xét đến các trường hợp sau:

ƒ Thêm bớt các bảng.

Người thiết kế cần phải cân nhắc để đi đến quyết định thêm hoặc bớt các bảng trung gian dùng để lưu trữ những kết quả xử lý hay tổng hợp dữ liệu. Ví dụ, trong ứng dụng quản lý đơn đặt hàng, bảng TKHO có thể được loại bỏ khỏi sơ đồ logic dữ liệu nếu như người sử dụng luôn cần đến số liệu tồn kho một cách chính xác. Trong trường hợp đó, mỗi khi cần số liệu tồn kho thì người sử dụng đều phải thực hiện chức năng tính tồn kho. Ngược lại, nếu như thực tế quản lý chấp nhận một sai số nhất định về số liệu tồn kho thì bảng TKHO sẽ được giữ lại trong sơ đồ logic dữ liệu. Người sử dụng có thể tham khảo số liệu tồn kho hiện hành (có thể không hoàn toàn chính xác) và chỉ thực hiện tính toán lại tồn kho khi thấy cần thiết.

ƒ Thêm bớt các thuộc tính.

Tương tự như đối với các bảng, chúng ta cũng cần phải thực hiện việc tối ưu hóa trên các thuộc tính. Ví dụ, trong ứng dụng quản lý đơn đặt hàng, chúng ta có thể loại bỏ các thuộc tính đơn giá (chỉ giữ lại các thuộc tính số lượng và số tiền) trong các bảng : CTDH, CTGH, CTHD, CTPN,... Mỗi khi cần tham khảo thông tin về đơn giá thì thủ tục tính đơn giá sẽ được gọi thực hiện.

Ngoài ra, những thuộc tính khóa giống như sttcno trong bảng CNO cũng nên được loại bỏ và thay khóa nội của bảng này bằng hai thuộc tính : {namthangcno, makh}.

Chú ý:

Sau khi loại bỏ các bảng thì những ràng buộc toàn vẹn có liên quan đến chúng cũng phải được loại bỏ hoặc điều chỉnh cho phù hợp.

Sau khi loại bỏ các thuộc tính thì những ràng buộc toàn vẹn có liên quan đến chúng cũng phải được loại bỏ hoặc điều chỉnh cho phù hợp.

Kinh nghiệm giảng dạy:

Nên cho thêm ví dụ để làm rõ ý nghĩa của việc tối ưu sơ đồ logic dữ liệu

Ví dụ bảng nếu có nhiều thuộc tính làm khoá thì nên bổ sung thêm cột id làm khóa Ví dụ cần thêm vào sơ đồ các bảng thông tin cho hệ thống, người dùng, nhật ký làm việc

0

Học phần 4 – Phân tích Hệ thống Trang 60/150

II. Ràng buộc toàn vẹn mức thiết kế

II.1. Xác định danh sách các ràng buộc toàn vẹn

Khi sơ đồ quan niệm được chuyển thành sơ đồ logic dữ liệu và được tối ưu hóa thì tập hợp các ràng buộc toàn vẹn trên cũng phải được điều chỉnh lại (bổ sung ràng buộc toàn vẹn mới hoặc loại bỏ ràng buộc toàn vẹn không còn ý nghĩa hoặc thay đổi dạng biểu diễn,...) cho phù hợp với sơ đồ logic dữ liệu.

Trong giai đoạn thiết kế thì các ràng buộc toàn vẹn nào “phức tạp” thì phải có thuật giải đi kèm (xem thêm phụ lục A)

Ví dụ:

Bổ sung ràng buộc toàn vẹn “mỗi đơn đặt hàng có ít nhất một mặt hàng” tương ứng với bản số (1,n) của nhánh nối từ loại thực thể Đơn dặt hàng đến mối kết hợp Chi tiết đặt (xem qui tắc 2). Nếu người thiết kế đã loại bỏ thuộc tính dgiadh trong bảng CTIETDH thì cũng phải loại bỏ luôn ràng buộc toàn vẹn sau:

CTIETDH.sotiendh = CTIETHD.sldh * CTIETDH.dgiadh

II.2. Bảng tầm ảnh hưởng

Ràng buộc toàn vẹn là những điều kiện ràng buộc trên dữ liệu của ứng dụng và dữ liệu của ứng dụng phải thỏa mãn tất cả các ràng buộc toàn vẹn này ở mọi thời điểm. Do đó, trong giai đoạn thiết kế này, chúng ta cần xây dựng một chiến lược kiểm tra ràng buộc toàn vẹn của cơ sở dữ liệu sao cho đầy đủ và tiết kiệm nhất.

Chiến lược kiểm tra có thể dựa trên một nhận xét khá đơn giản nhưng rất quan trọng : nếu một cơ sở dữ liệu đang ở trong tình trạng kết dính (coherence), nghĩa là thỏa mãn tất cả các ràng buộc toàn vẹn, thì nó chỉ có nguy cơ bị mất tính kết dính (incoherence) khi người sử dụng thực hiện việc cập nhật (thêm, sửa, xóa) dữ liệu của cơ sở dữ liệu.

Xuất phát từ nhận xét trên, chúng ta sẽ xây dựng bảng tầm ảnh hưởng tổng hợp làm cơ sở cho việc kiểm tra tính kết dính của cơ sở dữ liệu.

Trước hết, chúng ta thiết lập bảng tầm ảnh hưởng riêng cho mỗi ràng buộc toàn vẹn như trong những ví dụ bên dưới.

Mỗi bảng tầm ảnh hưởng gồm 3 cột: thêm, sửa và xóa, thể hiện 3 động tác cập nhật dữ liệu và có thể có nhiều dòng, trong đó mỗi dòng tương ứng với một bảng có liên quan đến ràng buộc toàn vẹn. Dấu + ở ô có tọa độ ij (dòng i, cột j) trong bảng tầm ảnh hưởng thể hiện yêu cầu phải kiểm tra ràng buộc toàn vẹn khi người sử dụng thực hiện một động tác cập nhật tương ứng với cột j trên bảng ở dòng i.

Học phần 4 – Phân tích Hệ thống Trang 61/150

Ví dụ: Bảng tầm ảnh hưởng của ràng buộc về khóa ngoại

DDH[makh] DMKH[makh]

Thêm Sửa Xóa

DMKH +

DDH + +

Bảng tầm ảnh hưởng trên “nói rằng” : hệ thống phải kiểm tra ràng buộc toàn vẹn : DDH[makh] ⊆ DMKH[makh], khi người sử dụng thực hiện 1 trong 3 động tác : xóa một bộ trong bảng DMKH hoặc thêm một bộ trong bảng DDH hoặc sửa một bộ (thuộc tính makh) trong bảng DDH.

Chú ý:

Các ràng buộc toàn vẹn thuộc cùng một loại (xem phần phân loại ràng buộc toàn vẹn trong bài 4) sẽ có cấu trúc bảng tầm ảnh hưởng giống nhau. Sau đây, chúng tôi sẽ giới thiệu bảng tầm ảnh hưởng của một số loại ràng buộc toàn vẹn thường gặp

ƒ Ràng buộc về khóa nội của bảng Q

Thêm Sửa Xóa

Q +

ƒ Ràng buộc về miền giá trị trong bảng Q

Thêm Sửa Xóa

Q + +

ƒ Ràng buộc liên thuộc tính trong bảng Q

Thêm Sửa Xóa

Q + +

ƒ Ràng buộc khóa ngoại : CTABLE[a] PTABLE[a]

Thêm Sửa Xóa

PTABLE +

CTABLE + +

Hoặc

Thêm Sửa Xóa

PTABLE + +

CTABLE + +

Học phần 4 – Phân tích Hệ thống Trang 62/150

Bước kế tiếp, chúng ta sẽ thiết lập bảng tầm ảnh hưởng tổng hợp các ràng buộc toàn vẹn dựa trên cơ sở các bảng tầm ảnh hưởng của từng ràng buộc toàn vẹn. Bảng tầm ảnh hưởng tổng hợp sẽ giúp chúng ta xác định được tất cả những ràng buộc toàn vẹn nào cần phải kiểm tra khi người sử dụng thực hiện một thao tác cập nhật dữ liệu trên một bảng Q. Điều này sẽ được chúng tôi giải thích rõ hơn ở phía sau.

Bảng tầm ảnh hưởng tổng hợp gồm một cột chứa tên các ràng buộc toàn vẹn cộng thêm (3 * n) cột, trong đó n là số bảng của cơ sở dữ liệu, và có m dòng, với m là tổng số ràng buộc toàn vẹn của cơ sở dữ liệu. Chúng ta lần lượt “đổ” bảng tầm ảnh hưởng của mỗi ràng buộc toàn vẹn vào một dòng của bảng tầm ảnh hưởng tổng hợp như trong bảng bên dưới.

BẢNG TẦM ẢNH HƯỞNG TỔNG HỢP DMHH DMKH DDH CTDH PGH CTGH CNO . . . T S X T S X T S X T S X T S X T S X T S X T S X R1-010 + R1-020 + . . . R2-010 + + R2-020 + + . . . R3-010 + + R3-020 + + R3-030 + + . . . R6-100 + + + + R6-110 + +

Dựa vào bảng tầm ảnh hưởng tổng hợp này, chúng ta sẽ biết rằng khi người sử dụng thực hiện một động tác cập nhật dữ liệu của một bảng tương ứng với cột j trong bảng tầm ảnh hưởng tổng hợp thì hệ thống phải kiểm tra tất cả những ràng buộc toàn vẹn nào được đánh dấu + ở cột j. Ví dụ, nếu người sử dụng thêm một chi tiết đặt hàng mới thi chúng ta sẽ dò trên cột tương ứng (cột thứ 11 từ trái sang) và nhận thấy có các ràng buộc được đánh dấu + : R1-020, R2-010, R3- 020 và R6-100. Như vậy, hệ thống sẽ phải kiểm tra 4 ràng buộc trên nếu người sử dụng thêm một chi tiết đặt hàng mới.

Tóm lại, việc thiết lập bảng tầm ảnh hưởng tổng hợp của các ràng buộc toàn vẹn nhằm tiết kiệm chi phí cho quá trình kiểm tra ràng buộc toàn vẹn của ứng dụng.

II.3. Phương pháp kiểm tra ràng buộc toàn vẹn

Có 4 phương pháp để cài đặt việc kiểm tra ràng buộc toàn vẹn:

9 (S): Ràng buộc sẽ được hệ quản trị cơ sở dữ liệu kiểm tra tự động. Ví dụ các ràng buộc về khoá chính, khoá ngoại, duy nhất (unique), miền giá trị.

9 (I): Ràng buộc sẽ được kiểm tra mức giao diện. Ví dụ các ràng buộc khoá ngoại sẽ được kiểm tra bằng cách chọn dữ liệu trong hộp danh sách (list box/combo box).

Một phần của tài liệu Tài liệu hướng dẫn giải dạy chương trình kỹ thuật viên ngành lập trình học phần 4 phân tích hệ thống (Trang 54)