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

Ngày đăng: 11/11/2020   -    Cập nhật: 11/11/2020


Để 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
Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!