Để 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 phim |
Năm |
Thời lượng |
Loại |
Cuốn theo chiều gió |
1939 |
231 |
Tình cảm |
Impossible – Ghost Protocol |
2011 |
133 |
Hành động |
Finding Nemo |
2003 |
100 |
Hoạ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 phim, Năm, Thời lượng, Loạ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 (MASV, MM, hk, nk, diem)
GIAOVIEN (MAGV, hotenGv, namsinhGv, diachiGv)
DAY (MAGV, MM, hk, nk)
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 (HỌC LẬP TRÌNH WEB, HỌC LẬP TRÌNH ỨNG DỤNG).
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.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python