Quan hệ trong mô hình quan hệ (P2)

Các hình thức mô tả quan hệ

Quan hệ một – một (1-1)

Có lẽ kiểu quan hệ 1-1 là hình thức quan hệ đơn giản nhất.  Nội dung của quan hệ này có thể được diễn giải như sau: Có hai bảng A và B, nếu mỗi dòng dữ liệu trong bảng B chỉ được xác định (hoặc liên kết) bởi duy nhất một dòng dữ liệu của bảng A thì quan hệ giữa đối tượng A và đối tượng B là quan hệ 1-1. Chúng ta cũng thường gặp kiểu quan hệ: X chỉ có một Y hay, X là Y được mô tả bằng quan hệ 1-1. Ví dụ: Các số điện thoại: điện thoại bàn, điện thoại di động của một người nào đó,…Trong thực tế, khi xét các đối tượng và mối quan hệ giữa các đối tượng đó, chúng ta thường quan tâm đến yếu tố thời gian, nghĩa là quan hệ đó không thay đổi hay thay đổi theo thời gian. Đối với quan hệ 1-1, khi thiết lập hình thức quan hệ này giữa hai đối tượng nào đó, thì phải chắc chắn rằng, quan hệ này sẽ không bao giờ thay đổi theo thời gian, hoặc nếu có thay đổi thì chúng ta sẽ không cần quan tâm đến những thông tin ở trong quá khứ.

Chúng ta có ví dụ sau: Một công ty có nhiều nhân viên, và cũng có nhiều bàn làm việc (chỗ ngồi làm việc). Giả sử, mỗi bàn làm việc chỉ dành cho một người, và một người chỉ có một bàn làm việc. Khi đó, quan hệ giữa ba đối tượng: “Công ty”, “Bàn làm việc”, “Nhân viên” sẽ được mô tả như sau:

P1

Với mô hình trên, trong một khoảng thời gian xác định nào đó, ta có thể hoàn toàn yên tâm vì có thể không có sự thay đổi chỗ ngồi làm việc. Nhưng khi một nhân viên nào đó không còn làm việc ở công ty và dĩ nhiên anh ta sẽ không còn ngồi ở bàn làm việc trước đây của mình nữa. Trong trường hợp, một nhân viên nào đó được bố trí vào ngồi ở chiếc bàn làm việc này, chúng ta sẽ gặp phải giải quyết những vấn đề phát sinh vì quan hệ 1-1 mà chúng ta đã thiết lập: Xóa ngay thông tin nhân viên liên quan đến chiến bàn làm việc này.

Với phân tích trên, có thể nhận thấy rằng: để biết được những nhân viên nào đã và đang ngồi làm việc ở một chiếc bàn nào đó sẽ không thể đáp ứng được nếu quan hệ giữa hai đối tượng: “Nhân viên” và “Bàn làm việc” là quan hệ 1-1. Xét chung ra, khi sử dụng quan hệ 1-1 tính lịch sử của hai đối tượng ở hai đầu quan hệ sẽ không được quan tâm đến. Trong thực tế đây là một điều dường như không có vì hầu như các đối tượng và quan hệ đều được mô tả và quản lý trên hai trục không gian và thời gian. Tuy nhiên, trong lý thuyết và một số trường hợp riêng, quan hệ 1-1 vẫn được quan tâm và sử dụng.

Hình thức quan hệ 1-1 thường được sử dụng nhằm mục đích cắt giảm số lượng thuộc tính trong một đối tượng (cắt giảm số lượng cột trong một bảng), hoặc mô tả lớp con của một đối tượng. Thử tưởng tượng một bảng dữ liệu có hơn 64 cột, để dò xem một cột nào hoặc xem hết các cột sẽ thật sự gặp vấn đề ở mắt. Trong các hệ quản trị CSDL, số lượng cột trong một bảng cũng được giới hạn: SQL Server cho phép có tối đa 250 cột trong một bảng, …Có bao giờ số lượng thuộc tính của một đối tượng sẽ lớn 250 hay 255 không? Câu trả lời luôn luôn có: Ví dụ, để mô tả một sản phẩm chúng ta có thể dùng đến hàng trăm thông số kỹ thuật, màu sắc, kích thước, hình dáng,…Hay vẫn thường nhất là các thông tin dạng “sơ yếu lý lịch” của một cá nhân, con số thuộc tính của đối tượng này có thể không dừng ở hàng trăm nữa mà có thể lên đến hàng ngàn nếu muốn mô tả thật đầy đủ.

P2

Chúng ta thử xem qua cấu trúc bảng “Đánh giá sản phẩm”:

P3

Thuộc tính Param (các tiêu chí đánh giá) được mô tả dưới dạng lặp lại (repeating group), nghĩa là bảng “Đánh giá” (Appraise) đã không đạt dạng chuẩn 1. Mô hình hợp lý hơn được mô tả theo sơ đồ sau:

P4

Quan hệ một nhiều 1-n

Hầu hết các quan hệ giữa các đối tượng trong mô hình quan hệ đều được mô tả theo hình thức 1-n. Một thành phần của một đối tượng (một bộ dữ liệu trong một bảng) có thể được liên kết với không, một hoặc nhiều bộ dữ liệu trong các bảng khác. Phần lớn kết quả của việc chuẩn hóa CSDL là các đối tượng và quan hệ được thể hiện theo hình thức 1-n. Có một điều cần quan tâm và phải chú ý cẩn thận trong cách sử dụng đó là việc chỉ rõ tính tùy chọn trong quan hệ giữa hai đầu các đối tượng. Thông thường chúng ta đều cho phép tùy chọn ờ hai đầu quan hệ, nhưng trong một số trường hợp cụ thể, tính tùy chọn sẽ được ràng buộc bắt buộc. Chúng ta thử xét ví dụ theo mô hình sau.

P5

Quan hệ giữa “Khách hàng” và “Nhân viên tư vấn” là tùy chọn cho cả hai đầu quan hệ. Chúng ta có thể phát biểu quan hệ giữa hai đối tượng này như sau: “Một nhân viên tư vấn có thể không có hoặc có nhiều khách hàng. Một nhân viên tư vấn của một khách hàng nào đó, nếu đã được thiết lập quan hệ (nghĩa là đã gán, phân công nhân viên này tư vấn này phục vụ cho khách hàng của anh ta) thì nhân viên này phải có mặt trong tập hợp các nhân viên tư vấn”. Việc chỉ rõ tính tùy chọn cho một phía của quan hệ 1-n có một ngầm ý quan trọng trong việc thực hiện thiết kế và sử dụng hệ thống sau này.

Việc nhận ra đối tượng chính và đối tượng bổ sung của các bảng trong một quan hệ 1-n rất dễ. Đối tượng ở phía quan hệ “một” luôn là đối tượng chính, khi đó khóa ứng viên của đối tượng này sẽ được bổ sung vào đối tượng ở phía quan hệ “nhiều”, đối tượng ở phía quan hệ nhiều được gọi là đối tượng phụ (bổ sung). Khóa của đối tượng chính luôn là một thành phần có thể có mặt trong khóa ứng viên của đối tượng phụ, nhưng không bao giờ khóa của đối tượng phụ chỉ gồm một thành phần là khóa của đối tượng chính, nó phải là tập hợp của thành phần này với một hoặc nhiều thành phần (trường dữ liệu) khác.

Quan hệ nhiều nhiều n-n

Quan hệ n-n xuất hiện rất nhiều trong thực tế: Một đơn hàng có thể có nhiều loại sản phẩm, một sản loại sản phẩm lại có thể được yêu cầu trong nhiều đơn hàng. Một sinh viên tham gia nhiều khóa học, một khóa học thường có nhiều sinh viên,…Tuy nhiên, quan hệ n-n không thể thực hiện trong CSDL quan hệ. Chúng được mô tả dựa trên sự kết hợp của các quan hệ 1-n, các quan hệ 1-n này được xem là các trung gian liên kết và cụ thể hơn trong mô hình CSDL quan hệ đó là các bảng nối kết (junction table).

P6

Theo sơ đồ trên, từ một quan hệ n-n, chúng ta đã mô tả thành hai quan hệ 1-n. Khi đó Khóa chính của các bảng liên kết với nhau bằng quan hệ n-n sẽ trở thành khóa ngoại trong bảng nối kết. Các khóa ngoại này là các khóa ứng viên để tạo thành khóa chính cho bảng kết nối. Với bản thân bảng kết nối vừa được tạo ra, chúng ta có thể bổ sung bất cứ thuộc tính nào mang tính chất riêng rẽ mà không ảnh hưởng đến các bảng khác.

Quan hệ tự liên kết (Unary, Selfjoin)

Tất cả các hình thức quan hệ mà chúng ta vừa thảo luận là những quan hệ hai chiều (liên kết hai đối tượng khác nhau). Quan hệ “tự liên kết” (Unary) là quan hệ mà đối tượng tự kết hợp với chính nó. Một ví dụ cổ điển minh họa cho quan hệ này đó là quan hệ tự liên kết giữa Nhân viên và Người quản lý. Người quản lý, trong hầu hết các trường hợp vừa là một nhân viên vừa cũng là người quản lý của chính anh ta.

Quan hệ Unary được mô tả tương tự như quan hệ nhị phân nghĩa là ở hai đầu của quan hệ cũng là hai đối tượng, tuy nhiên khác với quan hệ nhị phân, hai đối tượng ở hai đầu quan hệ Unary là hai đối tượng giống nhau, về cấu trúc đó là một bản chính và một bản sao từ bản chính này. Vì vậy, nếu FieldA là Khóa chính của bảng thì chúng ta phải thêm FieldB vào bảng với FieldB là khóa ngoại được phát sinh từ FieldA và cùng kiểu dữ liệu với FieldA. Như mô hình sau:

P7

Quan hệ tự liên kết 1-n (1-n unary) được sử dụng trong việc mô tả các quan hệ thứ bậc, ví dụ quan hệ cấp trên – cấp dưới trong một tổ chức, quan hệ đơn vị cấp dưới trực thuộc đơn vị cấp trên,…Quan hệ tự liên kết n-n giống như bản sao nhị phân, phải được mô tả thông qua một bảng nối kết (junction table), Quan hệ tự liên kết cũng có thể mang tính tùy chọn ở phía quan hệ 1.

Quan hệ ba liên kết (Ternary)

Quan hệ Ternary thường được sử dụng trong các trường hợp mô tả: X thực hiện Y theo Z hoặc làm B để có C,…Cũng giống như quan hệ n-n, quan hệ ternary cũng không thể mô tả một cách trực tiếp trong mô hình dữ liệu quan hệ. Tuy nhiên, không giống như quan hệ n-n, quan hệ ternary không có một công thức riêng lẻ cho việc mô hình hóa chúng. Chúng ta thử tìm hiểu các quan hệ trong việc lập kế hoạch sản xuất một lô hàng trong nhà máy.

Kế hoạch sản xuất một lô hàng: Plans, Lots, Depaterments, PlanDetails

P8

Được biểu diễn thành các bảng: Plans (Kế hoạch), Lots (Lô hàng), Departments (Đơn vị sản xuất), PlanDetails (Chi tiết kế hoạch) và các quan hệ như sau:

P9

 

 

Mai Thế Hùng

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s