MÔ HÌNH QUAN HỆ LÀ GÌ?

Để có thể thiết kế cơ sở dữ liệu bằng các câu lệnh truy vấn SQL, trước hết chúng ta phải định hình hoặc thiết kế được CSDL đó ở mức vật lý.
Tức là định hình, hình dung ra ra được các bảng, các mối quan hệ cần thiết giữa các bảng đó sao cho đảm bảo được tính logic mà vẫn thoả mãn được các yêu cầu ràng buộc.
Do đó, trước khi tìm hiểu sâu về các câu truy vấn SQL, chúng ta hãy tìm hiểu về kiến thức nền tảng của CSDL trước.
Nội dung bài viết này sẽ cung cấp cho các bạn biết được các khái niệm về mô hình quan hệ, đây là tiền đề để viết được SQL (cũng như các loại CSDL quan hệ khác) sau này.

Các khái niệm cơ bản bề Mô hình quan hệ

Mô hình quan hệ do F.F Codd đề xuất năm 1970, được xây dựng dựa trên cấu trúc toán học tự nhiên và đơn giản: Quan hệ (relation) hay Bảng (table).
* Mặc dù SQL bị ảnh hưởng bởi công trình của tiến sĩ Codd, nhưng SQL không phải do tiến sĩ Codd viết ra. Ngôn ngữ SQL được thiết kế bởi Donald D. Chamberlin và Raymond F. Boyce tại IBM.

Ví dụ: Ta có một quan hệ Phim như sau:

Tên phimNămThời lượngLoại
Cuốn theo chiều gió1939231Tình cảm
Impossible – Ghost Protocol2011133Hành động
Finding Nemo2003100Hoạt hình

Các khái niệm cơ bản của một mô hình quan hệ:

  • Thuộc tính (attribute): Là các cột của một quan hệ được đặt tên cụ thể.

Như trên quan hệ Phim, thuộc tính chính là Tên phimNămThời lượngLoại.
Các thuộc tính xuất hiện ở trên cùng của một cột và mô tả ý nghĩa của cột đó. Thứ tự của các cột trong một quan hệ không quan trọng, miễn sao cung cấp đầy đủ thông tin và tránh dư thừa dữ liệu là được.

Ví dụ: Cột Thời lượng cho ta biết độ dài của một bộ phim theo đơn vị phút.

  • Lược đồ (Schema): Được định nghĩa bao gồm tên của một quan hệ và tập  hợp các thuộc tính của quan hệ đó.

Ví dụ: Lược đồ của quan hệ Phim là: Phim(Tên_phim, năm, thời_lượng, Loại)
Trong mô hình quan hệ, một CSDL bao gồm một hoặc nhiều quan hệ tạo thành tập hợp các lược đồ của các quan hệ của một CSDL được gọi là lược đồ CSDL (Database Schema)

  • Bộ (Tuple): Chính là những dòng của một quan hệ, khác với dòng tiêu đề banh nhé (Bao gồm tên các thuộc tính)

Mộ bộ có các thành phần tương ứng với các thuộc tính của quan hệ.

Ví dụ: Bộ đầu tiên trong quan hệ Phim có 4 thành phần: Cuốn theo chiều gió, 1939, 231, Tình cảm – tương ứng với 4 thuộc tính Tên phim, Năm, Thời lượng, Loại
Cách viết một bộ bao gồm các thành phần xuất hiện theo thứ tự các thuộc tính được liệt kê trong lược đồ, cách nhau dấu phẩy và được bao bọc bởi cặp dấu ngoặc đơn.

Ví dụ: (Cuốn theo chiều gió, 1939, 231, Tình cảm)

  • Thể hiện: Nội dung (bao gồm tập các bộ) của một quan hệ tại một thời điểm nào đó được gọi là thể hiện của quan hệ tại thời điểm đó.

Ví dụ: 3 bộ trong quan hệ Phim này là một thể hiện của chính quan hệ Phim này.

  • Miền giá trị: Tập các giá trị mà một thuộc tính Ai có thể nhận được gọi là miền giá trị của thuộc tính đó, kí hiệu dom(Ai)

Mỗi thành phần của một bộ hay giá trị của các thuộc tính phải là nguyên tố. Một giá trị được gọi là nguyên tố khi giá trị này không thể phân chia được, ví dụ tên sinh viên, năm sinh
=> Kiểu dữ liệu của một thuộc tính phải là các kiểu cơ bản như string, integer.


Ví dụ: dom(năm sinh) phải là tập hợp các số có 4 chữ số.

  • Khoá (Key): Là tập tối thiểu các thuộc tính xác định duy nhất của một bộ.

Một quan hệ có thể có nhiều khoá, gọi là các khoá ứng viên (candidate key). Trong đó, khoá chính (primary key) là khoá được chọn từ các khoá ứng viên:

  • Thường là khoá ứng viên có ít nhất một thuộc tính
  • Thường được gạch dưới trong lược đồ quan hệ
  • Ví dụ: SINHVIEN(MSSV, hoten, namsinh, diachi, ML)

Khóa chính của quan hệ này xuất hiện như là các thuộc tính của một quan hệ khác thì gọi là khóa ngoại (Foreign key).
Khoá chính và khoá ngoại kết hợp với nhau tạo nên các liên kết mật thiết đảm bảo dữ liệu được logic và toàn vẹn.
Chẳng hạn, lược đồ CSDL của một CSDL đơn giản về trường đại học sau đây đảm bảo được chuẩn logic về khoá chính và khoá ngoại:

SINHVIEN (MASV, hoten, namsinh, diachi, ML)
LOP (ML, tenlop)
MONHOC (MM, tenmon, TC, LT, TH)
DIEM (MASVMMhknk, diem)
GIAOVIEN (MAGV, hotenGv, namsinhGv, diachiGv)
DAY (MAGVMMhknk)

Phần in đậm –  có gạch dưới là khoá chính, in nghiêng – có gạch dưới là khoá ngoại.
Hoặc với khoá ngoại bạn có thể nhận biết được bằng xét xem một thuộc tính của bất kì một quan hệ nào là khoá chính của một quan hệ khác.
Khoá chính có thể bao gồm nhiều thuộc tính – cũng có thể bao gồm nhiều khoá ngoại khác nhau.

Túm lại về mô hình quan hệ

Như vậy, mô hình quan hệ là kiến thức cơ sở để bạn có thể thiết kế CSDL của các dự án của mình  trong tương lai. Nhìn vào mô hình quan hệ bạn có thể hình dung được tổng thể CSDL mà mình phải làm việc.
Tuy chỉ là mức vật lý – nhưng cũng là mức nhập môn cho những ai muốn học Database hoặc học phát triển phần mềm.
Mô hình quan hệ là một trong các bài viết mang tính nhập môn trong Series Học Lập trình SQL. Nếu bạn là người mới tiếp xúc với CSDL thì hãy làm quen với các kiến thức này đã, đừng vội vàng học ngay truy vấn SQL – nó không mất nhiều thời gian của bạn đâu.

Related Posts
Lịch sử ngôn ngữ lập trình Java

Java (phiên âm Tiếng Việt: "Gia-va") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết Read more

Phím tắt trong Eclipse giúp tăng năng suất coding

Các phím tắt sẽ giúp tốc độ coding của bạn nhanh hơn rất nhiều, hơn nữa format code của bạn Read more

Lập trình Hướng đối tượng(OOP)

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên Read more

Kiểu dữ liệu Nguyên thủy(Primitive)

1. Tổng quan Trong ngôn ngữ lập trình Java có 2 kiểu dữ liệu chúng ta cần nắm và phân Read more

Hãy bình luận đầu tiên

Để lại một phản hồi