25/05/2018, 00:16

Mô hình thực thể - Liên kết

Trong bài này chúng ta sẽ làm quen với mô hình thực thể - liên kết, gọi tắt là mô hình ER ( Entity-Relationship Model). Đó là một mô hình dữ liệu mức quan niệm phổ biến, tập trung vào các cấu trúc dữ liệu và các ràng buộc. Mô hình này thường được sử dụng để ...

Trong bài này chúng ta sẽ làm quen với mô hình thực thể - liên kết, gọi tắt là mô hình ER ( Entity-Relationship Model). Đó là một mô hình dữ liệu mức quan niệm phổ biến, tập trung vào các cấu trúc dữ liệu và các ràng buộc. Mô hình này thường được sử dụng để thiết kế các ứng dụng cơ sở dữ liệu và nhiều công cụ thiết kế cơ sở dữ liệu sử dụng các khái niệm của nó.

Quá trình thiết kế một cơ sở dữ liệu sử dụng mô hình quan niệm bậc cao được minh họa bằng hình dưới đây.

Bước đầu tiên là tập hợp các yêu cầu và phân tích. Trong bước này, người thiết kế cơ sở dữ liệu phỏng vấn những người sử dụng cơ sở dữ liệu để hiểu và làm tài liệu về các yêu cầu về dữ liệu của họ. Kết quả của bước này là một tập hợp ghi chép súc tích về các yêu cầu của những người sử dụng. Những yêu cầu sẽ được đặc tả càng đầy đủ và chi tiết càng tốt. Song song với việc đặc tả các yêu cầu dữ liệu, cần phải đặc tả các yêu cầu về chức năng của ứng dụng: đó là các thao tác do người sử dụng định nghĩa sẽ được áp dụng đối với cơ sở dữ liệu.

Mỗi khi tất cả các yêu cầu đã được thu thập và phân tích, bước tiếp theo là tạo ra lược đồ quan niệm cho cơ sở dữ liệu bằng cách sử dụng mô hình dữ liệu quan niệm mức cao. Bước này gọi là thiết kế quan niệm. Lược đồ quan niệm là một mô tả súc tích về các yêu cầu dữ liệu của những người sử dụng. Nó bao gồm các mô tả chi tiết của các kiểu thực thể, kiểu liên kết và các ràng buộc, chúng được biểu diễn bằng các khái niệm do các mô hình dữ liệu bậc cao cung cấp. Vì những khái niệm này không chứa các chi tiết cài đặt, chúng thường dễ hiểu và có thể sử dụng chúng để giao lưu với những người sử dụng. Lược đồ quan niệm mức cao cũng có thể được sử dụng như một dẫn chứng để đảm bảo rằng tất cả các đòi hỏi của người sử dụng đều thỏa mãn và các đòi hỏi này không chứa các mâu thuẫn. Giải pháp này cho phép những người thiết kế cơ sở dữ liệu tập trung vào việc đặc tả các tính chất của dữ liệu mà không cần quan tâm đến các chi tiết lưu trữ. Một thiết kế cơ sở dữ liệu quan niệm tốt sẽ làm dễ cho công việc của những người thiết kế cơ sở dữ liệu.

Trong quá trình (hoặc sau khi) thiết kế lược đồ quan niệm, chúng ta có thể sử dụng các phép toán cơ bản của mô hình dữ liệu để đặc tả các thao tác của người sử dụng được xác định trong khi phân tích chức năng. Điều đó cũng giúp khẳng định rằng lược đồ quan niệm thỏa mãn mọi yêu cầu chức năng được xác định. Nếu có một số yêu cầu chức năng không thể nêu ra được trong lược đồ ban đầu thì ở bước này có thể có sự sửa đổi lược đồ quan niệm cho phù hợp.

Bước tiếp theo trong việc thiết kế cơ sở dữ liệu là việc cài đặt một cơ sở dữ liệu bằng cách sử dụng một hệ quản trị cơ sở dữ liệu có sẵn. Hầu hết các hệ quản trị cơ sở dữ liệu sử dụng một mô hình dữ liệu cài đặt (thể hiện), chẳng hạn như mô hình quan hệ hoặc đối tượng, vì vậy lược đồ quan niệm được chuyển từ mô hình dữ liệu bậc cao thành mô hình dữ liệu cài đặt. Bước này gọi là thiết kế logic hoặc là ánh xạ mô hình dữ liệu. Kết quả của bước này là một lược đồ cơ sở dữ liệu dưới dạng một mô hình dữ liệu cài đặt của hệ quản trị cơ sở dữ liệu.

Bước cuối cùng trong thiết kế cơ sở dữ liệu là thiết kế vật lý. Trong bước này ta phải chỉ ra các cấu trúc bên trong, các đường dẫn truy cập, tổ chức tệp cho các tệp cơ sở dữ liệu. Song song với các hoạt động đó, các chương trình ứng dụng cũng được thiết kế và cài đặt như là các giao tác (transaction) cơ sở dữ liệu tương ứng với các đặc tả giao tác mức cao.

Sơ đồ mô tả các bước chính của việc thiết kế

Thực thể và thuộc tính

Đối tượng được trình bày trong mô hình ER là thực thể. Thực thể là một “vật” trong thế giới thực, có sự tồn tại độc lập. Một thực thể có thể là cụ thể, tức là chúng ta có thể cảm nhận được bằng các giác quan, hoặc có thể là trừu tượng, tức là cái mà chúng ta không cảm nhận được bằng các giác quan nhưng có thể nhận biết được bằng nhận thức. Một cái ô tô, một nhân viên,… là những thực thể cụ thể. Một đơn vị công tác, một trường học… là những thực thể trừu tượng.

Mỗi một thực thể có các thuộc tính, đó là các đặc trưng cụ thể mô tả thực thể đó. Ví dụ, một thực thể Nhânviên được mô tả bằng Họtên, Tuổi, Địachỉ, Lương… của nhân viên đó. Một thực thể cụ thể sẽ có một giá trị cho mỗi thuộc tính của nó. Ví dụ, nhân viên nv1 có các giá trị cho các thuộc tính Họtên, Tuổi, Địachỉ, Lương của nó là “ Lê Vân”, 32, “Hà nội”, 500000. Các giá trị thuộc tính mô tả mỗi thực thể sẽ trở thành một phần chính của các dữ liệu sẽ được lưu giữ trong cơ sở dữ liệu. Trong mô hình ER có mặt nhiều kiểu thuộc tính: thuộc tính đơn, thuộc tính phức hợp, thuộc tính đơn trị, thuộc tính đa trị, thuộc tính được lưu trữ, thuộc tính suy diễn được, thuộc tính có giá trị không xác định, thuộc tính phức tạp.

Thuộc tính đơn là thuộc tính không thể phân chia ra được thành các thành phần nhỏ hơn. Ví dụ, thuộc tính Tuổi của một nhân viên là một thuộc tính đơn. Thuộc tính phức hợp là thuộc tính có thể phân chia được thành các thành phần nhỏ hơn, biểu diễn các thuộc tính cơ bản hơn với các ý nghĩa độc lập. Ví dụ, thuộc tính Họtên của thực thể nhân viên có thể phân chia thành các tính Họđệm và Tên. Giá trị của một thuộc tính là sự kết hợp kết hợp các giá trị của các thuộc tính thành phần tạo nên nó. Việc phân chia một thuộc tính phức hợp thành các thuộc tính đơn tùy thuộc vào hoàn cảnh cụ thể.

Những thuộc tính có giá trị duy nhất cho một thực thể cụ thể gọi là các thuộc tính đơn trị. Ví dụ, Họtên là một thuộc tính đơn trị của thực thể nhân viên, mỗi nhân viên có một họ tên duy nhất. Trong một số trường hợp, một thuộc tính có thể có một tập giá trị cho cùng một thực thể. Những thuộc tính như vậy gọi là thuộc tính đa trị. Ví dụ, thuộc tính Bằngcấp của một người. Một người có thể không có bằng cấp nào, người khác có thể có một bằng, người khác nữa có thể có nhiều bằng. Như vậy, các người khác nhau có thể có một số giá trị khác nhau cho thuộc tính Bằngcấp. Thuộc tính Bằngcấp là một thuộc tính đa trị.

Thuộc tính được lưu trữ là các thuộc tính mà giá trị của nó được nhập vào khi cài đặt cơ sở dữ liệu. Trong một số trường hợp, hai hay nhiều thuộc tính có giá trị liên quan đến nhau. Ví dụ, thuộc tính Tuổi và thuộc tính Ngàysinh của một người. Với một người cụ thể, ta có thể tính tuổi của anh ta bằng cách lấy năm hiện tại trừ đi năm của Ngàysinh. Thuộc tính mà giá trị của nó có thể tính được thông qua giá trị của các thuộc tính khác gọi là thuộc tính suy diễn được.

Các giá trị không xác định (null values): Trong một số trường hợp, một thực thể cụ thể có thể không có các giá trị áp dụng được cho một thuộc tính. Ví dụ, thuộc tính Sốđiệnthoại của thực thể nhân viên sẽ không có giá trị đối với các nhân viên không có số điện thoại. Trong trường hợp như vậy, ta phải tạo ra một giá trị đặc biệt gọi là giá trị không xác định (null). Giá trị không xác định được tạo ra khi một thuộc tính có giá trị không áp dụng được hoặc khi không biết.

Các thuộc tính phức tạp: Là sự kết hợp của các thuộc tính phức hợp và đa trị.

Kiểu thực thể, tập thực thể, khóa và tập giá trị

Các kiểu thực thể và các tập thực thể: Một cơ sở dữ liệu thường chứa những nhóm thực thể như nhau. Ví dụ, một công ty thuê hàng trăm nhân viên và lưu giữ những thông tin tương tự liên quan đến mỗi nhân viên. Các thực thể nhân viên này chia sẻ các thuộc tính giống nhau nhưng mỗi thực thể có các giá trị riêng cho các thuộc tính đó. Một kiểu thực thể là một tập hợp các thực thể có các thuộc tính như nhau. Một kiểu thực thể trong cơ sở dữ liệu được mô tả bằng tên và các thuộc tính. Vídụ: NHÂNVIÊN (Họtên, Tuổi, Lương), CÔNGTY (Tên, Địađiểm, Giámđốc). Một tập hợp các thực thể của một kiểu thực thể cụ thể trong cơ sở dữ liệu tại một thời điểm được gọi là một tập thực thể, nó thường được tham chiếu đến bằng cách sử dụng tên của kiểu thực thể. Ví dụ, NHÂNVIÊN vừa dùng để chỉ một kiểu thực thể, vừa để chỉ tập hợp hiện tại của tất cả các thực thể nhân viên trong cơ sở dữ liệu. Hình 2-2 minh họa các kiểu thực thể NHÂNVIÊN, CÔNGTY và các tập thực thể tương ứng.

Một kiểu thực thể được biểu diễn trong lược đồ ER như là một hộp hình chữ nhật có chứa tên kiểu thực thể. Các thuộc tính được đặt trong các hình ô van và được nối với các kiểu thực thể bằng các đường thẳng. Các thuộc tính phức hợp cũng được nối với các thuộc tính thành phần của nó bằng đường thẳng. Các thuộc tính đa trị được hiển thị trong các hình ô van đúp (hình 2-3).

Một kiểu thực thể mô tả một lược đồ (hoặc một mục đích) cho một tập các thực thể chia sẻ cùng một cấu trúc. Tập hợp các thực thể của một kiểu thực thể cụ thể được nhóm vào một tập thực thể và được gọi là một thể hiện của một kiểu thực thể.

Kiểu thực thể và tập thực thể

Thuộc tính khóa của một kiểu thực thể: Một ràng buộc quan trọng trên các thực thể của một kiểu thực thể là khóa. Một kiểu thực thể thường có một thuộc tính mà các giá trị của nó là khác nhau đối với mỗi thực thể tiêng biệt trong một tập thực thể. Thuộc tính như vậy gọi là thuộc tính khóa và các giá trị của nó có thể dung để xác định từng thực thể một cách duy nhất. Ví dụ, thuộc tính Tên của kiểu thực thể CÔNGTY là khóa của kiểu thực thể đó vì mỗi thực thể công ty có một tên duy nhất. Đôi khi, nhiều thuộc tính kết hợp với nhau tạo thành một khóa, nghĩa là tổ hợp các giá trị của các thuộc tính này phải khác nhau đối với mỗi thực thể. Trong trường hợp như vậy ta có một thuộc tính khóa phức hợp. Chú ý rằng khóa phức hợp phải tối thiểu, nghĩa là tất cả các thuộc tính thành phần phải có mặt trong thuộc tính phức hợp để thỏa mãn tính chất duy nhất. Trong biểu đồ đồ họa của mô hình ER, thuộc tính khóa được biểu diễn bằng cách gạch ngang dưới tên của nó (hình 2-3).

Khi chỉ ra rằng một thuộc tính là khóa của một kiểu thực thể nghĩa là tính chất duy nhất nêu trên phải được thỏa mãn đối với đối với mỗi mở rộng của kiểu thực thể. Như vậy, ràng buộc khóa cấm hai thực thể bất kỳ có giá trị cho thuộc tính khóa như nhau tại cùng một thời điểm. Đó là một ràng buộc trên tất cả các thể hiện của thực thể. Ràng buộc khóa cũng như các ràng buộc sẽ được giới thiệu về sau được lấy ra từ các ràng buộc của “thế giới nhỏ” của cơ sở dữ liệu.

Một kiểu thực thể có thể có nhiều hơn một thuộc tính khóa. Ví dụ, nếu một công ty có một mã số duy nhất và một tên duy nhất thì các thuộc tính Mãsốcông ty và Têncôngty đều là các thuộc tính khóa. Một kiểu thực thể cũng có thể không có khóa. Một thực thể không có khóa được gọi là kiểu thực thể yếu.

Biểu diễn kiểu thực thể và các thuộc tính

Miền giá trị của các thuộc tính: Mỗi thuộc tính đơn của một kiểu thực thể được kết hợp với một miền giá trị. Đó là một tập các giá trị có thể gán cho thuộc tính này đối với mỗi thực thể riêng biệt. Các miền giá trị không hiển thị trong các sơ đồ ER.

Một cách toán học, một thuộc tính A của kiểu thực thể E có tập giá trị V có thể được định nghĩa như là một hàm từ E vào tập hợp lực lượng P(V) của V: A: E → P(V).

Ta ký hiệu giá trị của thuộc tính A đối với thực thể e là A(e). Định nghĩa ở trên đúng cho các thuộc tính đơn trị, đa trị và thuộc tính không xác định. Một giá trị không xác định được biểu diễn bằng một tập rỗng. Với các thuộc tính đơn trị, A(e) là một giá trị đơn cho thực thể e. Các thuộc tính đa trị không có các hạn chế trên A(e). Với một thuộc tính phức hợp A, tập giá trị V là tích Đề các của P(V1)x P(V2)x….xP(Vn), trong đó V1, V2, …, Vn là tập các giá trị cho các thành phần đơn của A.

Kiểu liên kết, tập liên kết và các thể hiện

Một kiểu liên kết R giữa n kiểu thực thể E1, E2, …, En xác định một tập liên kết giữa các thực thể của các kiểu đó. Cũng như các kiểu thực thể và tập thực thể, một kiểu liên kết và tập liên kết tương ứng với nó cũng có tên chung là R. Một cách toán học, tập liên kết R là một tập hợp các thể hiện liên kết ri , i = 1,2,… trong đó mỗi ri liên kết n thực thể riêng biệt e1, e2,…, en và mỗi một thực thể ej trong ri là một thành phần của kiểu thực thể Ej , 1≤ j ≤ n. Như vậy, một kiểu liên kết R là một quan hệ toán học trên E1, E2, …, En hoặc có thể định nghĩa như là một tập con của tích Đề các E1 x E2 x …x En. Mỗi kiểu thực thể E1,E2, …, En được gọi là tham gia vào kiểu liên kết R, và tương tự, mỗi thực thể riêng biệt e1, e2, …, en được gọi là tham gia vào thể hiện liên kết ri = ( e1,e2,…,en).

Một cách không hình thức, mỗi thể hiện liên kết ri trong R là một sự kết hợp của các thực thể, mỗi thực thể thuộc về một kiểu thực thể tham gia vào liên kết. Mỗi liên kết ri như vậy diễn đạt một sự kiện rằng các thực thể tham gia trong ri có mối quan hệ với nhau theo một cách nào đó ở trong thế giới thực. Ví dụ, trong thực tế, các nhân viên làm việc cho các đơn vị, như vậy, có một kiểu liên kết liên kết làm việc cho, liên kết giữa kiểu thực thể NHÂNVIÊN và kiểu thực thể ĐƠNVỊ.

Trong sơ đồ ER, kiểu liên kết được biểu diễn bằng một hình thoi nối trực tiếp với các hình chữ nhật biểu diễn các kiểu thực thể tham gia vào liên kết. Hình 2-4 minh họa kiểu liên kết và thể hiện liên kết.

a) Kiểu liên kết

b) Thể hiện liên kết

Kiểu liên kết và thể hiện liên kết

Cấp liên kết, tên vai trò và kiểu liên kết đệ quy

Cấp của một kiểu liên kết là số các kiểu thực thể tham gia vào kiểu liên kết đó. Một kiểu liên kết có thể có cấp 1, cấp 2, cấp 3,…. Ví dụ, kiểu liên kết <làm việc cho> giữa kiểu thực thể NHÂNVIÊN và kiểu thực thể ĐƠNVỊ là một kiểu liên kết cấp 2. Kiểu liên kết <biết trước> giữa kiểu thực thể MÔNHỌC với chính nó là một kiểu liên kết cấp 1.

Đôi khi chúng ta có thể coi một kiểu liên kết như một thuộc tính của một kiểu thực thể. Ví dụ, nếu kiểu thực thể NHÂNVIÊN có thuộc tính Đơnvị để chỉ ra tên đơn vị mà nhân viên làm việc cho, thì thuộc tính Đơnvị biểu thị một kiểu liên kết. Nói cách khác, một thuộc tính của một kiểu thực thể hoặc có chức năng biểu thị một đặc trưng của kiểu thực thể, hoặc có chức năng biểu thị một kiểu liên kết giữa kiểu thực thể đó với các kiểu thực thể khác. Các thuộc tính biểu thị một kiểu liên kết có thể đơn trị hoặc đa trị tuỳ theo bản chất của mối liên kết.

Các tên vai trò và các kiểu liên kết đệ quy: Mỗi một kiểu thực thể tham gia vào một kiểu liên kết có một vai trò cụ thể trong liên kết. Tên vai trò dùng để chỉ rõ vai trò của các thực thể của kiểu thực thể tham gia liên kết, nó giúp đỡ việc giải thích ý nghĩa của liên kết. Ví dụ, trong kiểu liên kết NHÂNVIÊN <làm việc cho > ĐƠNVỊ, vai trò của các thực thể của kiểu thực thể NHÂNVIÊN là nhân viên hoặc công nhân còn vai trò của các thực thể của kiểu thực thể ĐƠNVỊ là đơn vị hoặc nơi thuê công nhân. Nếu các kiểu thực thể tham gia vào kiểu liên kết là khác nhau thì tên vai trò là hoàn toàn không cần thiết bởi vì có thể sử dụng tên các kiểu thực thể làm tên vai trò. Tuy nhiên, trong một số trường hợp, một kiểu thực thể có thể tham gia vào một kiểu liên kết với các vai trò khác nhau. Trong những trường hợp như vậy, tên vai trò trở nên cần thiết để phân biệt ý nghĩa của mỗi sự tham gia. Các kiểu liên kết như vậy gọi là kiểu liên kết đệ quy. Ví dụ, trong số các nhân viên làm việc cho một đơn vị, có các nhân viên được phân công giám sát các nhân viên khác. Như vậy sẽ có một kiểu liên kết giữa các thực thể của kiểu thực thể NHÂNVIÊN: NHÂNVIÊN <giám sát> NHÂNVIÊN. Kiểu thực thể NHÂNVIÊN tham gia hai lần vào kiểu liên kết <giám sát>, một lần với vai trò người giám sát, một lần với vai trò người bị giám sát.

Các ràng buộc trên các kiểu liên kết

Các kiểu liên kết thường có một số ràng buộc để hạn chế số các tổ hợp có thể của các thực thể có thể tham gia trong tập hợp liên kết tương ứng. Các ràng buộc này được xác định từ tình trạng của thế giới thực mà kiểu liên kết biểu diễn. Ví dụ, nếu công ty có quy chế là một nhân viên chỉ làm việc cho một đơn vị thì chúng ta phải mô tả ràng buộc này trong lược đồ. Có hai loại ràng buộc chính: tỷ số lực lượng và sự tham gia.

Tỷ số lực lượng: Tỷ số lực lượng cho một kiểu liên kết chỉ ra số các thể hiện liên kết mà một thực thể có thể tham gia. Với các kiểu liên kết cấp 2, có thể có các tỷ số lực lượng 1:1, 1:N, và M:N. Một kiểu liên kết có tỷ số lực lượng 1:1 giữa hai kiểu thực thể A và B có nghĩa là trong kiểu liên kết đó, một thực thể của kiểu A chỉ liên kết với một thực thể của kiểu B và ngược lại, một thực thể của kiểu B chỉ liên kết với một thực thể của kiểu A. Tỷ số lực lượng 1:N có nghĩa là một thực thể của kiểu A có thể liên kết với nhiều thực thể của kiểu B nhưng một thực thể của kiểu B chỉ liên kết với một thực thể của kiểu A. Trong kiểu liên kết có tỷ số lực lượng M:N, mỗi thực thể của kiểu A có thể liên kết với nhiều thực thể của kiểu B và ngược lại, mỗi thực thể của kiểu B có thể liên kết với nhiều thực thể của kiểu A. Trong biểu diễn của lược đồ ER, các tỷ số lực lượng được biểu diễn bằng cách ghi 1, N, M trên các hình thoi biểu diễn kiểu liên kết .

Tỷ số lực lượng của các kiểu liên kết

Các ràng buộc tham gia và sự phụ thuộc tồn tại: Ràng buộc tham gia chỉ ra rằng có phải sự tồn tại của một kiểu thực thể phụ thuộc vào một kiểu thực thể khác thông qua một kiểu liên kết hay không. Có hai kiểu ràng buộc tham gia: ràng buộc tham gia toàn bộ và ràng buộc tham gia bộ phận. Tham gia toàn bộ nghĩa là tất cả các thực thể của kiểu thực thể phải tham gia vào kiểu liên kết còn tham gia bộ phận nghĩa là chỉ một bộ phận các thực thể của kiểu thực thể tham gia vào kiểu liên kết. Ví dụ, xét kiểu liên kết NHÂNVIÊN <quản lý> ĐƠNVỊ. Trong thực tế, mỗi đơn vị phải có một người quản lý (là một nhân viên) nhưng không phải nhân viên nào cũng quản lý một đơn vị. Như vậy, sự tham gia của các thực thể đơn vị vào kiểu liên kết là toàn bộ còn sự tham gia của các thực thể nhân viên vào kiểu liên kết là bộ phận. Sự tham gia toàn bộ còn được gọi là sự phụ thuộc tồn tại. Trong lược đồ ER, sự tham gia toàn bộ được biểu thị bằng đường nối đôi từ kiểu thực thể đến kiểu liên kết.

Thuộc tính của các kiểu liên kết

Các kiểu liên kết cũng có thể có các thuộc tính, giống như các thuộc tính của các kiểu thực thể. Ví dụ, kiểu liên kết <làm việc trên> giữa các kiểu thực thể NHÂNVIÊN và DỰÁN có thể có thuộc tính Sốgiờ để ghi lại số giờ làm việc của một nhân viên trên một dự án. Các thuộc tính của kiểu liên kết cũng được biểu diễn bằng một hình ô van và được nối với kiểu liên kết. Ví dụ:

Các kiểu thực thể yếu

Các kiểu thực thể không có các thuộc tính khoá cho chính mình được gọi là các kiểu thực thể yếu. Ngược lại, các kiểu thực thể thông thường (nghĩa là có thuộc tính khoá) được gọi là kiểu thực thể mạnh. Các thực thể của một kiểu thực thể yếu được xác định bằng cách liên kết với các thực thể cụ thể của một kiểu thực thể khác phối hợp với một số giá trị thuộc tính của nó. Ta gọi kiểu thực thể khác đó là kiểu thực thể xác định hoặc kiểu thực thể chủ. Ta gọi kiểu liên kết giữa kiểu thực thể yếu và kiểu thực thể chủ của nó là liên kết xác định của thực thể yếu. Một kiểu thực thể yếu luôn luôn có một ràng buộc tham gia toàn bộ (tồn tại phụ thuộc) vào liên kết xác định của nó bởi vì một kiểu thực thể yếu không thể được xác định mà không có kiểu thực thể chủ. Ví dụ, trong một công ty, con của nhân viên và nhân viên có thể hưởng chế độ bảo hiểm theo nhân viên. Như vậy, sẽ có một kiểu liên kết NHÂNVIÊN <có> < CON>. Đây là một kiểu liên kết có tỷ số lực lượng 1:N. Các thuộc tính của kiểu thực thể CON là Họtên, Ngaysinh, Giớitính. Hai người con của hai nhân viên khác nhau có thể có cùng giá trị cho các thuộc tính nhưng nó là hai thực thể khác nhau. Chúng chỉ được xác định như hai thực thể khác nhau sau khi xác định một thực thể nhân viên cụ thể có liên quan đến từng người phụ thuộc. Mỗi thực thể của kiểu thực thể NHÂNVIÊN được gọi là chủ của các thực thể của kiểu thực thể CON liên kết với nó.

Thông thường, các kiểu thực thể yếu có một khoá bộ phận, đó là một tập hợp các thuộc tính có thể xác định một cách duy nhất các thực thể yếu liên kết với cùng một thực thể chủ. Ví dụ, nếu hai người con của một nhân viên không bao giờ có tên giống nhau thì thuộc tính Họtên của kiểu thực thể CON là một khoá bộ phận. Trong trường hợp xấu nhất, thuộc tính phức hợp gồm tất cả các thuộc tính của thực thể yếu sẽ là một khoá bộ phận.

Trong sơ đồ ER, kiểu thực thể yếu và kiểu liên kết xác định của nó được biểu diễn bằng một hình chữ nhật và một hình thoi nét đôi. Ví dụ:

Trong phần này, chúng ta xét ví dụ về việc xây dựng mô hình ER cho cơ sở dữ liệu công ty. Như ở trong phần I đã nói, bước đầu tiên trong việc thiết kế một cơ sở dữ liệu là tập hợp và phân tích các yêu cầu. Kết quả của bước này là một tập hợp các ghi chép súc tích về các yêu cầu người sử dụng cũng như tình trạng của nơi ta cần xây dựng cơ sở dữ liệu.

Giả sử rằng sau khi tập hợp các yêu cầu và phân tích, hoạt động của công ty được ghi chép lại như sau:

1. Công ty được tổ chức thành các đơn vị. Mỗi đơn vị có một tên duy nhất, một mã số duy nhất, một nhân viên cụ thể quản lý đơn vị. Việc nhân viên quản lý đơn vị được ghi lại bằng ngày nhân viên đó bắt đầu quản lý. Một đơn vị có thể có nhiều địa điểm.

2. Mỗi đơn vị kiểm soát một số dự án. Một dự án có một tên duy nhất, một mã số duy nhất và một địa điểm.

3. Với mỗi nhân viên chúng ta lưu giữ lại Họ tên, Mã số, địa chỉ, lương, giới tính, ngày sinh. Một nhân viên chỉ làm việc cho một đơn vị nhưng có thể làm việc trên nhiều dự án do nhiều đơn vị kiểm soát. Chúng ta lưu giữ lại số giờ làm việc của mỗi nhân viên trên một dự án. Mỗi nhân viên có thể có một người giám sát trực tiếp, người đó cũng là một nhân viên.

4. Mỗi nhân viên có những người con. Những người này được hưởng bảo hiểm theo nhân viên. Với mỗi người con của nhân viên, chúng ta lưu giữ Họ tên, giới tính, ngày sinh .

Xác định các kiểu thực thể, các thuộc tính và các kiểu liên kết

Theo các ghi chép ở trên, chúng ta có thể xác định các kiểu thực thể và các kiểu liên kết như sau:

1. CÔNGTY không phải là một kiểu thực thể vì ở đây ta có một công ty duy nhất.

2. ĐƠNVỊ là một kiểu thực thể với các thuộc tính Tên, Mãsố, Ngườiquảnlý, Ngàybắtđầu và Địađiểm. Các thuộc tính Tên, Mãsố, Địađiểm là các thuộc tính mô tả đơn vị, các thuộc tính Ngườiquảnlý, Ngàybắtđầu là các thuộc tính biểu thị một kiểu liên kết (với kiểu thực thể NHÂNVIÊN). Các thuộc tính đều là đơn và đơn trị, trừ thuộc tính Địađiểm, nó là một thuộc tính đa trị (một đơn vị có nhiều địa điểm). Các thuộc tính Tên, Mãsố là các thuộc tính khóa (vì mỗi đơn vị có một tên và một mã số duy nhất).

3. Kiểu thực thể DỰÁN có các thuộc tính Tên, Mãsố, Địađiểm, Đơnvịkiểmsoát. Các thuộc tính Tên, Mãsố, Địa điểm là các thuộc tính mô tả DỰÁN, thuộc tính Đơnvịkiểmsoát biểu thị kiểu liên kết với kiểu thực thể ĐƠNVỊ (một đơn vị kiểm soát một số dự án). Các thuộc tính Tên, Mãsố là các thuộc tính khóa.

4. Kiểu thực NHÂNVIÊN với các thuộc tính Họtên, Mãsố, Giới tính, Ngàysinh, Lương, Đơnvị, Ngườigiámsát. Thuộc tính Họtên là một thuộc tính phức hợp (gồm Họđệm, Tên). Các thuộc tính Đơnvị, Ngườigiámsát mô tả các kiểu liên kết giữa kiểu thực thể NHÂNVIÊN và các kiểu thực thể ĐƠNVỊ và NHÂNVIÊN tương ứng. Thuộc tính Mãsố là thuộc tính khóa.

5. Kiểu thực thể CON với các thuộc tính Nhânviên, Họtên, Giới tính, Ngàysinh. Thuộc tính Nhânviên mô tả kiểu liên kết với kiểu thực thể NHÂNVIÊN.

6. Kiểu liên kết ĐƠNVỊ <kiểm soát> DỰÁN là kiểu liên kết có tỷ số lực lượng 1:N (một đơn vị kiểm soát một số dự án, một dự án do một đơn vị quản lý). Sự tham gia của DỰÁN vào kiểu liên kết là toàn bộ (bởi vì dự án nào cũng được một đơn vị kiểm soát). Nếu đơn vị nào cũng có dự án thì việc tham gia của ĐƠNVỊ vào kiểu liên kết là toàn bộ, ngược lại sự tham gia là bộ phận.

7. Kiểu liên kết NHÂNVIÊN <làm việc cho> ĐƠNVỊ có tỷ số lực lượng N:1 (mỗi nhân viên làm việc cho một đơn vị nhưng mỗi đơn vị có nhiều nhân viên là việc). Sự tham gia của hai kiểu thực thể vào liên kết là toàn bộ.

8. Kiểu liên kết NHÂNVIÊN <quảnlý> ĐƠNVỊ có tỷ số lực lượng 1:1 (một nhân viên quản lý một đơn vị và một đơn vị có một nhân viên quản lý). Sự tham gia của kiểu thể NHÂNVIÊN vào kiểu liên kết là bộ phận (bởi vì không phải nhân viên nào cũng quản lý đơn vị), ngược lại, sự tham gia của kiểu thực thể ĐƠNVỊ vào kiểu liên kết là toàn bộ (bởi vì đơn vị nào cũng phải có người quản lý).

9. Kiểu liên kết NHÂNVIÊN <giám sát > NHÂNVIÊN có tỷ số lực lượng 1:N (một nhân viên có thể giám sát nhiều nhân viên khác). Sự tham gia của của kiểu thực thể NHÂNVIÊN (ở cả hai phía) là bộ phận (bởi vì không phải nhân viên nào cũng giám sát nhân viên khác, và không phải nhân viên nào cũng bị giám sát). Kiểu thực thể NHÂNVIÊN ở đây đóng hai vai trò khác nhau: vai trò người giám sát và vai trò người bị giám sát.

10. Kiểu liên kết NHÂNVIÊN <làm việc trên> DỰÁN là có tỷ số lực lượng là M:N (một nhân viên có thể làm việc trên nhiều dự án khác nhau và mỗi dự án có nhiều nhân viên làm việc). Sự tham gia của kiểu thực thể NHÂNVIÊN là bộ phận (bởi vì không phải tất cả nhân viên đều làm việc trên dự án) ngược lại, sự tham gia của kiểu thực thể DỰÁN là toàn bộ (bởi vì dự án nào cũng phải có nhân viên làm việc). Kiểu liên kết này có một thuộc tính là Sốgiờ, ghi lại số giờ làm việc của một nhân viên trên một dự án.

11. Kiểu liên kết NHÂNVIÊN <có> CON biểu thị mối liên hệ giữa kiểu thực thể NHÂNVIÊN và kiểu thực thể CON (một nhân viên có thể có những người con). Kiểu liên kết này có tỷ số lực lượng 1:N (một nhân viên có thể có nhiều người con nhưng mỗi con là con của chỉ một nhân viên). Sự tham gia của kiểu thực thể NHÂNVIÊN là bộ phận (không phải nhân viên nào cũng có con), ngược lại, sự tham gia của kiểu thực thể CON là toàn bộ (người con nào cũng phải là con của một nhân viên). Ngoài ra, kiểu thực thể CON là một kiểu thực thể yếu.

Sau khi phân tích như trên, để vẽ lược đồ ER ta loại bỏ các thuộc tính được xem như các kiểu liên kết ra khỏi các kiểu thực thể. Đó là các thuộc tính Ngườiquảnlý và Ngàybắtđầu của kiểu thực thể ĐƠNVỊ, thuộc tính Đơnvịkiểmsoát của kiểu thực thể DỰÁN, thuộc tính Đơnvị và thuộc tính Ngườigiámsát của kiểu thực thể NHÂNVIÊN, thuộc tính Nhânviên của kiểu thực thể PHỤTHUỘC .

Kết quả, chúng ta có lược đồ ER như sau:

Lược đồ ER “CÔNGTY”

0