Giới thiệu về Mô hình Dữ liệu ER

Tổng quan đơn giản nhưng toàn diện về mô hình dữ liệu mối quan hệ thực thể

CácMô hình dữ liệu mối quan hệ-thực thể, còn được gọi làER, là một trong nhữngmô hình dữ liệubạn có thể sử dụng để lập luận về dữ liệu của mình.

Đặc biệt, nó là mộtmô hình dữ liệu khái niệm, vì nó không được liên kết với bất kỳ triển khai cụ thể nào. Đó là một nhiệm vụ còn lại đối với mô hình dữ liệu logic.

CácMô hình dữ liệu ERlà mức độ tổng quát, cao đến mức nó có thể được thực hiện bởi nhiều loại cơ sở dữ liệu hoàn toàn khác nhau.

Điều đó thật tuyệt vì bạn không nghĩ về chi tiết triển khai mà thay vào đó bạn chỉ nghĩ vềdữ liệu của bạn và cách nó được tổ chức. Và trong khi làm như vậy, bạn buộc phải phân tích vấn đề theo những cách mà trước đây bạn không nghĩ đến.

Tôi thấy sơ đồ ER rất tốt trong việc giúp bạn phân tích một tình huống có liên quan đến dữ liệu.

Mô hình ER cung cấp cho bạn các công cụ để biểu diễn, sử dụng ký hiệu đồ họa, tất cả dữ liệu bạn cần để lập mô hình, mối quan hệ giữa các loại dữ liệu khác nhau và thông tin liên quan đến nó.

Có 2 mục tạo nên Mô hình ER:

  • cácthực thể
  • cácquan hệ

Thực thể là các loại dữ liệu, như các mục hoặc con người, có các thuộc tính chung.

Quan hệ là quan hệ giữa các thực thể.

Hãy để tôi cho bạn một ví dụ, hãy nói về những cuốn sách và tác giả của chúng. Chúng ta có2 thực thể:

  • sách
  • tác giả

Một cuốn sách cụ thể là một ví dụ của thực thể cuốn sách.

Vì chúng tôi có 2 thực thể, chúng tôi có2 quan hệgiữa họ. Một là mối quan hệ giữa một cuốn sách và thực thể tác giả. Một là mối quan hệ giữa một tác giả duy nhất và thực thể sách. Nếu chúng ta nghĩ về nó, bạn có:

  • một cuốn sách có một tác giả
  • một tác giả có thể viết nhiều cuốn sách khác nhau

Ký hiệu trực quan cho các thực thể

Với ví dụ đơn giản này, chúng tôi có thể bắt đầu giới thiệu ký hiệu trực quan sẽ giúp chúng tôi tạo Mô hình Dữ liệu ER cho kịch bản của chúng tôi.

Lưu ý: Có nhiều cách khác nhau để vẽ biểu đồ ER. Tôi sẽ sử dụng cái đó,theo ý kiến của tôi, trực quan hơn và có ý nghĩa hơn.

Các thực thể được biểu diễn dưới dạng hình chữ nhật, với một số văn bản trong đó để xác định chúng:

Entities

Ký hiệu trực quan cho các quan hệ

Mối quan hệ giữa các thực thể được biểu diễn, ở dạng cơ bản nhất của nó, bằng cách sử dụng một đường nối hai quan hệ và một hình thoi với một số văn bản trong đó để xác định loại quan hệ:

Relation example

Lưu ý rằng tôi không tạo 2 quan hệ “sách có tác giả” và “tác giả đã viết sách”. Tôi đã tạo một mối quan hệ duy nhất là “tác giả” giữa Sách và Tác giả.

Cardinalities

Khi chúng ta có một mối quan hệ, bây giờ chúng ta phải chỉ ra các con số liên quan. Hiện tại, chúng tôi có nhiều câu hỏi:

  • Một cuốn sách có thể có bao nhiêu tác giả?
  • Một tác giả có thể viết nhiều sách không?
  • Một tác giả có cần viết ít nhất một cuốn sách để được gọi là tác giả không?
  • Một cuốn sách có thể được viết bởi nhiều tác giả?
  • Một cuốn sách có thể tồn tại mà không có ít nhất một tác giả?

Tất cả đó đều là những câu hỏi hay, và trong trường hợp này, tôi nghĩ câu trả lời là khá rõ ràng. Và khi câu trả lời không rõ ràng, bạn có thể suy nghĩ về vấn đề và thêm những ràng buộc của riêng mình.

Có nhiều cách khác nhau để biểu thị trực quan các bản số trên sơ đồ. Một số thích thay đổi hình dạng của đường khi nó liên kết với một thực thể.

Tôi thích những con số hơn, giúp mọi thứ rõ ràng hơn:

Cardinality example

Những con số trên có nghĩa là: một cuốn sách có thể được tác giả bởi 1 hoặc nhiều tác giả.ncó nghĩa là bất kỳ số phần tử nào.

Và một tác giả có thể đã viết từ 0 cuốn sách (có thể bây giờ đang viết một cuốn) đến vô số cuốn sách.

Đầu tiên được gọi làmối quan hệ không-nhiều. Thứ hai là mộtmối quan hệ một-nhiều.

Chúng tôi cũng có thể có:

  • mối quan hệ một-một
  • mối quan hệ nhiều-nhiều
  • mối quan hệ không-một

Thuộc tính

Mỗi thực thể có thể có một hoặc nhiều thuộc tính.

Giả sử chúng ta sẽ sử dụng mối quan hệ trên trong một hiệu sách. Mỗi tác giả có tên, tiểu sử, URL trang web.

Mỗi cuốn sách có tên sách, nhà xuất bản, năm xuất bản, ISBN. Nhà xuất bản cũng có thể là một thực thể, nếu chúng tôi muốn. Nhưng chúng ta cũng có thể định nghĩa nó như một thuộc tính của một cuốn sách.

Đây là cách chúng tôi có thể trình bày thông tin trên:

Attributes example

Thuộc tính định danh

Các thực thể phải được xác định bằng một khóa duy nhất. Thực thể sách có thể được xác định duy nhất bằng thuộc tính ISBN. Mỗi cuốn sách đều có một ISBN duy nhất (coi như chúng tôi không đại diện cho một bản sao của cuốn sách mà là một “tên sách”).

Chúng tôi xác định các thuộc tính khóa chính bằng cách cơ bản chúng:

Key

Mặt khác, tác giả không có số nhận dạng duy nhất tại thời điểm này. Hai tác giả có thể trùng tên.

Do đó, chúng tôi phải thêm một thuộc tính khóa duy nhất. Ví dụ mộtidthuộc tính:

id attribute

Các thuộc tính định danh có thể trải dài trên nhiều thuộc tính.

Ví dụ: ID hộ chiếu và quốc gia của tác giả nhận dạng duy nhất một người và có thể thay thếidthuộc tính chúng tôi đã thêm:

multiple attributes key

Chọn cái nào? Vấn đề là điều gì có ý nghĩa hơn trong ứng dụng của bạn. Nếu chúng tôi đang lập mô hình một hiệu sách, chúng tôi không thể mong đợi có quốc gia và id hộ chiếu của tất cả các tác giả cuốn sách. Do đó, chúng tôi sẽ sử dụng mộtidchúng tôi sẽ chọn và liên kết với từng tác giả.

Thuộc tính quan hệ

Các thuộc tính không phải là duy nhất cho các thực thể. Các mối quan hệ cũng có thể có các thuộc tính.

Hãy xem xét chúng ta cần mô hình một thư viện. Ngoài các thực thể sách và tác giả, chúng tôi hiện giới thiệuthực thể người đọc, một người mượn sách để đọc. Chúng tôi lấy tên và số thẻ id của nó khi họ mượn nó:

relation without attribute

Nhưng chúng tôi vẫn bỏ lỡ thông tin. Chúng ta cần biết khi nào người đó mượn sách và ngày họ trả sách, vì vậy chúng ta có thể lưu trữ thông tin về lịch sử của một cuốn sách cụ thể trong thư viện của chúng ta. Thông tin này không thuộc về sách hoặc thực thể người đọc; nó thuộc về mối quan hệ:

relation attributes

Thực thể yếu

Chúng tôi đã nói về khóa chính ở trên và cách trợ giúp xác định duy nhất một thực thể.

Một số thực thể phụ thuộc vào các thực thể khác để tồn tại và được gọi làthực thể yếu.

Giả sử chúng ta cần lập mô hình đơn đặt hàng cho một cửa hàng trực tuyến.

Đối với mỗi đơn đặt hàng, chúng tôi sẽ lưu trữ id đơn đặt hàng, bắt đầu từ 1 và tăng dần theo thời gian, ngày giờ đặt và thông tin về khách hàng, vì vậy chúng tôi biết ai sẽ lập hóa đơn và giao hàng ở đâu.

Sau đó, chúng tôi cũng cần biết những gì họ đã đặt hàng. Chúng tôi tạo một thực thể yếu "mặt hàng đã đặt hàng", đại diện cho từng mặt hàng trong giỏ hàng tại thời điểm thanh toán.

weak entity

Thực thể này sẽ lưu trữ giá mặt hàng tại thời điểm thanh toán (vì vậy khi chúng tôi thay đổi giá của các sản phẩm đang bán, nó sẽ không ảnh hưởng đến các đơn hàng đã đặt), số lượng mặt hàng đã được đặt và các tùy chọn đã chọn. Giả sử chúng tôi bán áo phông, do đó chúng tôi cần lưu trữ màu sắc và kích cỡ của áo phông đã đặt hàng.

Nó là một thực thể yếu vì một thực thể mặt hàng đã đặt hàng không thể tồn tại nếu không có một thực thể đặt hàng.

Quan hệ đệ quy

Một thực thể có thể có một quan hệ đệ quy với chính nó. Giả sử chúng ta có một thực thể người. Chúng ta có thể mô hình hóa mối quan hệ cha-con theo cách này:

recursive relation

Một người có thể có từ 0 đến n con, một người con có 2 bố mẹ (xét kịch bản đơn giản nhất).

Quan hệ ISA

ISA là viết tắt của IS-A, và đó là một cách để lập mô hình tổng quát hóa trong mô hình ER.

Chúng tôi sử dụng nó để nhóm các thực thể tương tự dưới một cái ô chung. Ví dụ, một tác giả và một độc giả, trong trường hợp của ví dụ về sách và thư viện, có thể được khái quát hóa bằng cách sử dụng một thực thể người.

Cả hai đều có tên, vì vậy chúng tôi sẽ trích xuất tên này cho thực thể cá nhân và chỉ quản lý các đặc thù của việc trở thành tác giả hoặc độc giả trong thực thể tương ứng:

isa relation

Quan hệ không nhị phân

Không phải mọi mối quan hệ đều là nhị phân. Hãy xem một kịch bản bài học.

Một bài học diễn ra trong một phòng của trường hôm nay lúc 10:00, với một giáo viên, nói chuyện với một lớp học về vật lý.

Vì vậy, một bài học được đưa ra vào một thời điểm cụ thể trong ngày, nó liên quan đến một chủ đề, một giáo viên, một lớp học và một căn phòng.

Chúng ta có thể mô hình hóa nó theo cách này:

non-binary relation


Các hướng dẫn khác về cơ sở dữ liệu: