- vừa được xem lúc

Mô hình quan hệ - thực thể (Entity – Relationship Model)

0 0 131

Người đăng: Tran Viet Ha

Theo Viblo Asia

Mô hình quan hệ thực thể (Entity Relationship model - E-R) được CHEN giới thiệu vào năm 1976 là một mô hình được sử dụng rộng rãi trong các bản thiết kế cơ sở dữ liệu ở mức khái niệm, được xây dựng dựa trên việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối quan hệ giữa các đối tượng này. So với mô hình mạng thì mô hình quan hệ thực thể có nhiều ưu điểm hơn và nó thể hiện rõ hơn các thành phần trong thế giới thực. Nếu như mô hình mạng chỉ biểu diễn các đối tượng chính chứ không mô tả được các đặc điểm trong đối tượng đó thì trong mô hình quan hệ thực thể lại khắc phục được những điểm yếu này. Chính vì vậy việc lựa chọn mô hình này luôn là quyết định của các nhà phân tích thiết kế cơ sở dữ liệu

1 - Vai trò của mô hình E-R trong quá trình thiết kế cơ sở dữ liệu:

Mục tiêu của mô hình E-R trong quá trình thiết kế cơ sở dữ liệu đó là phân tích dữ liệu, xác định các đơn vị thông tin cơ bản cần thiết của tổ chức, mô tả cấu trúc và mối liên hệ giữa chúng

E-R là mô hình trung gian để chuyển những yêu cầu quản lý dữ liệu trong thế giới thực thành mô hình cơ sở dữ liệu quan hệ

2 - Các thành phần cơ bản của mô hình E-R

a - Thực thể và tập thực thể

Thực thể là một đối tượng trong thế giới thực.

Một nhóm bao gồm các thực thể tương tự nhau tạo thành một tập thực thể

Việc lựa chọn các tập thực thể là một bước vô cùng quan trọng trong việc xây dựng sơ đồ về mối quan hệ thực thể

Ví dụ: “Quản lý các dự án của công ty”

  • Một nhân viên là một thực thể
  • Tập hợp các nhân viên là tập thực thể
  • Một dự án là một thực thể
  • Tập hợp các dự án là tập thực thể
  • Một phòng ban là một thực thể
  • Tập hợp các phòng ban là tập thực thể

b - Thuộc tính:

Mỗi tập thực thể có một tập các tính chất đặc trưng, mỗi tính chất đặc trưng này gọi là thuộc tính của tập thực thể. Ứng với mỗi thuộc tính có một tập các giá trị cho thuộc tính đó gọi là miền giá trị.

Miền giá trị của thuộc tính gồm các loại giá trị như sau:

  • Kiểu chuỗi (string)
  • Kiểu số nguyên (integer)
  • Kiểu số thực (real)
  • ...

Ví dụ tập thực thể NHANVIEN có các thuộc tính

  • Họ tên (hoten: string[20])
  • Ngày sinh (ns: date)
  • Điểm TB (DTB:float)

Thuộc tính bao gồm các loại như sau:

  • Thuộc tính đơn – không thể tách nhỏ ra được
  • Thuộc tính phức hợp – có thể tách ra thành các thành phần nhỏ hơn

Các loại giá trị của thuộc tính:

  • Đơn trị: các thuộc tính có giá trị duy nhất cho một thực thể (VD: số CMND, …)
  • Đa trị: các thuộc tính có một tập giá trị cho cùng một thực thể (VD: bằng cấp, …)
  • Suy diễn được (năm sinh <----> tuổi)

Mỗi thực thể đều được phân biệt bởi thuộc tính khóa

Ví dụ 1: tập thực thể NHANVIEN có các thuộc tính

  • Mã NV (MaNV: integer)
  • Họ tên (Hoten: string[50])
  • Ngày sinh (ns:date)
  • Địa chỉ (diachi:string[100])
  • Quê quán (quequan:string[30])
  • Hệ số lương (hsluong:float)
  • Hệ số phụ cấp (hsphucap:float)
  • Tổng lương (tongluong:float)

Ví dụ 2:

Ví dụ 3:

c - Mối quan hệ giữa các tập thực thể:

Quan hệ là sự liên kết giữa hai hay nhiều tập thực thể

Ví dụ giữa tập thực thể NHANVIEN và PHONGBAN có các liên kết như sau:

  • Một nhân viên thuộc một phòng ban nào đó
  • Một phòng ban có một nhân viên làm trưởng phòng

Tập quan hệ là tập hợp các mối quan hệ giống nhau

d - Lược đồ E-R:

Là đồ thị biểu diễn các tập thực thể, thuộc tính và mối quan hệ

Các ký hiệu trong lược đồ E-R

  • Đỉnh:

  • Cung: là đường nối giữa tập thực thể và thuộc tính, mối quan hệ và tập thực thể

Ví dụ lược đồ E-R:

e - Các kiểu liên kết trong lược đồ E-R:

Ví dụ:

  • Một phòng ban có nhiều nhân viên

  • Một nhân viên chỉ thuộc 1 phòng ban

  • Một nhân viên có thể được phân công vào nhiều dự án hoặc không được phân công vào dự án nào

  • Một nhân viên có thể là trưởng phòng của 1 phòng ban nào đó

Một loại thực thể có thể tham gia nhiều lần vào một quan hệ với nhiều vai trò khác nhau

f - Thuộc tính khóa:

Mỗi tập thực thể phải có 1 khóa

Một khóa có thể có 1 hay nhiều thuộc tính

Có thể có nhiều khóa trong 1 tập thực thể, ta sẽ chọn ra 1 khóa làm khóa chính cho tập thực thể đó

3 - Xây dựng mô hình E-R

a - Quy tắc:

  • Chính xác
  • Tránh trùng lặp
  • Dễ hiểu
  • Chọn đúng mối quan hệ
  • Chọn đúng kiểu thuộc tính

b - Các bước xây dựng:

  • Liệt kê, chọn lọc thông tin
  • Xác định tập thực thể
  • Xác định mối quan hệ
  • Xác định thuộc tính và gắn thuộc tính cho tập thực thể và mối quan hệ
  • Quyết định thuộc tính khóa
  • Vẽ biểu đồ mô hình thực thể E-R
  • Chuẩn hóa biểu đồ

c - Ví dụ:

Ví dụ 1: Xây dựng mô hình E-R cho cơ sở dữ liệu quản lý đơn đặt hàng với các thông tin như sau:

Bước 1: Liệt kê, chọn lọc thông tin:

-- Đơn đặt hàng gồm những thông tin như sau:

  • Số đơn hàng (Số ĐH)
  • Tên đơn vị đặt hàng (Tên ĐV)
  • Địa chỉ
  • Điện thoại
  • Ngày đặt
  • Tên hàng
  • Mô tả
  • Đơn vị tính (Đv tính)
  • Số lượng
  • Người đặt hàng (Họ tên NĐ)

-- Phiếu giao hàng gồm những thông tin như sau:

  • Số phiếu giao hàng (Số PG)
  • Tên đơn vị đặt hàng (Tên ĐV)
  • Địa chỉ
  • Nơi giao hàng (Tên nơi GH)
  • Ngày giao
  • Tên hàng
  • Đơn vị tính (Đv tính)
  • Số lượng
  • Đơn giá
  • Thành tiền
  • Tên người nhận (Họ tên NN)
  • Tên người giao (Họ tên NG)

Bước 2: Xác định thực thể, thuộc tính:

-- Thực thể ĐƠN VỊ ĐH gồm các thuộc tính sau:

  • Mã ĐV
  • Tên ĐV
  • Địa chỉ
  • Điện thoại

-- Thực thể ĐƠN VỊ KH gồm các thuộc tính sau:

  • Mã ĐV
  • Tên ĐV
  • Địa chỉ

-- Thực thể HÀNG gồm các thuộc tính sau:

  • Mã hàng
  • Tên hàng
  • Đv tính
  • Mô tả hàng

-- Thực thể NGƯỜI ĐẶT gồm các thuộc tính sau:

  • Mã số NĐ
  • Họ tên NĐ

-- Thực thể NƠI GIAO gồm các thuộc tính sau:

  • Mã số ĐĐG
  • Tên nơi giao

-- Thực thể NGƯỜI NHẬN gồm các thuộc tính sau:

  • Mã số NN
  • Họ tên NN

-- Thực thể NGƯỜI GIAO gồm các thuộc tính sau:

  • Mã số NG
  • Họ tên NG

Bước 3: Xác định các mối quan hệ

-- Hai động từ tìm được là: Đặt, Giao --> Dựa vào hai động từ tìm được, đặt các câu hỏi để xác định các mối quan hệ như sau:

-- Từ đó ta có các quan hệ như sau:

  • Người đặt hàng THUỘC Đơn vị đặt hàng
  • Người nhận hàng THUỘC Đơn vị khách hàng

Bước 4: Vẽ biểu đồ mô hình thực thể E-R

Bước 5: Chuẩn hóa, rút gọn mô hình thực thể E-R Do đơn vị đặt hàng và đơn vị khách hàng đều là các đơn vị ở bên ngoài giao dịch với cửa hàng nên ta gộp thành một thực thể là Đơn vị khách gồm các thuộc tính: Mã ĐV, Tên ĐV, Địa chỉ, Điện thoại

Ta có mô hình E-R như sau:

Ví dụ 2: Xây dụng cơ sở dữ liệu đề công ty theo dõi các thông tin liên quan đếnnhân viên, phòng ban và đề án với các yêu cầu sau:

  • Cty có nhiều phòng ban, mỗi phòng ban có tên duy nhất, mã phòng ban duy nhất, một trưởng phòng và ngày nhận chức.
  • Mỗi phòng ban có thể ở nhiều nhiều nhân viên
  • Nhân viên có mã nhân viên, họ tên, địa chỉ, chức vụ
  • Mỗi nhân viên làm việc ở 1 phòng ban, tham gia vào các đề án
  • Mỗi đề án có mã đề án, tên đề án

Ta có lược đồ E-R như sau:

Nguồn tham khảo: http://tailieu.tv/tai-lieu/mo-hinh-thuc-the-moi-quan-he-2876/ http://freetuts.net/mo-hinh-thuc-the-moi-ket-hop-er-305.html http://www.tailieuontap.com/2010/05/mo-hinh-thuc-lien-ket-mo-hinh-er.html https://voer.edu.vn/m/mo-hinh-quan-he-thuc-the-entity-relationship-model/ff2250a9

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 521

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 393

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 725

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 353

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 443

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 431