25/05/2018, 00:06

Mô hình cơ sở dữ liệu quan hệ

Mô hình CSDL quan hệ lần đầu tiên được E.F.Codd và tiếp sau đó được công ty IBM giới thiệu vào năm 1970. Ngày nay, hầu hết các tổ chức đã áp dụng CSDL quan hệ để quản lý dữ liệu trong đơn vị mình. Cấu trúc dữ liệu : dữ liệu được ...

Mô hình CSDL quan hệ lần đầu tiên được E.F.Codd và tiếp sau đó được công ty IBM giới thiệu vào năm 1970. Ngày nay, hầu hết các tổ chức đã áp dụng CSDL quan hệ để quản lý dữ liệu trong đơn vị mình.

Cấu trúc dữ liệu: dữ liệu được tổ chức dưới dạng quan hệ hay còn gọi là bảng.

Thao tác dữ liệu: sử dụng những phép toán mạnh (bằng ngôn ngữ SQL).

Một số khái niệm của mô hình quan hệ

Mô hình quan hệ là cách thức biểu diễn dữ liệu dưới dạng các quan hệ (các bảng). Một quan hệ là một bảng dữ liệu 2 chiều (cột và dòng), mô tả một thực thể. Mỗi cột tương ứng với một thuộc tính của thực thể. Mỗi dòng chứa các giá trị dữ liệu của một đối tượng cụ thể thuộc thực thể

Một số khái niệm cơ bản

Lược đồ quan hệ: R(A1,…,An), trong đó R là tên quan hệ, Ai là các thuộc tính, mỗi Ai có miền giá trị tương ứng dom(Ai).

Lược đồ quan hệ được sử dụng để mô tả một quan hệ, bao gồm: Tên quan hệ, các thuộc tính và bậc của quan hệ (số lượng các thuộc tính)

Quan hệ

Một quan hệ r của R(A1,...,An), ký hiệu r(R) là một tập hợp n-bộ r={ t1, ..., tm} Trong đó:

Mỗi ti =<v1, ...,vn>, vi ∈ dom(Ai).

r(R) ⊆ dom(A1) x .... x dom(An)

r = { (vi1,vi2,...,vin) / i=1,...,m}

v11 v12 V1n

v21 v22 v2n

......

vm1 vm2 vmn

A1 A2 Am

Ta có Ai là các thuộc tính và miền giá trị của Ailà:

D1=dom(A1), D2=dom(A2),...., Dn=dom(An).

  • Các tập (D1,D2,...,Dn) là tập các miền trị của R
  • n được gọi là bậc của quan hệ r.
  • m được gọi là lực lượng của r.
  • Quan hệ bậc 1 là quan hệ nhất nguyên, bậc 2 là quan hệ nhị nguyên, bậc n là quan hệ n nguyên.>

Quan hệ EMPLOYEE trên tập các thuộc tính R={SSN, Name, BDate, Address, Salary} là một quan hệ 5 ngôi.

Quan hệ EMPLOYEE
SSN Name BDate Address Salary
001 Đỗ Hoàng Minh 1960 Hà nội 425 t1
002 Đỗ Như Mai 1970 Hải Phòng 390 t2
003 Đặng Hoàng Nam 1973 Hà nội 200 t3

t1(001, ‘Đỗ Hoàng Minh’, 1960, ‘Hà nội’ , 425) = t1(R) là một bộ của quan hệ EMPLOYEE

Các tính chất của một quan hệ

  • Giá trị đưa vào cột là đơn nhất
  • Các giá trị trong cùng một cột phải thuộc cùng một miền giá trị (cùng kiểu)
  • Thứ tự dòng cột tuỳ ý.

Các ràng buộc toàn vẹn trên quan hệ

Ràng buộc là những quy tắc được áp đặt lên trên dữ liệu đảm bảo tính tin cậyđộ chính xáccủa dữ liệu. Các luật toàn vẹn được thiết kế để giữ cho dữ liệu phù hợp và đúng đắn.

Có 4 kiểu ràng buộc chính: Ràng buộc miền giá trị (Domain Constraints), Ràng buộc khoá (Key Constraints), Ràng buộc thực thể (Entity Integrity Constraints), và Ràng buộc toàn vẹn tham chiếu (Referential Integrity Constraints).

Ràng buộc miền giá trị

Là một hợp các kiểu dữ liệu và những giá trị giới hạn mà thuộc tính có thể nhận được. Thông thường việc xác định miền giá trị của các thuộc tính bao gồm một số các yêu cầu sau: Tên thuộc tính, Kiểu dữ liệu, Độ dài dữ liệu, khuôn dạng của dữ liệu, các giá trị giới hạn cho phép, ý nghĩa, có duy nhất hay không, có cho phép giá trị rỗng hay không.

Ràng buộc khoá

Khóa chính (Primary Key)

Khóa chính là một (hoặc một tập) các thuộc tính đóng vai trò là nguồn của một phụ thuộc hàm mà đích lần lượt là các thuộc tính còn lại.

R={SSN, Name, BDate, Address, Salary}

SSN→ Name, BDate, Address, Salary

(Nguồn)→ (Đích)

Ta thấy, từ SSN ta có thể suy ra toàn bộ các thuộc tính ứng. Vậy SSN được gọi là khóa chính.

Một số gợi ý khi chọn khóa

  • Khóa không nên là tập hợp của quá nhiều thuộc tính. Trong trường hợp khóa có nhiều thuộc tính, có thể thêm một thuộc tính “nhân tạo” thay chúng làm khóa chính cho quan hệ.
  • Nếu khóa chính được cấu thành từ một số thuộc tính, thì các thành phần nên tránh sử dụng thuộc tính có giá trị thay đổi theo thời gian: như tên địa danh, phân loại.

Khóa dự tuyển (Candidate Key)

Trong tập hợp các thuộc tính của một bảng, có thể có nhiều thuộc tính có thể dùng được làm khóa chính. Các thuộc tính đó được gọi là khóa dự tuyển.

Khóa dự tuyển cần thỏa mãn 2 tính chất sau:

  • Xác định duy nhất.
  • Không dư thừa: Khi xóa đi bất kỳ một thuộc tính nào của khóa đều phá hủy tính xác định duy nhất của khóa.

Khóa ngoại (Foreign Key)

Trong nhiều trường hợp, khóa chính của một bảng được đưa sang làm thuộc tính bên bảng khác, thuộc tính đó gọi là khóa ngoại. Khóa ngoại đóng vai trò thể hiện liên kết giữa 2 bảng.

Khóa phụ (Second Key)

Đóng vai trò khi ta muốn sắp xếp lại dữ liệu trong bảng.

Ta có bảng SINHVIEN (MaSV, Hoten, GioiTinh, Diem).

Muốn sắp xếp lại danh sách sinhviên theo thứ tự a, b, c.. của Họ tên. Khi đó thuộc tính Hoten được gọi là khóa phụ.

Ràng buộc thực thể

Mỗi một lược đồ quan hệ R, chúng ta phải xác định khoá chính của nó. Khoá chính trong lược đồ quan hệ được gạch chân ở phía dưới của thuộc tính.

Sau đây là danh sách các lược đồ quan hệ trong cơ sở dữ liệu COMPANY sau khi xác định ràng buộc thực thể

Lược đồ cơ sở dữ liệu COMPANY

Một thể hiện của cơ sở dữ liệu COMPANY

Ràng buộc khoá và ràng buộc thực thể được xác định cho từng quan hệ.

Ràng buộc toàn vẹn tham chiếu

Một bộ giá trị trong một quan hệ tham chiếu tới một bộ giá trị đã tồn tại trong một quan hệ khác.

Ràng buộc toàn vẹn tham chiếu phải xác định trên 2 quan hệ: quan hệ tham chiếu (referencing relation) và quan hệ được tham chiếu (referenced relation).

Ràng buộc toàn vẹn tham chiếu

Ràng buộc toàn vẹn tham chiếu còn được gọi là ràng buộc khoá ngoại.

Thuộc tính DNo của quan hệ EMPLOYEE tham chiếu tới thuộc tính DNumber của quan hệ DEPARTMENT.

Các ràng buộc tham chiếu trong cơ sở dữ liệu COMPANY

Các phép toán trên CSDL quan hệ

Phép toán cập nhật

Phép chèn (INSERT): Là phép bổ xung thêm một bộ vào quan hệ r cho trước.

+ Biểu diễn: INSERT(r; A1=d1,A2=d2,...,An=dn) với Ailà thuộc tính, di thuộc dom(Ai), i=1,..,n.

Nếu thứ tự các trường là cố định, có thể biểu diễn phép chèn dưới dạng không tường minh INSERT(r; d1,d2,..., dn).

Chèn thêm một bộ t4=(‘004’, ‘Hoàng Thanh Vân’,1969, ‘Hà nội’, 235) vào quan hệ EMPLOYEE(SSN, Name, BDate, Address, Salary) ta có thể viết:

INSERT(EMPLOYEE; SSN= ‘004’, Name= ‘Hoàng Thanh Vân’, BDate=1969, Address= ‘Hà nội’, Salary=235).

Kết quả của phép chèn có thể gây ra một số sai sót là

- Bộ mới được thêm không phù hợp với lược đồ quan hệ cho trước

- Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính đó.

- Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ.

Phép loại bỏ (DEL): Là phép xoá một bộ ra khỏi một quan hệ cho trước.

- Biểu diễn : DEL(r; A1=d1,A2=d2,...,An=dn) hay DEL((r, d1,d2,..., dn).

Nếu K=(E1,E2,...,Em) là khoá thì có thể viết DEL(r; E1=e1,E2=e2,...,Em=em)

+ Để xoá bộ t1 ra khỏi quan hệ r:

DEL(EMPLOYEE; SSN= ‘004’, Name= ‘Hoàng Thanh Vân’, BDate=1969, Address= ‘Hà nội’, Salary=235).

+ Cần loại bỏ một nhân viên trong quan hệ EMPLOYEE mà biết SSN đó là ‘004’ thì chỉ cần viết: DEL(EMPLOYEE; SSN= ‘004’)

Phép cập nhật (UPDATE): Là phép tính dùng để sửa đổi một số giá trị nào đó tại một số thuộc tính.

+ Biểu diễn :

UPD (r; A1=d1,A2=d2,...,An=dn; B1=b1,B2=b2,...,Bk=bk)

Với {B1,B2,...,Bk} là tập các thuộc tính mà tại đó các giá trị của bộ cần thay đổi. {B1,B2,...,Bk} ứng với tập thuộc tính {A1,A2,...,An}

Hay UPD(r; E1=e1,E2=e2,...,Em=e; B1=b1,B2=b2,...,Bk=bk) với K=(E1,E2,...,Em) là khoá.

Để thay đổi tên nhân viên có SSN= ‘003’ trong quan hệ EMPLOYEE thành Nguyễn Thanh Mai ta có thể viết :

CH (EMPLOYEE; SSN= ‘03’; Name= ‘Nguyễn Thanh Mai’)

Phép toán đại số quan hệ

Đại số quan hệ gồm một tập các phép toán tác động trên các quan hệ và cho kết quả là một quan hệ.

Có 8 phép toán được chia làm 2 nhóm : Nhóm các phép toán tập hợp (hợp, giao, trừ, tích đề các), nhóm các phép toán quan hệ ( chọn, chiếu, kết nối, chia).

Định nghĩa : Hai quan hệ r và s được gọi là khả hợp nếu chúng được xác định trên cùng một tập các miền giá trị (Có nghĩa là chúng được xác đinh trên cùng một tập các thuộc tinh).

Phép hợp

- Phép hợp của hai quan hệ khả hợp r U s = {t / t thuộc r hoặc t thuộc s}

Phép hợp

- Phép hợp của hai quan hệ là phép gộp các bộ của hai bảng của một quan hệ thành một bảng và bỏ đi các bộ trùng.

Minh họa dữ liệu phép hợp 2 quan hệ

Phép giao

- Phép giao của hai quan hệ khả hợp r ∩ s ={t / t thuộc r và t thuộc s}

Phép giao

- Phép giao của hai quan hệ là lấy ra các bộ cùng có mặt ở cả hai bảng của một quan hệ.

EMPLOYEE1 ∩ EMPLOYEE2 = 002, Thiện, P002

Phép trừ

- Phép trừ của hai quan hệ khả hợp r - s = {t / t thuộc r và t không thuộc s}

Phép trừ

- Phép trừ của hai quan hệ A và B là lấy các bộ có trong bảng A mà không có trong bảng B.

EMPLOYEE1 - EMPLOYEE2 = 001, Hoàng, P001

EMPLOYEE2 - EMPLOYEE1

EMPLOYEE2 - EMPLOYEE1

Phép tích đề các 

- Cho quan hệ r(R), R={A1,A2,...,An} và quan hệ s(U), U={B1,B2,...,Bm}

- Tích đề các :

r x s ={t=(a1,a2,...,an, b1,b2,...,bm) /a1,a2,...,an Єr và b1,b2,...,bmЄs}

Phép tích đề các

Bậc k = bậc r + bậc s , lực lượng k = lực lượng r x lực lượng s

Phép tích đề các là phép toán đắt nhất trong các phép toán của đại số quan hệ.

Phép chọn (cắt ngang) - một ngôi

- Là phép toán lọc ra một tập con các bộ của quan hệ đã cho theo biểu thức chọn F.

- Biểu thức chọn F là một tổ hợp logic các toán hạng, mỗi toán hạng là một phép so sánh đơn giản giữa hai thuộc tính hoặc giữa một thuộc tính và một giá trị hằng.

- Phép toán logic: AND (và), OR (hoặc), NOT (phủ định).

- Phép toán so sánh : <, >, =, >=, <=, <>

- Phép chọn trên quan hệ r với biểu thức chọn F

σF(r) = { t thuộc r / F(t) đúng}

Ví dụ Phép chọn (cắt ngang) - một ngôi

Bậc r = bậc r'; lực lượng của r >= lực lượng của r'

-Phép chọn trên quan hệ là lấy ra các dòng của bảng quan hệ thoả mãn một điều kiện nào đó trên tập các cột thuộc tính.

Chọn trên quan hệ EMPLOYEE3 các nhân viên thuộc phòng có DNo=P001

Quan hệ Employee

Phép chiếu (cắt dọc ) - 1 ngôi

- Là phép toán loại bỏ đi một số thuộc tính và chỉ giữ lại một số thuộc tính được chỉ ra của một quan hệ.

- Cho quan hệ r(R), X là tập con của tập thuộc tính R. Phép chiếu của quan hệ r trên X : ΠX(r) = { t[X]/ thuộc r}; t[X] là bộ t lấy trên tập thuộc tính X.

Cho r(A,B) như trên , X={A};

Phép chiếu (cắt dọc ) - 1 ngôi

- Bậc của r > bậc của k. Lực lượng của r > lực lượng của k

- Phép chiếu trên quan hệ là lấy một số cột (thuộc tính) nào đó của bảng quan hệ.

Lấy danh sách mã NV của quan hệ NHANVIEN

Lấy danh sách mã NV của quan hệ NHANVIEN

Phép kết nối - 2 ngôi

a.Phép kết nối

- Cho hai quan hệ r(R), R={A1,A2,...,An} và quan hệ s(U), U={B1,B2,...,Bm}.

- Phép xếp cạnh nhau: cho hai bộ d = (d1,d2,...,dn) và e = (e1,e2,...,em) phép xếp cạnh nhau của d và e là : (d^e) = (d1,d2,...,dn, e1,e2,...,em)

- Phép kết nối giữa quan hệ r có thuộc tính A và quan hệ s có thuộc tính B với một phép so sánh θ là :

r >< s = {a^b / a thuộc r, b thuộc s và a(A) θ b(B)}

Xét quan hệ r và s trong ví dụ phép tích đề các

Quan hệ r và s trong ví dụ phép tích đề các

- Lực lượng của phép kết nối k' <= lực lượng của phép tích đề các k.

Lực lượng của phép kết nối
  • Để phép kết nối có nghĩa, miền trị dom(A) phải so sánh đ
  • Nếu phép so sánh θ là "=" thì phép kết nối gọi là kết nối bằng.

b. Phép kết nối tự nhiên

Phép toán kết nối bằng trên những thuộc tính cùng tên của hai quan hệ và sau khi kết nối thì cắt bỏ đi một thuộc tính cùng tên bằng phép chiếu của đại số quan hệ được gọi là phép kết nối tự nhiên ký hiệu *.

Phép kết nối tự nhiên

Cho hai quan hệ NHANVIEN và PHONG

Minh họa dữ liệu phép kết nối tự nhiên 2 quan hệ

Phép chia

- Cho r là một quan hệ n- ngôi, s là quan hệ m- ngôi (n>m, s khác rỗng). Phép chia quan hệ r cho quan hệ s là tập tất cả các n-m bộ t sao cho với mọi bộ u thuộc s thì bộ (t^u) thuộc r : r ÷ s = {t / với mọi u thuộc s thì (t^u) thuộc r}

Phép chia
  • Ví dụ với hai quan hệ : PRODUCT và SUPPORT
Minh họa dữ liệu phép chia 2 quan hệ
0