06/04/2021, 14:50

Mô hình dữ liệu quan hệ (Relational Data Model) - Nhập môn cơ sở dữ liệu

Trong bài này chúng ta sẽ tìm hiểu đến mô hình dữ liệu quan hệ dựa trên những khái niệm về nối quan hệ ở mô hình thực thể ER. Đây là mô hình được TS. E. F. Codd đưa ra vào năm 1970, dựa trên những khái niệm về toán học trên nền tảng lý thuyết và tập hợp. Mình sẽ không đi sâu vào lý ...

Trong bài này chúng ta sẽ tìm hiểu đến mô hình dữ liệu quan hệ dựa trên những khái niệm về nối quan hệ ở mô hình thực thể ER. Đây là mô hình được TS. E. F. Codd đưa ra vào năm 1970, dựa trên những khái niệm về toán học trên nền tảng lý thuyết và tập hợp.

Mình sẽ không đi sâu vào lý thuyết mà thay vào đó sẽ giải thích những ví dụ mà trong giáo trình của thầy Hải biên soạn, nếu bạn nào không thích đọc chuỗi bài viết này thì có thể download tài liệu của thầy ở bài cuối cùng nhé.

1. Thuộc tính (attribute)

Thuộc tính là đặc điểm của một đối tượng, nó có các đặc tính sau đây:

  • Tên gọi: Là một dãy ký tự, bạn phải đặt sao đọc tên thuộc tính là sẽ gợi ý được ý nghĩa của nó
  • Kiểu dữ liệu: thuộc tính phải xác định kiểu dữ liệu lưu trữ, ký hiệu miền giá trị là Dom(A). Ví dụ với thuộc tính GIOITINH thì nó là kiểu chuỗi, miền giá trị của nó là Dom(GIOITINH)=(‘Nam’,’Nu’).
  • Tại một thời điểm xác định thì thuộc tính có thể có giá trị hoặc không (là giá trị NULL).

Khi bạn thiết kế CSDL thì thuộc tính chính là các đặc tính của đối tượng.

2. Quan hệ (relation)

Quan hệ là một tập hợp hữu hạn các thuộc tính, được kí hiệu là Q (A1, A2, An ,...). Ví dụ với đối tượng CONNGUOI thì sẽ có rất nhiều thuộc tính như tay - chân - mắt - mũi, .. , và tập các thuộc tính này ta gọi là quan hệ.

Ví dụ

  • HOCVIEN (Mahv, Hoten, Ngsinh, Gioitinh, Noisinh, Malop)
  • LOP (Malop, Tenlop, Siso, Trglop, Khoa)

Nói cách khác thì quan hệ chính là bảng lưu trữ CSDL, còn thuộc tính chính là các column của bảng. Tuy nhiên khi học mô hình này bạn đừng nói cái này nhé, thầy sẽ phạt ngay vì ở mô hình này không có khái niệm bảng.

3. Bộ (tuple)

Bộ là các thông tin của một đối tượng thuộc quan hệ và ta hay còn gọi là mẫu tin (record) hoặc là dòng (row).

Một bộ của quan hệ: Q (A1 A2 An) là q = (a1 a2 an)  với ai ∈ Dom (Ai).

Nói cách khác thì bộ chính là một dòng thông tin trong một bảng, bạn hãy xem ví dụ dưới đây để hiểu rõ hơn.

Ví dụHOCVIEN(Mahv, Hoten, Ngsinh, Noisinh)q=(1003,Nguyen Van Lam, 1/1/1987,Dong Nai), nghĩa là học viên có mã số là 1003, họ tên là Nguyen Van Lam, sinh ngày 1/1/1987 ở Dong Nai.

4. Thể hiện của quan hệ (instance)

Sau này khi học đến lập trình OOP thì bạn sẽ đụng đến khái niệm về instance, chính xác hơn là học về design pattern ;) Nhưng bây giờ bạn đừng quan tâm nó nhé, mình chỉ gợi ý một chút thôi.

Instance là tập hợp các bộ của table tại một thời điểm, hay chính xác hơn là toàn bộ dữ liệu của một bảng. Ký hiệu là TQ.

Ví dụ: THOCVIEN là thể hiện của quan hệ HOCVIEN tại thời ñiểm hiện tại gồm có các bộ như sau:

instance PNG

5. Tân từ

Tân từ là một quy tắc dùng để mô tả cho quan hệ, ký hiệu là ||Q||. Đây là những gợi ý và cũng là các câu hỏi giúp nhà thiết kế có thể vẽ ra biểu đồ dữ liệu chính xác với từng dự án. 

Ví dụ: THI (Mahv, Mamh, Lanthi, Diem)

  • ||THI|| mỗi học viên được phép thi một môn học nhiều lần, mỗi lần thi lưu trữ học viên nào thi môn gì? lần thi thứ mấy? và điểm là bao nhiêu?

6. Phép chiếu

Phép chiếu dùng để trích giá trị của một số thuộc tính trong danh sách các thuộc tính của quan hệ. Ví dụ với danh sách quan hệ THI (Mahv, Mamh, Lanthi, Diem) nếu ta dùng phép chiếu thì có thể chiếu lên các thuộc tính của nó.

Ký hiệu: phép chiếu của quan hệ R lên tập thuộc tính X là R[X] hoặc R.X.

Giả sử ta có quan hệ của HOCVIEN như hình sau:

phep chieu png

Chiếu lên một thuộc tính: Bây giờ mình sẽ chiếu lên thuộc tính NoiSinh của quan hệ HOCVIEN: 

  • HOCVIEN[Noisinh] = {‘Nghe An’,’Kien Giang’,’Tay Ninh’}

phep chieu 1 png

Kết quả trả về là tập hợp tất cả các bộ của quan hệ HOCVIEN nhưng chỉ chọn thuộc tính NoiSinh.

Chiếu lên nhiều thuộc tính: Giả sử mình cần chiếu lên hai thuộc tính HoTen và NoiSinh thì sẽ làm như sau:

  • HOCVIEN[Hoten, Noisinh] = {(‘Ha Duy Lap’, ‘Nghe An’),(‘Tran Ngoc Han’, ‘Kien Giang’),(‘Tran Ngoc Linh’,’Tay Ninh’)}

phep chieu 2 PNG

7. Khóa

Nói về khóa thì có rất nhiều loại khóa:

  • Siêu khóa, khóa
  • Khóa chính
  • Khóa tương đương
  • Khóa ngoại. 

Để tiện cho việc học thì mình đưa vào một bảng và được dùng cho các ví dụ ở các phần dưới đây.

sieu khoa PNG

Siêu khóa

  • Là tập hợp con các thuộc tính của quan hệ Q mà giá trị của chúng có thể phân biệt giữa ai bộ với nhau. Ví dụ với quan hệ HOCVIEN ở trên thì MaHV là siêu khóa vì nó dùng để phân biệt các bộ (các records).
  • Một bộ có thể có nhiều siêu khóa, và theo chuẩn CSDL thì phải có ít nhất một siêu khóa

Như vậy ta có dánh sách các siêu khóa như sau: 

  • {Mahv}
  • {Mahv,Hoten}
  • {Hoten};{Noisinh,Hoten}
  • ...

Khóa

Khóa là siêu khóa nhỏ nhất (có ít thuộc tính nhất), và thuộc tính nào tham gia vào một khóa ta gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa.

Như ở ví dụ trên thì khóa sẽ là: {Mahv}

Khóa chính

Khi cài đặt trên một hệ quản trị CSDL cụ thể nào đó thì nếu quan hệ có nhiều khóa thì ta chỉ được phép chọn ra một khóa làm khóa chính.

Về thực tế bạn có thể chọn bất kì một siêu khóa làm khóa chính, tuy nhiên để tối ưu và đạt chuẩn thì bạn phải chọn khóa thay vì chọn siêu khóa.

Khóa tương đương

Khóa tương đương là các khóa còn lại không được chọn làm khóa chính.

Ví dụ trong hai khóa {Mahv},{Hoten} thì khóa chính là {Mahv}, khóa tương đương là {Hoten}.

Khóa ngoại

Khóa ngoại là sự tham chiếu giữa các thuộc tính của hai quan hệ với nhau, với điều kiện các thuộc tính đó phải có cùng tính chất như kiểu dữ liệu, chiều dài ....

Ví dụ: Cho hai quan hệ như sau

khoa ngoai PNG

Thuộc tính Malop trong quan hệ LOP là khóa chính của quan hệ LOP. Thuộc tính Malop trong quan hệ HOCVIEN là khóa ngoại, tham chiếu đến Malop trong quan hệ LOP.

khoa ngoai 1 PNG

 

Như vậy mình đã giới thiệu sơ lược tất cả những vấn đề then chốt của lược đồ cơ sở dữ liệu quan hệ. Với lược đồ này thì gần như là những thông tin quan trọng để thiết kế ra mô hình CSDL chính xác nhất.

8. Lược đồ quan hệ

Tóm lại, lược đồ CSDL quan hệ không phải là dùng các kí hiệu như lược đồ ER mà nó dùng bằng ngôn từ và văn bản bình thường để diễn đạt. 

  • Lược đồ quan hệ nhằm mô tả cấu trúc của quan hệ, các mối liên hệ giữa các thuộc tính trong quan hệ đó
  • Một lược đồ quan hệ gồm một tập thuộc tính của quan hệ kèm theo một mô tả để xác định ý nghĩa và mối liên hệ giữa các thuộc tính

Dưới đây là hình ảnh hai lược đồ, các bạn tham khảo nhé.

qlhk PNG

qlsv PNG

Chúc các bạn học tốt!

Bài tiếp
0