Quan hệ (Relation)

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 49)

II. Mô tả các xử lý

I.2. Quan hệ (Relation)

Một quan hệ là một bảng hai chiều, gồm các dòng và cột như ví dụ bảng DDH trong hình bên dưới, do đó, quan hệ còn được gọi là bảng. Mỗi cột của bảng chính là một thuộc tính. Chúng tôi sẽ sử dụng chữ cái viết hoa (không dấu) để ký hiệu cho các bảng trong mô hình quan hệ.

Sodh ngayddh makh Ngaygiaodk

037/99 09/06/1999 DTK 12/06/1999

041/99 09/06/1999 NKD 16/06/1999

. . . . . . . . . . . .

Bảng DDH

Chú ý:

Phải biết cách biểu diễn một quan hệ

Trong mô hình quan hệ, các thuộc tính của bảng được đặt trong cặp dấu ngoặc đơn theo sau tên của bảng. Tập hợp tất cả các thuộc tính của quan hệ Q được ký hiệu là Q+.

Ví dụ : Biểu diễn cấu trúc của quan hệ DDH

DDH(sodh, ngayddh, makh, ngaygiaodk) DDH+ = { sodh, ngayddh, makh, ngaygiaodk }

Thứ tự liệt kê các thuộc tính là không quan trọng. Trong một bảng, các thuộc tính không được trùng tên nhưng hai bảng khác nhau có thể có các thuộc tính trùng tên.

Cơ sở dữ liệu (database) của một ứng dụng gồm tập hợp tất cả các bảng dữ liệu của ứng dụng và một số thành phần liên quan khác như : hàm cửa sổ (view),…

Ví dụ: Các bảng trong cơ sở dữ liệu của ứng dụng quản lý đơn đặt hàng.

DMHH( mahh, tenhh, dvt )

DMKH( makh, tenkh, diachikh, dthoaikh )

0

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

DDH( sodh, makh, ngaydh, ngaygiaodk ) CTDH( sodh, mahh, sldh, sotiendh ) PGH( sogh, ngaygh, sodh )

CTGH( sogh, mahh, slgh, sotiengh ) HOADON( sohd, ngayhd, hoten, diachi ) CTHD( sohd, mahh, slhd, sotienhd ) PNHAP( sopn, ngaypn, makh ) CTPN( sopn, mahh, slpn, sotienpn )

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

PTHU( sopt, ngaypt, makh, sotienpt, dgiaipt )

TKHO(mahh, namthangtkho, tondk, slnhap, slxuat,tonck) I.3. Bộ (tuple)

Một bộ, hay còn được gọi là mẩu tin (record), là một dòng trong bảng. Mỗi bộ biểu diễn cho một đối tượng thuộc quan hệ tương ứng và gồm tất cả các thông tin về đối tượng này. Tất cả các bộ trong một quan hệ đều có kích thước giống nhau.

Ví dụ :

d = ( ‘057/99’ , {15/06/1999} , ‘NTD’ , {19/06/1999} ) là một bộ thuộc quan hệ DDH.

Giả sử có một quan hệ Q(A1,A2, …, An) và q là một bộ của quan hệ Q. Khi muốn lấy giá trị thuộc tính Ai của bộ q, ta dùng ký hiệu : q.Ai hoặc q[Ai]. Trong ví dụ ngay ở trên, d.sodh sẽ cho giá trị là ‘057/99’. Đó chính là phép chiếu (projector) một bộ lên một thuộc tính của quan hệ.

Phép chiếu có thể được mở rộng cho nhiều thuộc tính; ví dụ, kết quả của d[sodh,makh] sẽ là cặp giá trị (‘057/99’,’NTD’). Phép chiếu được sử dụng rất nhiều trong mô hình quan hệ.

Chú ý:

Phải biết cách biểu diễn một bộ Giải thích về phép chiếu (projector)

Xét quan hệ Q và d là một bộ trong Q thì: d[Q+] = d

I.4. Khóa chỉ định (candidate key) – Khóa chính (primary key)

Một tập hợp K gồm các thuộc tính của quan hệ Q được gọi là khóa chỉ định, hay khóa nội, của Q nếu K có thể được dùng để phân biệt hai bộ bất kỳ trong Q và không có tập hợp nào ít thuộc tính hơn K mà cũng có tính chất này. Nói cách khác, nếu K là khóa chỉ định của Q và q1, q2 là hai bộ bất kỳ của Q thì : q1.K q2.K

Mọi quan hệ Q đều có ít nhất một và có thể có nhiều khóa chỉ định.

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

Ví dụ: Quan hệ DDH có một khóa chỉ định là

K = { sodh }

Trong những phần sau, nếu không có chú thích gì thêm thì các khóa chỉ định sẽ được gọi tắt là khóa.

Các thuộc tính có tham gia vào một khóa của quan hệ được gọi là thuộc tính khóa và khi mô tả trong một quan hệ sẽ được gạch dưới và thường đặt ở đầu danh sách. Thuộc tính không tham gia vào bất kỳ khóa nào gọi là thuộc tính không khóa.

Ví dụ: Mô tả quan hệ DDH

DDH(sodh, ngayddh, makh, ngaygiaodk)

Trong thực tế, đối với những bảng biểu diễn cho các đối tượng tồn tại khách quan (ví dụ : sinh viên, giảng viên, nhân viên, hàng hóa, ...), người thiết kế cơ sở dữ liệu thường gán thêm cho chúng một thuộc tính giả gọi là mã số để làm khóa (ví dụ : mã số sinh viên, mã số giảng viên, mã số nhân viên, mã số khách hàng, mã số hàng hóa, ...).

Trong trường hợp quan hệ Q có nhiều khóa, khi cài đặt trên một hệ quản trị cơ sở dữ liệu nào đó, người thiết kế có thể chọn một trong số các khóa để tạo chỉ mục chi phối việc truy cập đến các bộ. Khóa này được gọi là khóa chính (primary key) và các khóa còn lại gọi là các khóa tương đương. Khóa chính chỉ thật sự có ý nghĩa trong quá trình khai thác cơ sở dữ liệu và xét trên phương diện lý thuyết, khóa chính hoàn toàn không có vai trò gì khác so với các khóa còn lại. Một số hệ quản trị cơ sở dữ liệu như : Oracle, Microsoft SQL Server, Microsoft Access,.. có hỗ trợ cơ chế kiểm tra tự động tính duy nhất trên khóa chính. Ví dụ, nếu người sử dụng thêm một bộ mới q1 có giá trị khóa chính trùng với giá trị khóa chính của một bộ q2 đã có trong bảng thì hệ thống sẽ báo lỗi và yêu cầu nhập lại một giá trị khác.

Chú ý:

Miền giá trị của các thuộc tính khóa không chứa giá trị null (hay nói cách khác, các thuộc tính khóa không lấy giá trị null)

Người sử dụng không được phép sửa đổi giá trị của thuộc tính khóa (đặc tính locked). Nếu muốn sửa đổi giá trị khóa của một bộ q, người sử dụng phải hủy bỏ bộ này và sau đó thêm vào một bộ q’ với giá trị khóa đã được sửa đổi và lấy lại giá trị những giá trị các thuộc tính không khóa của q cho q’

Kinh nghiệm giảng dạy:

Cho ví dụ giải thích về khoá chỉ định và khoá chính

0

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

I.5. Khóa ngoại (foreign key)

Khóa ngoại còn được gọi là ràng buộc toàn vẹn về phụ thuộc tồn tại. Cũng giống như khóa nội, khóa ngoại rất phổ biến trong cơ sở dữ liệu quan hệ. Chúng ta lần lượt xem xét hai ví dụ ngay bên dưới.

Ví dụ: Xét hai quan hệ DMKH và DDH

DMKH(makh, tenkh, diachi, dthoai) DDH(sodh, ngayddh, makh, ngaygiaodk)

Trong quan hệ DDH, sự tồn tại của bộ d :

d = ( ‘037/99’, {09/06/1999} , ‘DTK’ , {12/06/1999} )

hoàn toàn phụ thuộc vào sự tồn tại của một bộ k trong quan hệ DMKH :

k=( ‘DTK’, ‘Dang Thanh Khoa’, ’82 Su Thien Chieu, ‘8650960’ )

Nếu trong quan hệ DMKH không tồn tại một bộ k nào thỏa mãn điều kiện : k.makh = ‘DTK’ thì trong quan hệ DDH không được phép tồn tại bất kỳ một bộ d nào mà : d.makh = ‘DTK’.

Thuộc tính makh của quan hệ DDH được gọi là khóa ngoại của quan hệ này và ta ký hiệu :

DDH[makh] DMKH[makh]

Bảng DMKH được gọi là bảng cha (parent table) và DDH được gọi là bảng con (child table). Ví dụ: Xét hai quan hệ DDH và CTDDH

DDH(sodh, ngayddh, makh, ngaygiaodk) CTDDH(sodh, mahh, sl, sotien)

Trong quan hệ CTDDH, sự tồn tại của bộ c :

c = ( ‘037/99’, ‘HP 5L’ , 1 , 7 000 000 )

hoàn toàn phụ thuộc vào sự tồn tại của một bộ d trong quan hệ DDH :

d = ( ‘037/99’, {09/06/1999} , ‘DTK’ , {12/06/1999} )

Nếu trong quan hệ DDH không tồn tại một bộ d nào thỏa mãn điều kiện : d.sodh = ‘037/99’ thì trong quan hệ CTDDH không được phép tồn tại bất kỳ một bộ c nào mà : c.sodh = ‘037/99’. Thuộc tính sodh của quan hệ CTDDH được gọi là khóa ngoại của quan hệ này và ta ký hiệu :

CTDDH[sodh] DDH[sodh]

Hai ví dụ trên là hai trường hợp điển hình về khóa ngoại và sau đây, chúng tôi sẽ giới thiệu hai dấu hiệu hình thức tương ứng với hai trường hợp trên.

Giả sử có hai bảng Q, R và KQ , KR lần lượt là các khóa của Q và R.

9 Khóa ngoại tham chiếu: Nếu KQ ⊆ R+ \ KR (khóa nội của bảng Q là thuộc tính không khóa của bảng R) thì ta có một phụ thuộc tồn tại của R vào Q và ký hiệu :

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

R[ KQ ] ⊆ Q[ KQ ]

9 Khóa ngoại phân cấp: Nếu ( KQ ⊆ KR ) (khóa nội của bảng Q nằm trong khóa nội của bảng R) thì ta có một phụ thuộc tồn tại của R vào Q và ký hiệu :

R[ KQ ] ⊆ Q[ KQ ]

Bảng Q là bảng cha, bảng R là bảng con và KQ là khóa ngoại của bảng R.

Trong phần kế tiếp, chúng tôi sẽ giới thiệu công việc thiết kế thành phần dữ liệu của ứng dụng tin học.

Chú ý:

Phải biết cách biểu diễn ràng buộc toàn vẹn khoá ngoại

II. Công cụ DB-Main

Sử dụng công cụ DB-Main để chuyển đổi sơ đồ quan niệm dữ liệu sang sơ đồ logic dữ liệu. Gồm có các chức năng chính sau đây:

II.1. Chức năng chuyển đổi tự động sơ đồ quan niệm dữ liệu của bộ công cụ DB Main

Các bước thực hiện:

9 Mở tập tin .LUN chứa sơ đồ quan niệm dữ liệu,

9 Nhấp chuột vào biểu tượng tương ứng với sơ đồ quan niệm dữ liệu,

9 Chọn Product, Copy product từ thực đơn hệ thống để tạo sơ đồ logic dữ liệu (cho đến thời điểm này, hai sơ đồ quan niệm dữ liệu và sơ đồ logic dữ liệu hoàn toàn giống nhau),

9 Xác định những thông tin liên quan đến sơ đồ logic dữ liệu (tên, tên tắt, phiên bản, ...) tương tự như sơ đồ quan niệm dữ liệu,

9 Nhấp đúp chuột vào hình tượng ứng với sơ đồ logic dữ liệu để mở sơ đồ này,

9 Chọn Transform, Relational model từ thực đơn hệ thống để chuyển sang mô hình quan hệ.

II.2. Phát sinh script file tạo cơ sở dữ liệu bằng DB Main

Các bước thực hiện: 9 Mở sơ đồ logic dữ liệu,

9 Chọn Quick DB, SQL từ thực đơn hệ thống và cho biết tên tập tin script.

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

Bài 7 THIẾT KẾ THAØNH PHẦN DỮ LIỆU Tóm tắt

Lý thuyết 8 tiết - Thực hành 10 tiết

Mục tiêu Các mục chính Bài tập bắt

buộc

Bài tập làm thêm

Nắm được các bước thực hiện trong giai đoạn thiết kế thành phần dữ liệu của một UDTH dựa theo mô hình thác nước

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

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

7.1, 7.2 7.3

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

Chú ý:

Trong bài học này nên dành thêm thời gian để sửa các bài tập thiết kế ra sơ đồ logic dữ liệu Cuối bài học này nên cho bài thi viết làm trong 1 đến 2 tuần

Như chúng ta đã đề cập ở phần trước, việc thiết kế thành phần dữ liệu cho ứng dụng được dựa trên mô hình dữ liệu quan hệ. Việc lập sơ đồ logic dữ liệu được tiến hành theo các bước sau đây:

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

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 49)

Tải bản đầy đủ (PDF)

(151 trang)