Mô hình thực thể liên kết (ER)
Mô hình thực thể liên kết (Entity - Relation Model) là một mô hình dữ liệu, phù hợp để mô hình hóa dữ liệu cho cơ sở dữ liệu.
Các khái niệm chính
Thực thể
Thực thể là một đối tượng nào đó. Đối tượng này có thể tồn tại thực hoặc là một khái niệm trừu tượng dùng trong bài toán.
Tập thực thể là một nhóm các thực thể có cùng tính chất.
Thuộc tính là một đặc tính của một tập thực thể. Tập các giá trị có thể của một thuộc tính được gọi là miền giá trị của thuộc tính đó. Các kiểu thuộc tính:
- Thuộc tính đơn giản: là các thuộc tính thuộc kiểu dữ liệu nguyên thủy, định nghĩa theo hệ CSDL
- Thuộc tính phức: là thuộc tính phức, được định nghĩa từ các thuộc tính khác "nhóm" lại với nhau
- Thuộc tính đa giá trị: thuộc tính có thể nhận nhiều giá trị đối với mỗi thực thể
- Thuộc tính suy diễn: thuộc tính có thể lấy được từ các thuộc tính khác.
Khóa là thuộc tính/tập thuộc tính xác định duy nhất một thực thể trong tập thực thể
Liên kết
Liên kết là mối liên hệ giữa các thực thể
Tập liên kết là một nhóm các liên kết cùng kiểu.
Các loại liên kết:
- Liên kết 1 - 1: liên kết một thực thể của tập thực thể
với nhiều nhất 1 thực thể của tập thực thể . - Liên kết 1 - nhiều: liên kết một thực thể của tập thực thể
với nhiều thực thể của tập thực thể . Mỗi thực thể trong có thể tương ứng với nhiều nhất 1 thực thể trong . - Liên kết nhiều - nhiều: liên kết một thực thể của tập thực thể
với nhiều thực thể của tập thực thể . Mỗi thực thể trong có thể tương ứng với một hoặc nhiều thực thể trong A. - Liên kết đệ quy: liên kết giữa các thực thể cùng tập thực thể.
Biểu diễn thực thể và liên kết
Tập thực thể được biểu diễn bằng hình chữ nhật
Thuộc tính đơn giản được biểu diễn bằng hình elip nối với tập thực thể bằng một đoạn thẳng.
Thuộc tính phức được tách thành nhiều thuộc tính đơn
Thuộc tính đa trị được biểu diễn trong 2 hình elip cùng tiêu điểm.
Khóa có tên thuộc tính được gạch chân.
Liên kết được biểu diễn qua một đường thẳng giữa hai tập thực thể, với tên liên kết đặt trong hình thoi nằm giữa đường thẳng.
Chuyển mô hình thực thể liên kết sang mô hình dữ liệu quan hệ
Các tập thực thể được chuyển thành các quan hệ, với mỗi thực thể là một bộ. Thuộc tính của tập thực thể trở thành thuộc tính (cột) của quan hệ. Khóa của tập thực thể thành khóa của quan hệ.
Thuộc tính phức được thay bằng các thuộc tính thành phần.
Thuộc tính đa trị được thay bằng một bảng mới xác định bởi thuộc tính đa trị và khóa của tập thực thể tương ứng.
Các thuộc tính suy diễn được bỏ qua.
Nếu một tập thực thể được xác định từ tập thực thể khác, được xác định bằng một quan hệ chứa khóa của tập thực thể ban đầu.
Liên kết 1 - 1 được chuyển thành khóa ngoại.
Liên kết 1 - nhiều được chuyển thành khóa ngoại, trong đó khóa chính của quan hệ bên "1" được thêm vào quan hệ bên "nhiều" thành khóa ngoại.
Liên kết nhiều - nhiều được chuyển thành một quan hệ mới xác định bởi các khóa chính của các thực thể liên quan và thuộc tính của liên kết.
Cuối cùng, các quan hệ có chung khóa có thể được gộp lại.
Ví dụ
Mô tả vấn đề: Trường CNTT & TT (SOICT) muốn xây dựng một ứng dụng quản lý thông tin về việc sử dụng các phòng thực hành sau:
- Các phòng thực hành (Labs) được quản lý với các thông tin:
- Mã số phòng
- Địa điểm phòng
- Tên bộ môn quản lý trực tiếp phòng
- Số lượng máy
- Số sinh viên tối đa
- Sinh viên được phân vào các nhóm thực hành gồm:
- Mã nhóm
- Tên nhóm
- Tên môn học thực hành
- Mỗi nhóm có một nhóm trưởng. Một sinh viên có thể thuộc nhiều nhóm cho các môn học khác nhau.
- Thông tin về sinh viên:
- Mã số sinh viên
- Họ tên
- Tên lớp
- Khóa học
- Địa chỉ email
- Số điện thoại
- Khi muốn sử dụng phòng máy, nhóm trưởng phải đăng ký với các thông tin:
- Ngày sử dụng
- Giờ bắt đầu
- Giờ kết thúc
- Mỗi sinh viên có thể đăng ký sử dụng phòng máy để tự học:
- Mục đích
- Ngày
- Thời gian bắt đầu
- Thời gian kết thúc
- Mỗi lần sử dụng phòng máy đều có một cán bộ chịu trách nhiệm quản lý:
- Tên
- Số điện thoại
Sơ đồ ER:
Sơ đồ quan hệ (khóa chính in đậm, khóa ngoại in nghiêng):
Labs(labID, location, managing_department, student_capacity)
Students(studentID, full_name, class, email_address, phone_number, academic_term, leaderID )
Groups(groupID, group_name, subject_name)
GroupMembers(groupID, studentID)
LabGroupSessions(labID, groupID, date, start_time, end_time, managerID)
LabStudentSessions(labID,studentID, date, start_time, end_time, purpose, managerID)
Staff(staffID, name, phone_number, email)
Bài 2:
Viện CNTT & TT muốn xây dựng một ứng dụng cho phép đăng ký đề tài làm thực tập tốt nghiệp
như sau:
- Mỗi giáo viên sẽ đề xuất một số đề tài có thể hướng dẫn cho sinh viên đăng ký. Thông
tin về đề tài gồm có: tên đề tài, mô tả tóm tắt. - Sinh viên có thể vào đăng ký một số đề tài của các giáo viên khác nhau, và một đề tài
có thể có nhiều sinh viên đăng ký. Giáo viên sau khi kiểm tra số lượng đăng ký trên
mỗi đề tài sẽ quyết định chọn sinh viên làm đề tài nào, lúc này trạng thái cho việc
đăng ký của sinh viên được cập nhật (chấp nhận/từ chối). - Thông tin về sinh viên cần lưu trữ: Mã số sinh viên, họ tên, ngày sinh, tên lớp.
- Thông tin về giáo viên cần lưu trữ: Mã số giáo viên, Họ tên, học hàm, học vị, Bộ môn
trực thuộc. Thông tin bộ môn trực thuộc cần lưu trữ: TênBM, số điện thoại, văn phòng
bộ môn.