Quan sát một bảng dữ liệu ta thấy nó được tổ chức theo hàng và cột, cột biểu thị một thuộc tính thông tin cần quản lý của một đối tượng, thuộc tính này có tên gọi tiêu đề cột và các giá
Trang 31 Cơ sở dữ liệu quan hệ
2 Ngôn ngữ hỏi có cấu trúc SQL
Tóm tắt chương 2
Câu hỏi ôn tập chương 2 Bài tập
Trang 41.2 Các phép tính trên quan hệ 1.3 Đại số quan hệ
Trang 51 Cơ sở dữ liệu quan hệ
1.1 Khái niệm cơ bản
Một cách giải thích rất trực quan cho mô hình dữ liệu quan hệ là các dữ liệu của bài toán quản lí được tổ chức dưới dạng các bảng dữ liệu Quan sát một bảng dữ liệu ta thấy nó được tổ chức theo hàng và cột, cột biểu thị một thuộc tính thông tin cần quản lý của một đối tượng, thuộc tính này có tên gọi (tiêu đề cột) và các giá trị thuộc tính trong cột đó có cùng một kiểu giá trị Tập hợp tất cả các giá trị thuộc tính trên một hàng là dữ liệu về một đối tượng đang được quản lí.
Giả sử ta có tập n thuộc tính về một CSDL được kí hiệu là tập R={A 1 , A 2 ,…
A n }, mỗi thuộc tính A i i = 1,…, n có một miền giá trị Dom (A i ).
Quan hệ trên tập thuộc tính R là một tập con của tích Đề các các miền giá trị Dom (A i ).
r Dom (A⊆ 1 ) x Dom (A 2 ) x… x Dom (A n )
Trang 71 Cơ sở dữ liệu quan hệ
1.1 Khái niệm cơ bản
Ví dụ 2.2:
R = {SốBD, Họ, Đệm, Tên, Giới tính}
Dom (SốBD) = {SP1, SP2, SP3,… } tập hợp kí hiệu mã số cho người.
Dom (Họ) = {Nguyễn, Trần, Lê, Đỗ, …} tập hợp họ của người Việt Nam Dom (Đệm) = { Văn, Thị,… } tập họ đệm của người Việt Nam
Dom (Tên) là tập hợp các người Việt Nam
Dom (Giới tính) = { Nam, Nữ}
Tập hợp sau là một quan hệ trên tập thuộc tính R:
r = { (SP1, Trần, Văn, A, Nam), (SP2, Lê, Thị, B, Nữ), (SP3, Trần, Văn,
Trang 8P = {SốBD, Điểm}
Dom (SốBD) = {SP1, SP2, SP3,…} tập hợp mã số cho người thi
Dom (Điểm) tập giá trị thập phân trong đoạn từ 0 đến 10 là điểm thi.
Tập hợp sau là một quan hệ trên tập thuộc tính P:
có thuộc tính này thì trong quan hệ được mô tả có hai bộ có giá trị giống hệt nhau tuy rằng đó là thông tin về hai đối tượng khác nhau.
Trang 91 Cơ sở dữ liệu quan hệ
1.1 Khái niệm cơ bản
Nếu trong một CSDL có nhiều hơn một quan hệ, chẳng hạn các quan hệ được mô tả trong ví dụ 2.2 và ví dụ 2.3 là hai quan hệ trong cùng một CSDL quản lí một kì thi, thì các bộ trong quan hệ đó phải liên quan đến nhau, khi đó để xác định sự liên quan dữ liệu mỗi quan hệ phải có một khoá kết nối Thuộc tính SốBD chính khoá kết nối của quan hệ r và quan hệ q, khoá này cho phép liên kết bằng hai bộ thuộc hai quan hệ nếu giá trị của khoá kết nối là bằng nhau Mô hình kết nối như sau:
Trang 10Có ba phép tính cơ bản trên một quan hệ: Phép thêm bộ, Phép xoá bộ, Phép cập nhật giá trị trong bộ; nhờ ba phép tính này mà một quan hệ được biến đổi Trong các hệ quản trị CSDL khác nhau các phép tính ở này được biểu diễn khác nhau, biểu diễn của các phép tính ở dưới đây chỉ có tính hình thức Giả sử ta có quan hệ r trên tập thuộc tính {A 1 , A 2 , …, A n } khoá của quan hệ là thuôc tính A k
Phép thêm bộ
Phép xoá bộ
Phép cập nhật
Trang 111 Cơ sở dữ liệu quan hệ
1.2 Các phép tính trên quan hệ
Phép thêm bộ
Phép tính này bổ sung một bộ vào một quan hệ Ta kí hiệu phép thêm
bộ là Insert (r; A 1 = a 1 , A 2 = a 2 , … , A n = a n ) hoặc nếu coi thứ tự thuộc tính là cố định thì ta có thể viết Insert (r; a 1 , a 2 , …, a n ), kết quả là một bộ (a 1 , a 2 , …, a n ) được bổ sung vào quan hệ.
Trang 12 Phép thêm bộ
Sau khi thực hiện phép toán Insert (r; SốBD = SP4, Họ = Nguyễn, Đệm = Văn, Tên = C, Giới tính = Nam) ta có quan hệ r đã được biến đổi thành:
Trang 131 Cơ sở dữ liệu quan hệ
1.2 Các phép tính trên quan hệ
Phép xoá bộ
Phép tính này xoá đi một bộ đã có trong quan hệ Ta kí hiệu phép xoá
bộ là Delete (r; A 1 = a 1 , A 2 = a 2 , … A n = a n ) hoặc nếu coi thứ tự thuộc tính là cố định thì ta có thể viết Delete (r; a 1 , a 2 , …, a n ), hoặc nếu có thuộc tính khoá A k thì có thể viết Delete (r; A k =a k ) với a k là giá trị khoá của bộ muốn xoá
Trang 151 Cơ sở dữ liệu quan hệ
Trang 161 2
thuộc tính.
1.3.1 Phép hợp 1.3.2 Phép giao 1.3.3 Phép trừ 1.3.4 Phép chiếu 1.3.5 Phép chọn 1.3.6 Phép lấy tích Đềcác 1.3.7 Phép kết nối
1.3.8 Phép chia 1.3.9 Ngôn ngữ đại số trong hệ quản trị cơ sở dữ liệu FoxPro 1.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ 1.3.11 Tối ưu biểu thức
Trang 171.3 Đại số quan hệ
1.3.1 Phép hợp Cho hai quan hệ r 1 và r 2 khả hợp, cùng xác định trên tập thuộc tính R, phép hợp của hai qua hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập thuộc tính R và chứa tất cả các bộ của hai quan hệ r 1 và r 2
Trang 18Cho hai quan hệ r 1 và r 2 khả hợp, cùng xác định trên tập thuộc tính R, phép giao của hai qua hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập thuộc tính R và chứa tất cả các bộ của hai quan hệ r 1 và r 2
Trang 191 Cơ sở dữ liệu quan hệ
1.3 Đại số quan hệ
1.3.3 Phép trừ Cho hai quan hệ r 1 và r 2 khả hợp, cùng xác định trên tập thuộc tính R, phép trừ của hai qua hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập thuộc tính R và bao gồm các bộ thuộc r 1 và không thuộc r 2
Trang 20Cho quan hệ r xác định trên tập thuộc tính R, X là một tập con thuộc tính của tập R Giả sử t là một bộ thuộc tập quan hệ r, cách viết t(X) là để chỉ một thu gọn
bộ trên tập thuộc tính X Ví dụ: R = ( Họ, Tên, Giới Tính ) , X = {Họ, Tên} , t
= (Trần, A, Nam) thì t(X) = (Trần, A).
Ta kí hiệu phép chiếu quan hệ r trên tập con thuộc tính X là П X (r) phép chiếu cho kết quả là một quan hệ trên tập thuộc tính X bao gồm các thu gọn của tất cả các bộ của quan hệ r.
П X (r) = { t(X) | t ∈ r}
Ví dụ 2.10: R = { Họ, Tên, Giới Tính } , X = { Họ, Tên }
r 1 { Họ Tên Giới tính } П X (r) { Họ Tên }
Trần E Nữ Trần B Nam Trần E Nam
Trần E Trần B
Trang 211 Cơ sở dữ liệu quan hệ
1.3 Đại số quan hệ
1.3.5 Phép chọn Cho quan hệ r xác định trên tập thuộc tính R, F là một biểu thức logic xác định trên miền giá trị của thuôc tính thuộc tập R Phép chọn trên quan hệ r theo biểu thức logic F sinh ra một quan hệ cùng xác định trên tập thuộc tính R chứa tất cả các bộ trong quan hệ r mà các giá trị của nó thoả mãn biểu thức logic F Ta kí hiệu phép chọn là δ F (r).
δ F (r) = { t| t ∈ r và F(t) là đúng } R={Họ, Tên, Giới tính}, F là biểu thức : Giới tính = ‘Nam’
Ví dụ 2.11:
r { Họ Tên Giới tính } δ F (r) { Họ Tên Giới tính }
Trần E Nữ Trần B Nam Trần C Nam
Trần B Nam Trần C Nam
Trang 22Cho quan hệ r 1 xác định trên tập thuộc tính R 1 và quan hệ r 2 xác định trên tập thuộc tính R 2 với t 1 ∈ r 1 và t 2 ∈ r 2 ta viết t 1 t 2 để chỉ một sự ghép nối tiếp các giá trị của hai bộ t 1 và t 2 , lưu ý rằng ta không quan tâm đến thứ tự các thuộc tính trong tập thuộc tính của một quan
hệ nên t 1 t 2 cho giá trị tương đương với t 2 t 1 Ví dụ: t 1 = (Trần, A, Nam),
t 2 = (SF001, Hà Nội) ta sẽ có t 1 t 2 = t 2 t 1 = (Trần, A, Nam, SF001, Hà Nội).
Phép lấy tích Đềcác các quan hệ r 1 và r 2 cho ta một quan hệ xác định trên tập thuộc tính R 1 ∪ R 2 các bộ của tích Đềcác được định nghĩa như sau:
r 1 x r 2 = {tq| t ∈ r 1 và q ∈ r 2 }
Continue
Trang 231.3.6 Phép lấy tích Đềcác
Ví dụ 2.12:
r 1 { Họ } r 2 { Tên Giới tính }
Trần Đỗ Nguyễn
r 1 x r 2 { Họ Tên Giới tính }
Trần A Nữ Trần B Nam
Nguyễn A Nữ Nguyễn B Nam
Trang 24Cho quan hệ r 1 xác định trên tập thuộc tính R 1 và quan hệ r 2 xác định trên tập thuộc tính R 2 Ta dùng kí hiệu θ để chỉ một trong 6 phép so sánh <, ≤, =, ≥, >, ≠ Giả sử trong tập thuộc tính R 1 , có thuộc tính A
và trong tập thuộc tính R 2 , có thuộc tính B và các giá trị của nó có thể so sánh được với nhau (cùng là tập con của một miền giá trị) Một biểu thức lôgic được xây dựng trên phép so sánh AθB được gọi là toán tử kết nối.
Phép kết nối hai quan hệ r 1 và r 2 trên cơ sở AθB cho ta một quan hệ thứ ba có tập thuộc tính là R 1 ∪ R 2 và các bộ của nó được định nghĩa như sau:
r 1 ⊗ r 2 = { tq| t ∈ r 1 , q ∈ r 2 và t(A) θ q(B) là đúng }
AθB Continue
Trang 251 Cơ sở dữ liệu quan hệ
Ta có kết quả như sau:
r 1 {Họ Tên NămLênLương } r 2 {MốcTăngLương Ghichú}
Trần E 2000 Trần B 1999 Trần C 2003
2000
Trang 26r 1 ⊗ r 2 { Họ Tên NămLênLương MốcTăngLương Ghichú }
Trang 271.3.7 Phép kết nối
Ví dụ 1.14.
Trong quản lý điểm thi ta có hai quan hệ, quan hệ r1 chứa hồ sơ thí sinh, quan hệ r2 chứa kết quả thi Để được một kết quả đầy đủ thông tin cho người dự thi ta phải ghép điểm thi vào hồ sơ cho từng người phép kết nối tự nhiên.
r 1 { SốBD Họ Tên Giới tính } r 2 { SốBD Điểm }
SP1 Trần A Nam SP2 Trần B Nam SP3 Trần A Nam
SP1 4.5 SP2 7.5 SP3 6.0
r 1 * r 2 {SốBD Họ Tên Giới tính Điểm}
SP1 Trần A Nam 4.5 SP2 Trần B Nam 7.5 SP3 Trần C Nam 6.0
Trang 28trên tập thuộc tính R 2 , R 2 ⊆ R 1 Phép chia quan hệ r 1 cho quan hệ r 2 sinh ra một quan hệ thứ ba được định nghĩa như sau:
r 1 ÷ r 2 = { t| ∀ u ∈ r 2 , ta có tu ∈ r 1 }
Ví dụ 2 15:
Giả sử ta có quan hệ r 1 chứa dữ liệu điểm các học phần của các sinh viên, r 2 là quan hệ chứa dữ liệu là các mã số học phần Phép chia cho biết sinh viên nào đã có điểm tất cả các học phần.
П SBD, MãHọcPhần (r 1 ) ÷ r 2 {SBD}
SP1
Trang 291 Cơ sở dữ liệu quan hệ
1.3 Đại số quan hệ
1.3.9 Ngôn ngữ đại số trong hệ quản trị cơ sở dữ liệu FoxPro Trong hệ quản trị cơ sở dữ liệu họ Foxpro quan hệ đựoc thể hiện dưới dạng tập tin *.DBF (Database File) Trong tập tin DBF, thuộc tính được gọi là trường (Field), bộ là các bản ghi (Record), miền giá trị thuộc tính phụ thuộc vào kiểu dữ liệu của trường (Type) Trong các hệ quản trị cơ sở dữ liệu họ Foxpro các phép toán đại số không được cài đặt đầy đủ.
Phép hợp được thể hiện qua câu lệnh Append From <tên DBF> Câu lệnh này cho phép ghép một tệp DBF vào cuối một tệp DBF khác đang mở, dạng mềm dẽo của thao tác này cho phép hai tệp DBF khôn gcần khả hợp, khi đó chỉ những trường trùng tên mới được ghép dữ liệu.
Trang 30Fields <Danh sách trường>.
Trong câu lệnh sao DBF: COPY TO <tên DBF> Fields <danh sách các trường được copy> Kết quả được một DBF mới với tập các trường là tập con của tập các trường của DBF được sao
Trong câu lệnh xem, cập nhật DBF: BROWSER Fields <danh sách trường >… cho kết quả là một bảng thể hiện một quan hệ mới với số thuộc tính được chỉ ra trong danh sách sau mệnh đề fields.
Ngoài ra trong tất cả các câu lệnh khác có sử dụng mệnh đề fields đều thể hiện phép chiếu trên tập con các thuộc tính.
Phép chọn được thể hiện trong nhiều câu lệnh, chỉ thị bằng mệnh đề FOR <biểu thức logic>, mệnh đề này được sử dụng trong khá nhiều câu lệnh nhằm mục đích chọn một số bàn ghi thoả mãn những điều kiện
Trang 311.3.9 Ngôn ngữ đại số trong hệ quản trị cơ sở dữ liệu FoxPro Phép kết nối: Có hai dạng kết nối điển hình là kết nối logic và kết nối vật lý.
Kết nối logic thể hiện qua các thao tác đặt quan hệ: SET RELATION
… Với kiểu kết nối này không tạo ra DBF mới, nhưng hai bản ghi trên hai DBF thoả mãn điều kiện kết nối sẽ được coi như là một bản ghi.
Kết nối vật lý thể hiện qua câu lệnh JOIN WITH … Thực chất đây là phép lấy tích đềcác của hai DBF, các phép kết nối và kết nối tự nhiên thể hiện qua điều kiện kết nối.
Trang 32 Quan hệ Co với tập thuộc tính {Sohieu, TenCo, Von, DiaChi}, chứa dữ
liệu quản lý các công ty
Quan hệ Pr với tập thuộc tính {Mahieu, TenPr, Mau, TLuong, DiaChi},
chứa dữ liệu quản lý các mặt hàng.
Quan hệ Pj với tập thuộc tính {MaPj, TenPj, DiaChi}, chứa dữ liệu các
nơi mua hàng
.Quan hệ CPP với tập thuộc tính {Sohieu, Mahieu, MaPj, SoLuong,
DonGia}, chứa dữ liệu quản lý các chuyến hàng được cung ứng.
Các truy vấn:
Ví dụ 2.16: Cho biết số hiệu của các công ty có bán mặt hàng P1.
Ví dụ 2.17: Cho biết mã hiệu các mặt hàng đã cung ứng .
Ví dụ 2.18: Cho biết tên các công ty ở Hà Nội có vốn lớn hơn 1 tỷ đồng.
Ví dụ 2.19: Cho biết tên các công ty đã cung cấp mặt hàng P1.
Ví dụ 2.20: Cho biết tên các công ty đã cung cấp các mặt hàng màu đỏ.
Trang 331.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ
Quan hệ Co với tập thuộc tính {Sohieu, TenCo, Von, DiaChi}, chứa dữ liệu quản lý các công ty
Sohieu: Số hiệu để quản lý công ty bán hàng
TenCo: Tên công ty bán hàng.
Von: Số vốn đăng ký kinh doanh của công ty (đơn vị triệu đồng)
DiaChi: Địa chỉ công ty (ta chỉ giới hạn đến tỉnh, thành phố)
{Sohieu TenCo Von DiaChi}
Trang 34chứa dữ liệu quản lý các mặt hàng
Mahieu: Mã hiệu mặt hàng TenPr: Tên mặt hàng
Mau: Màu sắc mặt hàng TLuong: Trọng lượng mặt hàng DiaChi: Địa chỉ kho nơi chứa hàng {Mahieu TenPr Mau TLuong DiaChi}
Trang 351.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ
Quan hệ Pj với tập thuộc tính {MaPj, TenPj, DiaChi}, chứa dữ liệu các nơi mua hàng
MaPj: Mã số của nơi mua hàng TenPj: Tên của đơn vị mua hàng DiaChi: Địa chỉ nơi mua hàng (ta chỉ giới hạn đến tỉnh, thành phố)
{MaPj TenPj DiaChi}
Trang 36DonGia}, chứa dữ liệu quản lý các chuyến hàng được cung ứng.
Sohieu: Số hiệu công ty cung ứng.
Mahieu: Mã hiệu mặt hàng được cung ứng
MaPj: Mã số của đơn vị mua hàng
SoLuong: Số lượng hàng được cung ứng trong chuyến hàng đó.
DonGia: Đơn giá của mặt hàng được cung ứng trong chuyến hàng đó.
{Sohieu Mahieu MaPj SoLuong DonGia}
Trang 371.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ
Ví dụ 2.16: Cho biết số hiệu của các công ty có bán mặt hàng P1.
Với yêu cầu này thông tin cần lấy là thuộc tính số hiệu với điều kiện là chỉ chọn số hiệu của công ty có bán mặt hàng với mã hiệu là P1, dữ liệu cần thiết chỉ nằm trong quan hệ CPP
ΠSoHieu (δMaHieu=’P1’ (CPP))
Ta cũng có thể biểu diễn quá trình xữ lý bằng sơ đồ sau:
ΠSoHieu
δMaHieu=’P1’
Trang 38Các quan hệ được sinh ra theo tuần tự :
δMaHieu=’P1’ (CPP) {Sohieu MaHieu MaPj SoLuong DonGia}
Trang 391.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ
Ví dụ 2.17: Cho biết mã hiệu các mặt hàng đã cung ứng .
Mã hiệu các mặt hàng đã được bán nằm trong quan hệ CPP
ΠMaHieu (CPP) {MaHieu}
P1 P4 P2
Trang 40Dữ liệu cần tìm nằm trên quan hệ Co.
ΠTenco (δ(Von≥1000) and (DiaChi=’Hà Nội’) (Co)) Co
δ(Von≥1000) and (DiaChi=’Hà Nội’) (Co) {Sohieu TenCo Von DiaChi}
ΠTenco (δ(Von≥1000) and (DiaChi=’Hà Nội’) (Co)) { TenCo }
Anh Đào Hoa Sữa
Trang 411.3.10 Một số ví dụ tìm kiếm bằng các phép toán đại số quan hệ
Ví dụ 2.19: Cho biết tên các ông ty đã cung cấp mặt hàng P1.
Ta nhận thấy rằng tên các công ty là dữ liệu chứa trong quan hệ Co,
mã hiệu mặt hàng được công ty đó bán nằm trong quan hệ CPP, hai quan
hệ này có thể liên kết với nhau bằng phép kết nối tự nhiên thông qua thuộc tính SoHieu (lưu ý là ta thực hiện trên CPP một phép chiếu trên tập hợp thuộc tính {SoHieu, MaHieu} nhằm làm giảm bớt không gian tìm kiếm).
ΠTenco (Co*δMaHieu=’P1’ ( ΠSoHieu,MaHieu (CPP)))