Mô hình dữ liệu Relational

Xin chào các bạn đam mê cơ sở dữ liệu! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các Mô hình Dữ liệu Relational. Là người giáo viên máy tính gần gũi của bạn, tôi sẽ hướng dẫn bạn qua khái niệm cơ bản trong hệ thống quản lý cơ sở dữ liệu (DBMS). Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Hãy lấy một tách cà phê, và chúng ta cùng bắt đầu!

DBMS - Relational Data Model

Khái niệm

Mô hình dữ liệu Relational là gì?

Hãy tưởng tượng bạn đang tổ chức một thư viện khổng lồ. Bạn có sách, tác giả, thể loại và nhà xuất bản. Bạn sẽ làm thế nào để theo dõi tất cả thông tin này một cách hiệu quả? Đó là lúc mô hình dữ liệu Relational phát huy tác dụng!

Mô hình dữ liệu Relational là cách tổ chức dữ liệu trong cơ sở dữ liệu bằng cách sắp xếp thông tin thành các bảng (còn gọi là quan hệ) với các hàng và cột. Nó giống như tạo ra một series các bảng tính liên kết với nhau.

Hãy phân tích nó với một ví dụ:

CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
AuthorID INT,
GenreID INT,
PublisherID INT
);

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY,
Name VARCHAR(50),
BirthDate DATE
);

Trong ví dụ này, chúng ta đã tạo ra hai bảng: Books và Authors. Mỗi bảng có các cột (trường) mô tả các thuộc tính khác nhau. BookIDAuthorID là các标识符 duy nhất cho mỗi bản ghi trong bảng tương ứng của chúng.

Các thành phần chính của mô hình Relational

  1. Bảng (Quan hệ): Đây là các cấu trúc chính chứa dữ liệu. Trong ví dụ thư viện của chúng ta, Books và Authors là các bảng.

  2. Thuộc tính (Cột): Những này đại diện cho các thuộc tính của các thực thể trong bảng. Ví dụ, Title và Name là các thuộc tính.

  3. Tupple (Hàng): Mỗi hàng trong bảng đại diện cho một bản ghi hoặc một thực thể.

  4. Phạm vi giá trị: Đây là tập hợp các giá trị cho phép của một thuộc tính. Ví dụ, phạm vi giá trị cho BookID có thể là các số nguyên dương.

  5. Chìa khóa: Đây là các thuộc tính đặc biệt được sử dụng để xác định duy nhất các bản ghi và thiết lập mối quan hệ giữa các bảng.

Các loại chìa khóa

Hãy cùng tìm hiểu sâu hơn về chìa khóa với một bảng tiện ích:

Loại chìa khóa Mô tả Ví dụ
Primary Key Xác định duy nhất mỗi bản ghi trong bảng BookID trong bảng Books
Foreign Key Tham chiếu đến chìa khóa chính của bảng khác AuthorID trong bảng Books
Candidate Key Có thể được sử dụng làm chìa khóa chính ISBN cho sách
Composite Key Chìa khóa bao gồm nhiều cột (CourseID, StudentID) cho bảng đăng ký khóa học

Mối quan hệ

Một trong những khía cạnh mạnh mẽ nhất của mô hình Relational là khả năng thiết lập mối quan hệ giữa các bảng. Có ba loại chính:

  1. One-to-One (1:1): Mỗi bản ghi trong bảng A liên quan đến một bản ghi trong bảng B.

Ví dụ:

CREATE TABLE Passport (
PassportID INT PRIMARY KEY,
PassportNumber VARCHAR(20),
ExpiryDate DATE,
CitizenID INT UNIQUE,
FOREIGN KEY (CitizenID) REFERENCES Citizens(CitizenID)
);
  1. One-to-Many (1:N): Một bản ghi trong bảng A có thể liên quan đến nhiều bản ghi trong bảng B.

Ví dụ:

CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
  1. Many-to-Many (M:N): Nhiều bản ghi trong bảng A có thể liên quan đến nhiều bản ghi trong bảng B.

Ví dụ:

CREATE TABLE StudentCourses (
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);

Ràng buộc

Bây giờ, hãy nói về các ràng buộc - những quy tắc giúp duy trì tính toàn vẹn và nhất quán của dữ liệu. Hãy tưởng tượng chúng như những thư viện viên đảm bảo rằng sách được phân loại và sắp xếp chính xác.

Các loại ràng buộc

Loại ràng buộc Mô tả Ví dụ
NOT NULL Đảm bảo rằng một cột không thể có giá trị NULL Name VARCHAR(50) NOT NULL
UNIQUE Đảm bảo rằng tất cả các giá trị trong một cột đều khác nhau Email VARCHAR(100) UNIQUE
PRIMARY KEY Xác định duy nhất mỗi bản ghi trong bảng StudentID INT PRIMARY KEY
FOREIGN KEY Đảm bảo tính toàn vẹn tham chiếu giữa các bảng FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
CHECK Đảm bảo rằng tất cả các giá trị trong một cột thỏa mãn điều kiện cụ thể CHECK (Age >= 18)
DEFAULT Đặt giá trị mặc định cho một cột khi không có giá trị được chỉ định Balance DECIMAL(10,2) DEFAULT 0.00

Hãy xem các ràng buộc này trong hành động:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
Age INT CHECK (Age >= 18),
EnrollmentDate DATE DEFAULT CURRENT_DATE,
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

Trong ví dụ này:

  • StudentID là chìa khóa chính.
  • Name không thể null.
  • Email phải duy nhất cho mỗi sinh viên.
  • Age phải là 18 hoặc lớn hơn.
  • EnrollmentDate sẽ mặc định là ngày hiện tại nếu không được chỉ định.
  • DepartmentID là chìa khóa ngoại tham chiếu đến bảng Departments.

Các ràng buộc này giúp duy trì tính toàn vẹn và nhất quán của dữ liệu trong cơ sở dữ liệu. Chúng giống như các quy tắc trong thư viện đảm bảo rằng sách được phân loại, xác định duy nhất và liên kết đúng với các tác giả và nhà xuất bản.

Khi chúng ta kết thúc phần giới thiệu về Mô hình Dữ liệu Relational, hy vọng bạn đã bắt đầu thấy sức mạnh và tổ chức của cách tiếp cận này trong quản lý dữ liệu. Nó giống như có một thư viện hoàn hảo nơi mỗi cuốn sách đều ở đúng nơi, dễ dàng tìm thấy và liên kết với tất cả thông tin liên quan.

Nhớ rằng, học cơ sở dữ liệu là một hành trình. Đừng lo lắng nếu mọi thứ không ngay lập tức rõ ràng. Hãy gyak tập tạo bảng, thiết lập mối quan hệ và đặt ràng buộc. Sớm thôi, bạn sẽ thiết kế các cấu trúc cơ sở dữ liệu hiệu quả và vững chắc như một chuyên gia!

Trong bài học tiếp theo, chúng ta sẽ sâu hơn vào việc truy vấn các cấu trúc Relational bằng SQL. Đến那时候, chúc các bạn may mắn với việc mô hình hóa dữ liệu!

Credits: Image by storyset