Các phép toán trên cơ sở dữ liệu quan hệ-Các phép toán cơ bản nhờ đó là CSDL được thay đổi là • Chèn insert • Loại bỏ delete • Thay đổi change - Trong mô hình quan hệ được nên trên th
Trang 1BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
CƠ SỞ DỮ LIỆU
Trang 2I Các khái niệm cơ bản
II Các phép toán cơ bản
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 3I Các khái niệm cơ bản
- Các thuộc tính của đối tượng sẽ nhận các giá trị trong miền.
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 41 Quan hệ
* Tích đề các của các miền
- Gọi D 1 , D 2 , D 3 , …, Dn là n miềm Tích đề các của n miền là D 1 x D 2 x
D 3 x …x D n là tập tất cả n bộ (n-tuples) (V 1 , V 2 ,…, V n ) sao cho V i thuộc D i với i = 1 n.
-Ví dụ, với n = 2, D1= {0,1}, D2 = {a,b,c}
Tích đề các của D1 x D2 = {(0,a), (0,b), (0,c),(1,a), (1,b), (1,c)}
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 51 Quan hệ
* Quan hệ (Ralation)
- Quan hệ là một tập con của tích đề các của một hoặc nhiều miền.
Như vậy ta có thể xem quan hệ là bảng 2 chiều (bảng quan hệ) có
các dòng và các cột:
• Các cột ứng với các miền.
• Các dòng ứng với các bộ của tích đề các.
- Do tích chất của tích đề các, thứ tự các cột cũng như thứ tự các dòng trong bảng là không quan trọng.
* Thuộc tính (Atribute)
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 61 Quan hệ
* Định nghĩa quan hệ một cách hình thức
Định nghĩa 1: Gọi R = {A 1 ,…, A n } là tập hữu hạn các thuộc tính, mỗi thuộc tính A i với i = 1 n có miền giá trị tương ứng là dom(A i ) Khi đó r
là quan hệ xác định trên tập thuộc tính R ký hiệu là r(R) hoặc r(A 1 ,
…,A n ) nếu r là tập con của tích đề các.
r dom(A1 )xdom(A 2 )x…xdom(A n )
Với định nghĩa quan hệ này thì chúng ta gọi R là sơ đồ (lược đồ)
quan hệ và nói quan hệ r xác định trên sơ đồ (lược đồ) quan hệ R.
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 71 Quan hệ
- Ví dụ: Hình 1 cho thấy quan hệ NHAN_VIEN bao gồm các thuộc tính HO_TEN, NAM_SINH, NOI_LAM_VIEC và LUONG
Khi đó t1 = (Lê văn A, 1960, Viện KHNV, 425) là một bộ của quan
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 82 Khóa (key)
Định nghĩa 2.1: Khóa của một quan hệ r trên tập thuộc tính R={A 1 ,
…,A n } là một tập con K{A 1 ,…,A n } thỏa mãn tính chất sau:
-Với bất kỳ 2 bộ t1, t2 thuộc r đều tồn tại một thuộc tính A thuộc K sao
cho t1(A) ≠ t2(A)
-Nói cách khác, không tồn tại 2 bộ mà có giá trị bằng nhau trên mọi
thuộc tính của K Khi đó ta có thể viết t1(K)≠t2(K) Do vậy mỗi giá trị của K là xác định duy nhất.
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 92 Khóa (key)
- Để có thể định nghĩa khóa một cách tốt hơn, lưu ý rằng, nếu K’ là khóa của quan hệ r(A1,…,An) thì với mọi K sao cho K’ K, K cũng là khóa của
r, nghĩa là bất kỳ t1, t2 thuộc r từ t1(K’)≠t2(K’) luôn có t1(K)≠t2(K)
Định nghĩa 2.2: Khóa tối thiểu của quan hệ r xác định trên tập thuộc
tính R là tập con K R sao cho bất kỳ 2 bộ khác nhau t 1 , t 2 thuộc r luôn thỏa t 1 (K)≠t 2 (K) và bất kỳ tập con thực sự K’ của K đều không có tính chất đó
- Thông thường người ta lựa chọn một khóa tối thiểu tốt nhất làm khóa chính của quan hệ, các khóa tối thiểu khác được xem là khóa dự
phòng
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 102 Khóa (key)
Định nghĩa 2.3: Một tập con K R được gọi là khóa ngọai của quan hệ r
xác định trên tập thuộc tính R tham chiếu đến quan hệ r’ nếu K là khóa chính của quan hệ r’.
- Ví dụ, Ta có quan hệ HANG_HOA như sau:
Trong quan hệ này thì MSMH là khóa Mỗi giá trị MSMH đều xác
định duy nhất một loại mặt hàng trong quan hệ HANG_HOA
I Các khái niệm cơ bản
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 11II Các phép toán trên cơ sở dữ liệu quan hệ
-Các phép toán cơ bản nhờ đó là CSDL được thay đổi là
• Chèn (insert)
• Loại bỏ (delete)
• Thay đổi (change)
- Trong mô hình quan hệ được nên trên thì các phép toán này đước áp
dụng cho từng bộ của các quan hệ lưu trữ trong máy.
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 121 Phép chèn (INSERT)
- Phép chèn là phép thêm một bộ vào quan hệ r(A1,…, An) có dạng r = r t.
- Nó có dạng: INSERT(r; A 1 =d 1 , A 2 =d 2 ,…,A n =d n ) Trong đó Ai với i=1 n
là tên của các thuộc tính và di thuộc vào dom(Ai) là các giá trị thuộc miền trị tương ứng của thuộc tính Ai.
- Ví dụ: Thêm một bộ t4 = (Vũ văn tần, 1960, Trường ĐHBK, 425) vào quan hệ NHAN_VIEN trong hình 1 như sau:
INSERT(NHAN_VIEN; HO_TEN = Vũ văn tần, NAM_SINH =
1960, NOI_LAM_VIEC = Trường ĐHBK, LUONG = 425).
- Nếu xem thứ tự các trường là cố định, khi đó ta có thể biểu diễn phép chèn như sau:
INSERT(r; d1,d2,…,dn).
II Các phép toán trên cơ sở dữ liệu quan hệ
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 131 Phép chèn (INSERT)
- Kết quả của phép chèn có thể gây ra một số sai sót với những
lý do sau:
II Các phép toán trên cơ sở dữ liệu quan hệ
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
•Bộ mới được thêm vào là 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 nằm ngoài miền giá trị của thuộc tính đó
•Giá trị khóa của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ
Trang 142 Phép loại bỏ (DEL)
- Phép loại bỏ là phép xóa một bộ ra khỏi quan hệ cho trước, nó có dạng: r=r – t
DEL (r;A 1 =d 1 ,A 2 =d 2 ,…,A n =d n ) hoặc DEL (r; d 1 ,d 2 ,…,d n ).
- Ví dụ, cần loại bỏ t1 từ quan hệ NHAN_VIEN trong hình 1 như sau:
DEL (NHAN_VIEN; Lê văn A, 1960, Viện KHNV, 425)
II Các phép toán trên cơ sở dữ liệu quan hệ
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 152 Phép loại bỏ (DEL)
- Tuy nhiên không phải lúc nào phép loại bỏ cũng cần đầy đủ thông tin
về cả bộ Nếu có giá trị về bộ đó tại thuộc tính khóa K={B1,…,Bn}khi đó phép loại bỏ chỉ cần viết:
DEL (r; B 1 =e 1 , B 2 =e 2 ,…,B i =e i ).
- Ví dụ, cần loại bỏ sắt phi 6 ra khỏi quan hệ HANG_HOA (hình 2), khi
đó chỉ cần viết:
DEL (HANG_HOA; MSMH=10101)
II Các phép toán trên cơ sở dữ liệu quan hệ
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 16II Các phép toán trên cơ sở dữ liệu quan hệ
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 17III Tổ chức dữ liệu vật lý
1 Mô hình tổ chức bộ nhớ ngoài
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
2 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
3 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
4 Tổ chức dữ liệu dạng B-cây (Balanced trees) (cây cân bằng)
Trang 18III Tổ chức dữ liệu vật lý
1 Mô hình tổ chức bộ nhớ ngoài
- Bộ nhớ ngoài được phân chia thành các khối vật lý có kích cỡ như
nhau Mỗi khối chiếm khoảng 512 bytes đến 4090 bytes và được đánh
địa chỉ khối Địa chỉ này là địa chỉ tuyệt đối trên đĩa.
- Mỗi tệp dữ liệu lưu trữ trên đĩa sẽ chiếm một hoặc nhiều khối, mỗi khối chứa một hoặc nhiều bản ghi Việc thao tác với các tệp dữ liệu sẽ thông qua tên của tệp mà thực chất là thông qua địa chỉ tuyệt đối của các khối.
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 191 Mô hình tổ chức bộ nhớ ngoài
- Các bản ghi đều có địa chỉ và thường được xem là địa chỉ tuyệt đối của byte đầu tiên của bản ghi hoặc là địa chỉ của khối chứa bản ghi đó.
- Địa chỉ của các bản ghi hoặc các khối thường được lưu ở một tệp hoặc một vị trí nào đó để khi cần, qua đó có thể truy nhập tới dữ liệu cần thiết Chỉ dẫn đó được gọi là con trỏ (pointer)
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 202 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.1 Tổ chức tệp dữ liệu
- Khái niệm hàm băm: Nếu mỗi bản ghi đều có một khóa là giá trị số
(ví dụ là x), hàm băm h(x) (đối số là x) nhận một giá trị trong khoảng [0,k] với k là một giá trị nguyên dương nào đó (thường lấy k là một số
nguyên tố) khi đó ta xác định hàm băm như sau: h(x) = x mod k.
- Tư tưởng cơ bản của tổ chức tệp băm là phân chia tập hợp các bản ghi của tệp dữ liệu thành các cụm Mỗi cụm bao gồm một hoặc nhiều khối Mỗi khối chứa một số lượng cố định các bản ghi.
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 212 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.1 Tổ chức tệp dữ liệu
- Mỗi cụm ứng với một địa chỉ băm Địa chỉ băm được đánh số từ 0 tới
k-1 Ở đầu mỗi khối đều chứa con trỏ tới khối tiếp theo trong cụm, khối cuối cùng trong cụm chứa con trỏ rỗng
- Có một bảng chỉ dẫn cụm chứa k con trỏ, mỗi con trỏ ứng với mỗi
cụm, đó là địa chỉ của khối đầu tiên trong cụm
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 222 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.1 Tổ chức tệp dữ liệu
- Ví dụ, hình 3 là mô hình tổ chức tệp băm với k cụm:
•Cụm 0 có 2 khối b1 và b2 Khối b2 có con trỏ rỗng “Null”.
Trang 232 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.1 Tổ chức tệp dữ liệu
- Nếu bảng chí dẫn có kích thước nhỏ thì có thể lưu ở bộ nhớ trong,
ngược lại phải lưu ở bộ nhớ ngoài
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 242 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.2 Các thao tác trên tổ chức tệp băm
2.2.1 Tìm kiếm một bản ghi
- Đê tìm bản ghi có khóa x trước hết ta phải tính hàm băm h(x).
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
- Giả sử h(x) = i, i sẽ là địa chỉ băm của cụm i
Tìm trong khối này xem liệu có bản ghi có khóa x hay không, theo con trỏ ở đầu khối tìm đến khối tiếp theo cho tới khi tìm được bản ghi
mong muốn hoặc tới khối cuối cùng của cụm i mà không có bản ghi đó
- Trong bảng chỉ dẫn cụm cho biết con trỏ tới khối đầu tiên (nếu có)
tương ứng với i
Trang 252 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.2 Các thao tác trên tổ chức tệp băm
2.2.2 Thêm một bản ghi
- Giả sử cần thêm bản ghi có khóa x vào tệp, thủ tục được thực hiện giống như việc tìm kiếm một bản ghi:
Nếu trong tệp đã có một bản ghi có trùng khóa x chứng tỏ bản ghi mới là sai.
Nếu không có bản ghi trùng khóa, bản ghi có khóa x được thêm vào khối đầu tiên trong cụm còn chỗ trống
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Nếu không còn chỗ trống nào trong mọi khối của cụm thì phải tạo thêm một khối mới, con trỏ null của khối cuối cùng được trỏ sang khối mới này Trong trường hợp này thì bản ghi mới sẽ là bản ghi đầu tiên của khối vừa được thiết lập và khối này trở
Trang 262 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.2 Các thao tác trên tổ chức tệp băm
2.2.3 Xóa một bản ghi
-Để xóa một bản ghi có khóa x, ta cũng sử dụng thủ tục tìm bản ghi
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
•Nếu bản ghi thuộc một khối nào đó có nhiều bản ghi khác, khi đó bản ghi có khóa x được loại bỏ
•Nếu bản ghi đó là duy nhất trong khối khi đó sẽ đồng thời việc giải phóng khối khỏi cụm chứa khối
Trang 272 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.2 Các thao tác trên tổ chức tệp băm
2.2.4 Sửa bản ghi
- Giả sử cần sửa một số trường của 1 bản ghi có khóa x
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
• Nếu trường cần sửa có tham gia trong khóa x, việc sửa sẽ loại bỏ bản ghi này và thêm vào bản ghi mới cho tệp
•Nếu trường cần sửa không thuộc khóa, sau khi sử dụng thủ tục tìm bản ghi cần thiết, tiến hành sửa giá trị trong các trường
Trang 282 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
- Cho quan hệ CUNG_CAP(S#, SNAME, STATUS, CITY) Khi đó mỗi bản ghi gồm:
•S#: Có kiểu số nguyên và chiếm 4 bytes và là trường khóa
•SNAME: Có kiểu ký tự chiếm 30 bytes
•STATUS: Có kiểu số nguyên chiếm 4 bytes
•CITY: Có kiểu ký tự chiếm 40 bytes
- Giả sử bây giờ ta lưu trữ tệp CUNG_CAP với 16 bản ghi, mỗi bản ghi chiếm 78 bytes theo tổ chức tệp băm với số cụm là 5
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 292 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
- Chúng ta sử dụng hàm băm h tác động lên giá trị khóa là một số nguyên như sau: h(x)=x mod5 với x là giá trị khóa cùa bản ghi Tổ chức băm được chỉ ra trong hình 4.
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 302 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
- Giả sử bây giờ chúng ta muốn thêm một bản ghi có khóa 32
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
•Trước hết chúng ta thực hiện tìm kiếm bản ghi có giá trị khóa là 32 Để tìm kiếm bản ghi này, ta tính hàm băm h(32) = 32 mod 5 =2
•Tra cứu bản chỉ dẫn cụm chúng ta biết con trỏ tới khối đầu tiên của cụm
có địa chỉ băm là 2 Ta thực hiện tìm kiếm trong cụm này và không có Như vậy bản ghi này chưa tồn tại Chúng ta sẽ thêm nó vào khối đầu tiên trong cụm còn chỗ trống (hình 5)
Trang 312 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 322 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
-Giả sử bây giờ chúng ta muốn xóa bản ghi có khóa 64.
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
• Trước hết chúng ta thực hiện tìm kiếm bản ghi có giá trị khóa là 64
•Ta tính hàm băm h(64)= 64mod5=4
•Tra cứu bảng chỉ dẫn cụm ta thấy con trỏ trỏ tới khối đầu tiên của cụm
có địa chỉ băm là 4
•Thực hiện tìm kiếm ta thấy 64 có ngay trong khối đầu tiên của cụm và bản ghi này thuộc một khối có nhiều bản ghi khác nữa Do đó bản ghi này được loại bỏ (hình 6)
Trang 332 Tổ chức dữ liệu dạng Tệp băm (Hashed File)
2.3 Ví dụ
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Trang 343 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
Là được áp dụng phổ biến nhất trong các hệ cơ sở dữ liệu.
Trang 353 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
- Tệp chỉ số bao gồm các cặp (k,d) trong đó k là giá trị của
khóa, d là địa chỉ của khối (hay con trỏ khối)
- Các cặp này được sắp xếp theo giá trị của khóa (hình 7)
Trang 363 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
3.1 Tổ chức tệp dữ liệu
Trang 373 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
3.1 Tổ chức tệp dữ liệu
- Mỗi khối trong tệp dữ liệu chính chứa một số lượng bản ghi
cố định và được đại diện bởi một cặp (k,d) trong tệp chỉ số, trong đó k là giá trị khóa của bản ghi đầu tiên trong khối và d
là địa chỉ khối.
- Trong hình 7 ta thấy một tệp chỉ số với một tệp dữ liệu chính được lưu trữ trên m khối Do vậy tệp chỉ số bao gồm m bản ghi tương ứng với m cặp (k,d) Trong đó k là khóa của bản ghi
Trang 383 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
III Tổ chức dữ liệu vật lý
BÀI 2 – MÔ HÌNH DỮ LIỆU QUAN HỆ
3.2 Các phép toán trên tệp chỉ số
3.2.1 Tìm kiếm một bản ghi trên tệp chỉ số
- Giả sử cần tìm một bản ghi có khóa x, có thể sử dụng 2 cách sau để duyệt trong tệp chỉ số:
* Tìm tuần tự
* Tìm kiếm nhị phân
Trang 393 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
- Trong khối (k1,d1) sẽ tìm tuần tự theo tệp chỉ số cho tới khi gặp giá
trị k nào đó bằng x thì giá trị d tương ứng là địa chỉ của bộ cần tìm Nếu không có giá trị k nào trong khối (k1,d1) bằng x, thì xem như bản ghi
Trang 403 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
- Giả sử tệp chỉ số được sắp xếp trên m khối (b1, ,bm)
- Để tìm một bản ghi có khóa x, trước hết chọn khối b[m/2] So sánh giá trị k thuộc khối b[m/2] và x
Nếu k > x thì bộ cần tìm nằm trong các khối từ (b1,…, b[m/2]), ngược lại trong khối từ b[m/2+1], ,bm ngược lại trong khối từ b[m/2+1], ,bm
- Quá trình lặp lại cho đến khi còn một khối chứa bản ghi có khóa x Trong khối này tiếp tục tìm tuần tự trong các cặp (k,d) như phương pháp tìm tuần tự
Trang 413 Tổ chức dữ liệu dạng Tệp chỉ số (Indexed Files)
Nếu bản ghi khóa x là bản ghi đầu tiên của khối thì phải sửa lại khóa
k thành x trong tệp chỉ số