Nhiều khi thuộc tính khoá của tập thực thể A lμ một thuộc tính của tập thực thể B nhờ mối liên hệ R không phải ISA.. Ví dụ 1.9: Chẳng hạn, trong ví dụ 1.5 mỗi công dân đều có thuộc tính
Trang 1định nμo đó vμ được gọi lμ cơ sở dữ liệu
Như vậy, CSDL lμ tập hợp các thông tin có quan hệ với nhau được lưu trữ trong máy tính theo một qui định nhất định nhằm phục vụ cho một mục đích nμo đó
1.2 Hệ quản trị cơ sở dữ liệu (Database Management System- HQTCSDL)
• Hệ quản trị cơ sở dữ liệu lμ hệ thống các chương trình nhằm tạo lập,
xử lý, thay đổi, quản lý vμ khai thác các CSDL
• Một số HQTCSDL thông dụng hiện nay: Foxpro, Access, Oracle, với các phiên bản khác nhau
• Có hai đặc điểm để phân biệt một HQTCSDL với các hệ thống lập
trình khác:
1) Khả năng quản lí những dữ liệu cố định
2) Khả năng truy xuất có hiệu quả một số lượng lớn dữ liệu
Điểm (1) khẳng định rằng có một CSDL tồn tại thường xuyên vμ nội
Trang 2Điểm (2) phân biệt một HQTCSDL với các hệ thống quản lí tập tin cùng quản lí dữ liệu cố định nhưng nói chung không cho phép truy xuất nhanh chóng các thμnh phần tuỳ ý của dữ liệu Ngoμi ra còn có một số khả năng khác thường gặp trong các HQTCSDL trên thị trường
3) HQTCSDL hỗ trợ ít nhất một mô hình dữ liệu nhờ đó người sử dụng có thể xem được dữ liệu
4) HQTCSDL hỗ trợ một số ngôn ngữ bậc cao cho phép người sử dụng định nghĩa các câu trúc dữ liệu, truy xuất dữ liệu và thao tác dữ liệu
5) HQTCSDL quản lí các giao dịch, nghĩa là cho phép nhiều người
sử dụng truy xuất đồng thời và chính xác đến một CSDL
6) HQTCSDL điều khiển quá trình truy xuất, là khả năng giới hạn các quá trình truy xuất dữ liệu của những người không được phép và khả năng kiểm tra độ tin cậy của dữ liệu
7) HQTCSDL có khả năng tự thích ứng là khả năng phục hồi lại dữ liệu do sự cố của hệ thống mà làm mất dữ liệu
Trang 3th nh các kiểu bản ghi logic Các kiểu bản ghi logic bao gồm một tập các trường, mỗi trường chứa giá trị l một số nguyên hay một xâu ký tự Tập
tên các trường v các kiểu của chúng cấu th nh quy cách bản ghi logic
2.2 Mô hình phân cấp
Một mô hình phân cấp đơn giản l một mô hình mạng m l một rừng (tập các cây) trong có tất cả các móc nối trỏ theo hướng từ con đến cha Chúng ta sẽ tiếp tục sử dụng các thuật ngữ của mô hình mạng: kiểu bản ghi logic khi chúng ta nói về mô hình phân cấp
2.3 Mô hình quan hệ : Lμ mô hình dựa vμo ký hiệu lμ tập các tên vμ cơ sở
toán học của nó lμ các phép toán tập hợp vμ ánh xạ Nó lμ mô hình phổ biến hiện nay Tập các phép toán trong mô hình nμy dựa trên hai hệ ký hiệu: hệ
ký hiệu đại số vμ hệ ký hiệu logic
rằng “ Sơ đồ thực thể – liên kết ( Entity Relationship Diagram) có thể chuyển về lược đồ khái niệm ở các mô hình khác (ví dụ mô hình quan hệ) mμ
trên đó các hệ thống CSDL thực sự được xây dựng một cách khá đơn giản
2.4.1 Thực thể
Thuật ngữ thực thể (Entity) không có một định nghĩa hình thức Thực
thể lμ một sự vật tồn tại vμ phân biệt được, nghĩa lμ có thể phân biệt được thực thể nμy với thực thể khác Ví dụ mỗi con người lμ một thực thể, mỗi chiếc xe máy lμ một thực thể Khái niệm về “ Tính phân biệt được ” rất gần với “ đặc tính nhận dạng đối tượng” vì thế mô hình thực thể liên hệ được xem như lμ mô hình hướng đối tượng
Trang 42.4.2 Tập thực thể
Một nhóm bao gồm tất cả các thực thể “tương tự” tạo ra một tập thực thể
Ví dụ 1.4: Các tập thực thể
+ Tất cả mọi người trong một cơ quan
+ Tất cả mọi người có tóc đỏ
+ Tất cả mọi xe gắn máy
Một trong các bước mấu chốt để chọn một lược đồ cho thế giới thực khi nó thuộc về một CSDL cụ thể lμ lựa chọn các tập thực thể Khái niệm tập thực thể lμ một khái niệm ở mức lược đồ Khái niệm ở mức thể hiện tương ứng lμ tập con hiện hμnh của tất cả các phần tử của một tập thực thể cho trước đang hiện diện trong CSDL
2.4.3 Thuộc tính và khoá
+ Thuộc tính: Các đặc tính của tập thực thể gọi lμ các thuộc tính Mỗi thuộc
tính của tập thực thể lấy giá trị trên một miền dμnh cho thuộc tính đó
Thường thì miền giá trị đối với mỗi thuộc tính lμ một tập số nguyên, tập các
số thực hoặc chuỗi ký tự nhưng cũng không loại trừ các kiểu giá trị khác Thí dụ một tập thực thể con người có thể khai báo có các thuộc tính như họ
vμ tên (chuỗi ký tự), chiều cao (số thực), ngμy sinh (ngμy tháng năm),
Chọn thuộc tính thích hợp cho các tập thực thể lμ một bước quan trọng trong việc thiết kế lược đồ CSDL khái niệm
+ Khóa: Mỗi thuộc tính hoặc một tập các thuộc tính dùng để xác định một
cách duy nhất mỗi thực thể trong một tập thực thể gọi lμ khóa đối với tập thực thể đó Về nguyên tắc, mỗi thực thể có một khóa, bởi vì mỗi thực thể
đều có thể phân biệt được với thực thể khác Nếu không chọn được một tập các thuộc tính có chứa một khóa cho một tập thực thể thì không có khả năng
Trang 5phân biệt được thực thể nμy với thực thể kia trong tập thực thể đó Trong trường hợp nμy thì các số đếm thường được gán lμm thuộc tính khóa
Ví dụ 1.5: Một tập thực thể chỉ bao gồm các công dân Việt Nam có thể dùng
thuộc tính “Số chứng minh thư ” (IDNO) lμm khoá Tuy nhiên, nếu muốn xác định một cách duy nhất các công dân của nhiều quốc gia thì không thể
đảm bảo được hai quốc gia sẽ không dùng hai số chứng minh thư giống
nhau Vì vậy, một khoá thích hợp phải gồm một cặp thuộc tính IDNO vμ COUNTRY (nước)
2.4.4 Mối liên hệ
Mối liên hệ (Relationship) giữa các tập thực thể lμ một danh sách có thứ tự của các tập thực thể Một tập thực thể đặc biệt có thể xuất hiện nhiều lần trong danh sách Danh sách các tập thực thể nμy lμ một khái niệm ở mức lược đồ của một mối liên hệ Nếu có một mối liên hệ R giữa các tập thực thể E1, E2, E3, , EK thì thể hiện của R lμ một tập các k – bộ, một tập như thế được gọi lμ một tập liên hệ Mỗi k – bộ (e1, , ek) trong tập liên hệ R khảng định rằng các thực thể e1, e2, ,ek trong đó ei ∈ Ei ; i =1, , k liên kết với nhau thμnh một nhóm trong mối liên hệ R Trường hợp thông dụng nhất
lμ k =2
Ví dụ 1.7: Có một tập thực thể PERSONS có mối liên hệ MOTHER_OF vμ
danh sách các thực thể của nó lμ PERSONS, PERSONS Tập liên hệ tương ứng với mối liên hệ MOTHER_OF gồm tất cả những cặp (P1, P2) sao cho cá thể P2 lμ mẹ cá thể P1
Một cách khác để biểu diễn thông tin nμy lμ thừa nhận tồn tại tập thực thể MOTHERS vμ mối liên hệ MOTHERS isa PERSONS Do vậy mối liên
hệ MOTHER_OF lμ danh sách các tập PERSONS, MOTHERS
Trang 62.4.5 Thuộc tính khoá vay mượn
Trong mối liên hệ ISA nếu A isa B thì đương nhiên khoá của A sẽ lμ khoá của B vμ những thuộc tính nμy không xuất hiện như thuộc tính của tập
A mμ vay mượn của tập B
Ví dụ 1.8: (Trong ví dụ 1.6) Khoá của tập DANGVIEN sẽ lμ thuộc tính
MANV của NHANVIEN Vì vậy, một Đảng viên được xác định một cách duy nhất nhờ vμo MaNV của NHANVIEN
Nhiều khi thuộc tính khoá của tập thực thể A lμ một thuộc tính của tập thực thể B nhờ mối liên hệ R không phải ISA Điều nμy cần thiết để cung cấp cho mỗi thực thể a trong A một thực thể b trong B
Ví dụ 1.9: Chẳng hạn, (trong ví dụ 1.5) mỗi công dân đều có thuộc tính
Country vμ cùng với IDNO để tạo ra một khoá cho mỗi công dân điều đó có nghĩa lμ việc thiết kế CSDL đã xem các quốc gia như một kiểu thực thể khác
vμ có một mối liên hệ Country_of liên kết giữa các công dân với các quốc gia Vì vậy, các công dân đã phải mượn thuộc tính Country để cùng với
IDNo lμm khoá Trong các ví dụ trên thuộc tính MANV, Country lμ các thuộc tính khoá vay mượn
sẽ lμ một vòng tròn chứ không phải lμ hình chữ nhật vμ nó gắn kết với các mối liên hệ mμ tập đó hμm chứa
Trang 7c C¸c h×nh thoi biÓu diÔn c¸c mèi liªn hÖ Chóng ®−îc liªn kÕt víi c¸c c¸c tËp thμnh viªn bëi c¸c c¹nh v« h−íng hoÆc cã h−íng (c¸c cung)
VÝ dô 1.10: Gi¶ sö ta cã 3 tËp thùc thÓ EMPS (Nh©n viªn) cã c¸c thuéc tÝnh
ENO, EName, Salary ( ENO lμ kho¸), DEPTS (Phßng) cã c¸c thuéc tÝnh
DNO, DName, Location (DnO lμ kho¸), MANAGERS (Tr−ëng phßng) cã duy nhÊt thuéc tÝnh ENO (ENO lμ kho¸) Hai tËp ®Çu liªn kÕt nhê mèi liªn
hÖ ASSIGNED_TO (thuéc phßng) vμ hai tËp sau nhê liªn hÖ MANAGES (qu¶n lÝ)
MANAGES S
Trang 82.4.7.Tính chất hàm của mối liên hệ
Để mô hình hóa đầy đủ thế giới thực cần phải phân loại các mối liên
hệ theo số lượng các thực thể từ mỗi tập tham gia vμo trong mối liên hệ
a) Mối liên hệ một – một
Một mối liên hệ một - một (one to one ralationship) lμ một mối liên hệ
mμ với mỗi thực thể trong một tập thực thể nμy chỉ có nhiều nhất một phần tử
được liên kết trong tập thực thể kia
Ví dụ 1.11: Mối liên hệ MANAGES giữa depts vμ MANAGER trong ví dụ
trên được khai báo lμ mối liên hệ một - một Nếu như vậy trong CSDL không bao giờ tìm được nhiều trưởng phòng cho một phòng vμ cũng không có người nμo quản lý nhiều phòng Có thể lμ tại một thời điểm một phòng nμo đó
không có trưởng phòng, thậm chí cũng có thể có người có tên trong danh sách trưởng phòng lại không quản lý một phòng nμo cả Tính một- một của mối liên hệ nμy chỉ lμ một giả thiết về thế giới thực Vì vậy, người thiết kế CSDL có thể tuỳ ý chọn lựa Vẫn có thể cho rằng một người lãnh đạo 2
phòng thậm chí 1 phòng có 2 trưởng phòng khi đó mối quan hệ trên lμ nhiều
- nhiều Tuy nhiên nếu cho MANAGES lμ mối liên hệ một - một sẽ có ích hơn khi thiết kế CSDL vật lý
b) Mối liên hệ nhiều – một
Một mối liên hệ giữa các tập thực thể E1 vμ E2 được gọi lμ mối liên hệ nhiều – một (many - one relationship) nếu mỗi thực thể trong tập E2 có thể không liên kết với thực thể nμo hoặc liên kết với một hay nhiều thực thể trong tập E1, nhưng mỗi thực thể trong tập thực thể E1 chỉ liên kết nhiều nhất với một thực thể trong tập thực thể E2
Ví dụ 1.12: Mối liên hệ ASSGNED_TO giữa EMPS vμ DEPS ở ví dụ trên lμ
mối liên hệ nhiều-một, có nghĩa lμ mỗi nhân viên chỉ lμm việc trong một phòng, một vμi nhân viên như giám đốc chẳng hạn không gán cho một phòng nμo cả vμ một phòng có nhiều nhân viên
Trang 9Khái niệm liên hệ nhiều - một tổng quát hóa thμnh mối liên hệ giữa ba tập trở lên Nếu có một mối liên hệ R giữa các tập E1, E2, , Ek vμ với các thực thể trong tất cả các tập thực thể trừ Ei chỉ có nhiều nhất một thực thể của Ei có liên hệ với chúng thì ta gọi R lμ mối liên hệ nhiều – một từ E1, E2, , Ek (trừ Ei) đến Ei
c) Mối liên hệ nhiều – nhiều
Chúng ta cũng gặp mối liên hệ nhiều – nhiều, ở đó không có môt hạn chế nμo trên tập k – bộ của các thực thể khi xuất hiện trong tập liên hệ Một mối liên nhiều - nhiều (many-many relationship) lμ một mối liên hệ
mμ với mỗi thực thể trong một tập thực thể nμy có thể không liên kết với thực thể nμo hoặc liên kết với một hay nhiều thực thể trong tập thực thể kia
Ví dụ 1.13: Mối liên hệ SUPPLIES giữa tập thực thể SUPPLIERS gồm các
thuộc tính SNO, SNAME, SADDR vμ tập thực thể PRODUCTS gồm các thuộc tính PNO, PNAME, COLOR, WEIGHT lμ mối liên hệ nhiều - nhiều Trong thực hμnh các mối liên hệ nhiều - nhiều thường hay gặp nên phải cẩn thận trong cách diễn đạt những mối liên hệ nμy trong lược đồ khái niệm của CSDL thực sự (thiết kế thực thể - liên hệ không phải lμ lược đồ khái niệm, đúng hơn chỉ lμ bảng phác thảo vμ cần chuyển đổi các tập thực thể vμ các mối liên hệ về mô hình dữ liệu mμ DBMS hỗ trợ) Nhiều mô hình dữ liệu không cho phép biểu diễn trực tiếp các mối liên hệ nhiều - nhiều, yêu cầu phải phân chúng ra thμnh các mối liên hệ nhiều - một
2.5 Mô hình hướng đối tượng : Lμ mô hình cung cấp đặc tính nhận dạng
đối tượng Trong đó mỗi lớp đối tượng được đặc trưng bởi hai yếu tố:
a) Tập các thuộc tính (properties) để nhận dạng đối tượng
b) Tập các phương thức (methods) để thao tác với đối tượng
Trang 10Câu hỏi và bài tập chương 1
1.1 Nêu khái niệm về CSDL
1.2 Nêu khái niệm HQTCSDL, phân biệt nó với các hệ thống lập trình khác 1.3 Nêu kiến trúc một hệ CSDL vμ phân biệt các mức của nó
1.4 Nêu khái niệm lược đồ vμ thể hiện, cho ví dụ
1.5 Nêu khái niệm mô hình dữ liệu
1.6 Nêu các khái niệm thực thể vμ tập thực thể Cho ví dụ
1.7 Nêu các khái niệm khoá của tập thực thể vμ cho ví dụ
1.8 Nêu các mối liên hệ giữa các tập thực thể vμ cho ví dụ
Chương II: Mô hình cơ sở dữ liệu quan hệ
Loại thực thể MON-HOC có một số thuộc tính Ma-mon, Ten-mon
Chẳng hạn với b i toán quản lý điểm thi của sinh viên: với đối tượng sinh viên ta cần chú ý đến các đặc trưng riêng như họ tên, ng y sinh, giới tính, địa chỉ, lớp các đặc trưng n y gọi l thuộc tính
Các thuộc tính được phân biệt qua tên gọi v phải thuộc v o 1 kiểu dữ liệu nhất định (số, chuỗi, ng y tháng, ) Trong cùng 1 đối tượng không được
có 2 thuộc tính cùng tên
Trang 11- Mỗi thuộc tính được xác định trên 1 miền giá trị gọi l miền thuộc tính
Ký hiệu DOM (<tên thuộc tính>)
Ví dụ: DOM (họ tên ) = {char(30)}
DOM (tuổi ) = N
Ví dụ 1.2: Thuộc tính ng y trong tháng có kiểu dữ liệu l số nguyên, miền
giá trị của nó l từ 1 đến 31 Hoặc điểm thi của sinh viên có miền giá trị từ 0 đến 10
Người ta dựng các chữ cái hoa A, B, C, để biểu diễn các thuộc tính, hoặc
A1, A2, để biểu diễn một số lượng lớn các thuộc tính
1.2 Quan hệ
• Miền (domain) lμ một tập các giá trị, chẳng khác gì một kiểu dữ liệu (data type) Ví dụ tập các số nguyên lμ một miền, tập các xâu kí tự tạo thμnh tên người trong tiếng Anh có độ dμi không quá 30 kí tự lμ một miền, tập hai số{0,1} cũng lμ một miền v.v
• Tích Đề - Các: Gọi D1, D2, , Dn lμ các miền Tích Đề - Các của n miền nμy ký hiệu lμ D1xD2x xDn lμ tập tất cả n- bộ (n tuples) (v1, v2, , vn) sao cho vi thuộc Di, với i = 1 n
Ví dụ 2.1: n=2, D1={0,1}, D2={a,b,c}
Khi đó:
D1 x D2={(0,a),(0,b),(0,c),(1,a)(1,b),(1,c)}
• Quan hệ (Relation) 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, mỗi quan hệ có thể lμ vô hạn ở đây luôn giả thiết rằng, quan hệ lμ một tập hữu hạn
Ví dụ 2.2: {(0,a),(0,c),(1,a)(1,b)} lμ một quan hệ đó lμ tập con của tích đề
các D1xD2 được đề cập ở trên Tập rỗng ∅ cũng lμ một quan hệ
Trang 12Mỗi phần tử của quan hệ gọi lμ một bộ (tuples) Quan hệ n - ngôi lμ tập con của tích đề các D1 x D2 x x Dn của n - miền Khi đó mỗi bộ của quan hệ có n thμnh phần (v1, v2, , vn) đ−ợc gọi lμ một n-bộ
Về trực quan thì mỗi quan hệ xem như 1 bảng, trong đó mỗi cột l thông tin
về 1 thuộc tính v mỗi dòng l thông tin về một bộ
Nh− vậy khi ta nói cho một l−ợc đồ quan hệ R(A1, A2, , An) có nghĩa lμ ta
đã cho một tập thuộc tính A1, A2, , An vμ trên đó đã tồn tại một quan hệ R
Ví dụ 2.2: Hình 2.3 cho thấy một quan hệ NHAN_VIEN có các thuộc tính
HO_TEN, NAM_SINH, NOI_LAM_VIEC vμ LUONG lμ một quan hệ 4 ngôi
NHAN_VIEN (Ho_Ten Nam_Sinh Noi_lam_viec Luong)
Trang 13Nam_Sinh, Noi_lam_viec, Luong)
1.5 Thể hiện của quan hệ
Thể hiện (hoặc còn gọi lμ tình trạng) của quan hệ R, ký hiệu bởi TR, lμ
tập hợp các bộ giá trị của quan hệ R vμo một thời điểm Tại những thời điểm
khác nhau thì quan hệ sẽ có những thể hiện khác nhau Thể hiện (hay tình
trạng) của các l−ợc đồ quan hệ con TRi gọi lμ tình trạng của l−ợc đồ cơ sở dữ
liệu
Ví dụ :
Các thể hiện của quan hệ lớp-học vμ môn-học
Quan hệ lớp-học :
QTKD1 Quản trị kinh doanh QT01 96-99 154 QTKD
1.6 Khoá - Siêu khoá - Khoá chỉ định – khoá chính – khoá ngoại
Khoá (key): Khoá của một quan hệ R(A1, A2, ,An) lμ tập con
∅ ≠ K ⊆ { A1, A2, ,An }, thoả mãn các tính chất sau đây:
Trang 141) Với bất kỳ 2 bộ t1, t2 ∈ R đều tồn tại một thuộc tính A∈K sao cho
t1[A] ≠ t2[A] Nói một 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 Điều kiện nμy 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
2) Không có tập con thực sự nμo của K có tính chất (1)
Một điều quan trọng cần phải nhớ lμ khoá phụ thuộc vμo l−ợc đồ quan
hệ không phụ thuộc vμo thể hiện của quan hệ Một quan hệ có thể có nhiều khoá
Siêu khóa (Super key ): k l 1 khóa của quan hệ r(U) thì mọi tập hợp k’
chứa k đều l khóa của quan hệ r(U)→ k’ gọi l siêu khóa của quan hệ
- Siêu khóa chứa ít thuộc tính nhất được gọi l khóa chỉ định
- Khóa chính: l khóa được chọn để c i đặt trong một hệ quản trị cơ sở dữ
liệu Khi chọn khóa chính ta phải chú ý các tính chất:
Khóa có tính áp dụng khi nó không bỏ sót bất kỳ trường hợp n o của vấn đề
Trang 15 Khóa phải có tính duy nhất dùng để phân biệt bộ n y với bộ kia trong quan hệ
Khóa có tính nhỏ nhất khi ta bỏ qua bất kỳ thuộc tính n o của nó thì
nó không còn tính duy nhất nữa
Khóa có tính ổn định khi giá trị của khóa không thay đổi
- Khóa ngoại: một thuộc tính được gọi l khóa ngoại nếu nó l thuộc tính
của một lược đồ quan hệ n y nhưng lại l khóa chính của lược đồ quan hệ khác
1.7.Phụ thuộc hàm
Quan hệ R được định nghĩa trên tập thuộc tính U = {A1,A2, ,An}
U
Y
X , ⊂ lμ hai tập con của tập thuộc tính U Nếu tồn tại một ánh xạ f:
X → Y thì ta nói rằng X xác định hμm Y, hay Y phụ thuộc hμm vμo X vμ ký hiệu lμ X →Y Chúng ta sẽ tìm hiểu kỹ hơn về phụ thuộc hμm trong Chương
IV
1.8.Ràng buộc toàn vẹn
Rμng buộc toμn vẹn (viết tắt lμ RBTV) lμ một quy tắc định nghĩa trên một (hay nhiều) quan hệ do môi trường ứng dụng quy định Đó lμ quy tắc để đảm bảo tính nhất quán của dữ liệu trong CSDL
Mỗi RBTV được định nghĩa bằng một thuật toán trong CSDL
Ví dụ:
Quan hệ CCVC(Mã-CBVC, Họ-tên, Hệ-số-lương)
Quy tắc: Hệ số lương của cán bộ viên chức (CBVC) phải lớn hơn hay bằng 1.00 vμ nhỏ hơn hay bằng 10.00
Thuật toán: cc∈CCVC thì cc.Hệ-số-lương>=1 & cc.Hệ-số-lương<=10
Các khái niệm cũng như vấn đề chủ yếu của RBTV sẽ được trình bμy chi tiết trong Chương IV
Trang 161.9.Các thao tác cơ bản trên các quan hệ
Ba thao tác cơ bản trên môtj quan hệ, mμ nhờ đó CSDL đ−ợc thay đổi, đó lμ Thêm(Insert), Xoá (Delete) vμ Sửa (Update) các bộ giá trị của quan hệ
1.9.1.Phép thêm (chèn) một bộ mới vào quan hệ:
Phép thêm một bộ v o quan hệ R = {A1, A2, , An}:
INSERT (R; A1=d1, A2 = d2, , An = dn} trong đó Ai (i = 1, 2, ,
n) l tên các thuộc tính v di ∈ dom (Ai)
Ví dụ: Thêm một bộ t5 = (Vũ Văn Việt, 1986, Caođangcodien, 3.36)
v o quan hệ Nhanvien (Hoten, Namsinh, Noilamviec, Luong):
INSERT (Nhanvien; Hoten = VuVanViet, Namsinh = 1986,
Noilamviec = Caodangcodien, Luong = 3.36)
+ Bộ mới thêm v o không phù hợp với lược đồ quan hệ cho trước + Một giá trị của một thuộc tính n o đó 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ữ
Do vậy, tùy từng hệ cụ thể sẽ có những cách khắc phục riêng
1.9.2 Phép loại bỏ bộ khỏi quan hệ
Phép loại bỏ (DELETE) l phép xoá một bộ ra khỏi một quan hệ cho trước
DELETE (R; d1, d2, , dn)
Ví dụ: khi cần loại bỏ một bộ, chẳng hạn t2 từ quan hệ Nhanvien:
DELETE (Nhanvien; HaiHa; 1987, Khoatin, 4.45)
Chú ý: không phải lúc n o phép loại bỏ cũng cần đầy đủ thông tin về
cả bộ cần loại Khi ta có giá trị của bộ đó tại các thuộc tính khoá K = {B1, , Bn}, lúc đó phép loại bỏ có dạng:
DELETE (R; B1 =e1, , Bi = ei)
1.9.3 Phép sửa đổi giá trị của các thuộc tính của quan Hử
Khi cần điều chỉnh một số giá trị n o đó tại một số thuộc tính, ta sử dụng phép thay đổi
Trang 17Gọi tập {C1, , Cp}⊆ {A1, , An} l tập các thuộc tính m tại đó casc giá trị của bộ cần thay đổi: CH (R; A1=d1, A1 = d2, , An =d2; C1=e1, C2 = e2, , Cp=ep}
Nếu K = {B1, , Bm} l khoá của quan hệ, khi đó chỉ cần viết:
được tôn trọng Các điều nμy tương tự đối với các phép toán khác như hiệu, giao, tích Descartes
Trang 18b g a Chú ý: Trong ví dụ trên, ta thấy hai quan hệ R vμ S cùng ngôi, ta vẫn có thể lấy hợp của chúng dù các cột của hai quan hệ trên mang tên khác nhau, miễn
lμ các quan hệ có cùng số l−ợng các thμnh phần Tuy vậy quan hệ thu đ−ợc
sẽ không có tên rõ rμng cho các cột (ta có thể không viết tên cột hoặc đặt tên cho các cột kết quả lμ A, B, C nh−ng nó mang nghĩa mới)
R ∩ S (A B C) a1 b1 c1
2.3.Phép trừ
Hiệu của hai quan hệ R vμ S khả hợp lμ một quan hệ ký hiệu lμ R-S vμ
lμ tập tất cả các bộ t sao cho t thuộc R nh−ng không thuộc S
Trang 19RxS ( A B C D E F ) a1 b1 c1 d1 e1 f1 a1 b1 c1 d2 e2 f1 a1 b1 c1 d1 e2 f2 a1 b2 c1 d1 e1 f1 a1 b2 c1 d2 e2 f1 a1 b2 c1 d1 e2 f2 R(A B C )
Trang 20- Trong quan hệ r xác định trên quan hệ U1 l quan hệ bậc n
- Trong quan hệ s xác định trên quan hệ U2 l quan hệ bậc m
Với n > m
Khi đó phép chia của r cho s l 1 tập các bộ t có bậc l n-m sao cho mọi
bộ giá trị u ∈ s thì bộ ghép đ−ợc giữa (t,u) ∈ r
Trang 213.Các phép toán trên đại số quan hệ
3.1.Phép chiếu (( Projection )
Cho quan hệ R(A1, A2, ,An), X⊆ { A1, A2, ,An } Phép chiếu quan hệ
R trên tập thuộc tính X lμ một quan hệ trên tập thuộc tính X, ký hiệu lμ
Các phép so sánh trong biểu thức F lμ <, =, >, >=, <= vμ ≠; Các phép logic lμ ∧ (vμ), ∨ (hoặc) vμ ơ (không)
Cho quan hệ R(A1, A2, ,An) Phép chọn quan hệ R với điều kiện F lμ một quan hệ trên tập thuộc tính (A1, A2, ,An) ký hiệu lμ δF(R)
Trang 22Hình thức hoá phép chọn đ−ợc định nghĩa nh− sau
δF(R) = { t ∈R | F (t) = đúng }
F(t) đ−ợc hiểu lμ giá trị của biểu thức F đối với bộ t
Ví dụ 2.19: Cho quan hệ sau
δ(A=a1) V (D =d2) (R) = ( A B C D )
a1 b1 c1 d2 a2 b2 c2 d2
đó gọi lμ “kết nối tự nhiên “ vμ sử dụng ký hiệu “∗” thay cho ><
Trang 233.4.1 phép kết nối nội (Inner Join)
Thực chất lμ phép kết nối bằng đã trình bμy trên Tuy nhiên, ngay cả trong trường hợp hai thuộc tính so sánh có cùng tên thì kết quả phép kết nối vẫn giữ lại 2 tên thuộc tính đó
Ví dụ 3.4.1: Cho 2 quan hệ R(A B C) vμ S(A D E F) với các
bộ giá trị như dưới đây Kết quả phép kết nối nội được cho trên bảng phía bên phải
R(A B C ) S(A D E F) (A B C A D E F)
R >< S = B≥C
R(ABC) ∗ S(CDE) =
R >< S = R.A=S.A
Trang 24a1 b1 c1 a1 d1 e1 f1 a1 b1 c1 a1 d1 e1 f1 a2 b2 c2 a2 d2 e2 f2 a2 b2 c2 a2 d2 e2 f2 a3 b3 c3 a4 d4 e4 f4 a7 b7 c7 a7 d7 e7 f7 a5 b5 c5 a6 d6 e6 f6
a7 b7 c7 a7 d7 e7 f7
3.4.2 phép kết nối trái (Left Join)
Giả sử có hai quan hệ R(A1 A2 An) vμ S(B1 B2 Bm) t=(a1,a2, , an) vμ u= (b1,b2, ,bm) lμ hai bộ giá trị của R vμ S Gọi r lμ bộ ghép nối u vμo t (hay bộ giá trị t vμ u được “xếp cạnh nhau”) vμ ký hiệu lμ:
đương được với mỗi giá trị của cột S[B], được định nghĩa lμ:
R >< S ={r =(t,u)|(t∈ ,R u∈Svμ t.A θ u.B)hoặc(t∈R,u=uNULL với
Ví dụ 3.4.2: Với quan hệ R vμ S cùng các bộ giá trị của chúng đã được cho
trong ví dụ 3.4.1, kết quả của phép kết nối trái của R vμ S lμ:
Trang 253.4.3 phép kết nối phải (Right Join)
Vẫn với các quan hệ R,S; Các thuộc tính A, B; vμ các bộ giá trị v,t,u, tNULL,
uNULL được xác định như trên
Phép kết nối phải hai quan hệ R với S trên các thuộc tính A vμ B với phép so sánh bằng, với giả thiết lμ giá trị cột R[A] có thể so sánh tương
đương được với mỗi giá trị của cột S[B], được định nghĩa lμ:
R >< S ={r =(t,u)|(t∈ ,R u∈Svμ t.A θ u.B)hoặc(u∈S,t=tNULLvới t.B∉R[A])} A=B
nghĩa lμ, tất cả các bộ r có được nhờ cách đặt bộ giá trị của R vμ S xếp cạnh nhau, nếu có giá trị giống nhau trên 2 thuộc tính kết nối vμ các bộ
NULL của R với các bộ của S, nếu không tìm được giá trị tương ứng của thuộc tính kết nối trên quan hệ R
Ví dụ 3.4.3: Với quan hệ R vμ S cùng các bộ giá trị của chúng đã được cho
trong ví dụ 3.4.1, kết quả của phép kết nối tráI của R vμ S lμ:
Trang 26Các dòng có giá trị thuộc tính A của S lμ a4 vμ a6 không tìm được giá trị của thuộc tính A tương ứng trong quan hệ R, nên phần đầu của nó được để lμ không xác định Qua bảng kết quả trình bμy trên, chúng ta thấy ý nghĩa của phép toán nμy lμ nhằm xác định các bộ giá trị của quan hệ bên phải nhưng không có bộ tương ứng trong quan hệ phía bên trái
Câu hỏi và bài tập chương 2
2.1 Nêu định nghĩa quan hệ, cho ví dụ
2.2 Nêu các phép toán đại số quan hệ, cho ví dụ
2.3 Cho hai quan hệ r vμ s như sau:
Trang 28T×m :
a R ∪ S, R ∩ S, R - S
b R x U, R*U, Π A,B(R), δ(A=a1) ∨ (E= e2)(U)
c Π A,B (δ(A=a1) ∨ (E= e2)(R*U))
d δ(A=a1) ∨ (E= e2) ( Π A,B (R*U))
2.5 Cho hai quan hÖ R vμ S
Trang 29c) Hãy dùng các phép toán đại số quan hệ trả lời các câu hỏi sau
*Cho biết các thông tin A, B, E có A=1 vμ E = 0
*Cho biết các thông tin A, B, C có A=1 hoặc E= 0
d) Tính lại kết quả của các biểu thức ở câu c)
Trang 30- Hoten: Họ vμ tên sinh viên
- Ngaysinh: Ngμy sinh
- Gioitinh: Giới tính
- Quequan: Quê quán
- Sophach: Số phách
- Diem: Điểm thi của môn học
Hãy dùng các phép toán của đại số quan hệ để trả lời các câu hỏi sau:
a Cho biết họ vμ tên, ngμy sinh, giới tính, quê quán, điểm thi của mỗi sinh viên
b Cho biết họ vμ tên, ngμy sinh, giới tính, điểm thi của những sinh viên có
điểm thi ≥ 5
c Cho biết họ vμ tên, ngμy sinh, diểm thi của những sinh viên có giới tính lμ
“Nu” vμ quê ở “Thai Binh”
d Cho biết họ vμ tên, ngμy sinh, điểm thi của những sinh viên có quê ở
“Nam Dinh” hoặc “Thai Binh” vμ có điểm thi < 3 hoặc điểm thi >8
2.8 Cho 3 quan hệ:
MatHang(Mamh, Tenmh, Mau, DVT)
KhHang(Makh, Tenkh, Diachi, DT, Gioitinh)
MuaBan(Mamh, Makh, Muaban, NgayMB, Soluong, Dongia)
Trang 31Hãy dùng các phép toán của đại số quan hệ để trả lời các câu hỏi sau:
a Cho biết makh, tenkh, tenmh của những khách hμng đã bán mặt hμng
có mamh = “MH001” hoặc mamh = “MH002”
b Cho biết makh của những khách hμng đã bán mặt hμng mμu đỏ với số l−ợng >100 trong quý I năm 2003
c Cho biết tenkh, diachi, DT của những khách hμng đã bán mặt hμng mμu “Vang” hoặc “xanh” với số l−ợng >100
d Cho biết tenkh, tenmh của những khách hμng có giới tính lμ “nam” đã bán mặt hμng mμu “Den” vμ mua mặt hμng mμu “Xanh” với 200> soluong>100
e Cho biết makh ch−a tham gia mua bán lần nμo
Trang 32f Cho biết makh ch−a tham gia bán lần nμo
g Cho biết makh, tenkh ch−a tham gia mua bán lần nμo
h Cho biết makh đã mua mặt hμng mμu xanh nh−ng không bán mặt hμng mμu đỏ
i Cho biết makh đã mua mặt hμng mμu xanh vμ bán mặt hμng mμu đỏ
j Cho biết makh đã mua mặt hμng mμu xanh hoặc bán mặt hμng mμu
đỏ
2.9 Cho 2 quan hệ sau:
Ds
001 Nguyễn Vân Anh 20/05/1984 Nữ Nam Định
002 Bùi Thu Huệ 12/04/1987 Nữ Thái Bình
c Cho xem Danh sách sinh viên không dự thi tất cả các môn
d Cho xem Danh sách sinh viên không dự thi tất cả các môn gồm các
thông tin MaSV, Hoten, Ns
Trang 33Chương III Ngôn ngữ dữ liệu SQL
1 Khái quát về ngôn ngữ dữ liệu SQL
Trong chương nμy trình bμy ngôn ngữ dữ liệu SQL (Structured Query
Language) Đây lμ ngôn ngữ con dữ liệu quan hệ được xác nhận lμ rất mạnh,
phổ dụng vμ lại dễ sử dụng
SQL được phát triển từ ngôn ngữ SEQUEL-2, thử nghiệm vμ cμi đặt tại trung tâm nghiên cứu của hãng IBM ở San Jose, California cho hệ thống QTCSDL lớn điển hình lμ System - R trong System - R, SQL vừa đóng vai trò lμ một ngôn ngữ định nghĩa dữ liệu - DDL vừa lμ ngôn ngữ thao tác dữ liệu - DML SQL lμ một ngôn ngữ phi thủ tục, chuẩn mực vμ điển hình Do vậy hiện nay rất nhiều sản phẩm phần mềm thương mại đều được cμi đặt SQL như Oracle, Visual Foxpro, Visual Basic, Access Trong tμi liệu nμy
sẽ trình bμy các khả năng của ngôn ngữ, đồng thời cung cấp cho bạn đọc thêm kinh nghiệm vμ cách nhìn các hệ QTCSDL tạm gọi lμ “kinh điển” Phép toán cơ bản trong SQL lμ phép ánh xạ được miêu tả như một khối SELECT - FROM - WHERE Các mệnh đề của ngôn ngữ SQL sẽ được trình bμy chi tiết bằng các ví dụ
Các thuật ngữ trong CSDL quan hệ như quan hệ, thuộc tính, bộ,
được thay thế bằng các thuật ngữ như bảng (table), cột (column), bản ghi (record) hoặc hμng (row) để phù hợp với ý nghĩa của các hệ mềm nμy
2 Các lệnh liên quan đến cấu trúc của cơ sở dữ liệu
2.1 Tạo bảng
Cú pháp:
CR EATE TABLE <Tên bảng>(
Trang 34<Tên cột 1> <kiểu dữ liệu 1> [Not null ],
<Tên cột 2> <kiểu dữ liệu 2> [Not null ],
<Tên cột n> <kiểu dữ liệu n> [Not null ], PRIMARY KEY (Khoá chính),
[UNIQUE (khoá), … ]
[FOREIGN KEY (khoá ngoại) REFERENCES Tên bảng … ]
[Check Điều kiện ràng buộc, … ])
Trong đó:
- Tên bảng: l xâu ký tự bất kỳ, không trùng từ khoâ, không chứa dấu
cách trống
- Tên cột: l xâu ký tự bất kỳ, không chứa dấu cách trống Trong một
bảng tên cột l duy nhất Thứ tự các cột không quan trọng
- Kiểu dữ liệu: Kiểu dữ liệu của cột Kiểu dữ liệu có thể dùng một số loại
Float: Số dấu phẩy động
Char(n): Xâu ký tự có độ dμi tối đa lμ n, n<=255
Varchar(n): kiểu ký tự với kích thước thay đổi từ 0 đến n ký tự Giá trị
lớn nhất của n lμ 2000
Date: Dữ liệu dạng ngμy tháng
Trang 35Logical: Dữ liệu kiểu logic 1 byte có giá trị hoặc đúng (True), hoặc
sai (False)
- Chỉ thị Notnull: chỉ rằng cột không nhận giá trị rỗng Thuộc tính khoá
ngầm định l Notnull
- Chỉ thị PRIMARYKEY(khoá chính): Khai báo khoá chính của bảng
- Chỉ thị UNIQUE Khoá: Khai báo các khoá khác nếu có
- Chỉ thị FOREIGN KEY (khoá ngoại) REFERENCES Tên bảng :
Khai báo các khoá ngo i của bảng
- Chỉ thị Check điều kiện ràng buộc,…:Khai báo các r ng buộc dữ liệu
Ví dụ: Tạo các bảng sau:
SV(MaSV,TenSV,MaKh,Điachi,Namsinh)
KHOA(MaKh,TenKh,Vitri,TrKhoa)
* Tạo bảng SV
CR EATE TABLE SV(MaSV char (5) Notnull,
TenSV varchar(20) Notnull
MaKh char(2) Notnull
Điachi varchar(30) Notnull
Namsinh Integer Notnull
PRIMARYKEY(MaSV)
FOREIGN KEY(MaKh) REFERENCES KHOA)
*Tạo bảng KHOA:
CR EATE TABLE KHOA(M aKh char(2) Notnull,
T enKh varchar(20) Notnull
Trang 36Vitri varchar(30) Notnull
TrKhoa varchar(20) Notnull
Lệnh chèn dữ liệu INSERT INTO đ−ợc sử dụng để chèn một dòng hay
h ng dữ liệu mới v o trong một bảng
Cú pháp:
INSERT INTO tên bảng VALUES (value1, value2, )
Trang 37Hoặc có thể chỉ rõ những cột cụ thể muốn chèn dữ liệu nh− cú pháp sau:
INSERT INTO tênbảng (Column1, column2, )
VALUES (value1, value2 )
Chèn một dòng mới:
INSERT INTO Nhanvien
VALUES (‘05’,‘Van’, ‘21/02/1987’, ‘Giaovien’, ‘HaNoi’, 2.400.000)
Kết quả:
01 Lan 22/9/1988 Ketoan HaiPhong 1.500.000
02 Nghia 12/9/1988 Quanly HaiPhong 1.500.000
03 Hai 22/9/1989 Ketoan HaiPhong 1.000.000
04 Trang 30/1/1999 Taivu BacNinh 2.000.000
05 Van 21/02/1987 Giaovien HaNoi 2.400.000
Ví dụ chèn dữ liệu v o những cột chỉ định cụ thể:
INSERT INTO Nhanvien (MNV, Hoten, Nghenghiep)
VALUES ('Hoang', 'Baove')
Kết quả:
01 Lan 22/9/1988 Ketoan HaiPhong 1.500.000
02 Nghia 12/9/1988 Quanly HaiPhong 1.500.000
03 Hai 22/9/1989 Ketoan HaiPhong 1.000.000
04 Trang 30/1/1999 Taivu BacNinh 2.000.000
3.2.Cập nhật nội dung của bộ trong bảng
Lệnh cập nhật dữ liệu đ−ợc sử dụng để sửa đổi dữ liệu trong một bảng
Cú pháp:
UPDATE tên bảng
SET <tên cột 1> = <biểu thức 1>,
Trang 38<tên cột 2> = <biểu thức 2>,
<tên cột n> = <biểu thức n>
[WHERE <điều kiện>] ;
Ví dụ: Đổi tên Nghenghiep một người có tên l Hoang th nh nghề
Taivu
UPDATE Nhanvien SET Nghenghiep = 'Taivu'
WHERE Hoten= 'Hoang'
Kết quả:
01 Lan 22/9/1988 Ketoan HaiPhong 1.500.000
02 Nghia 12/9/1988 Quanly HaiPhong 1.500.000
03 Hai 22/9/1989 Ketoan HaiPhong 1.000.000
04 Trang 30/1/1999 Taivu BacNinh 2.000.000
Cập nhật nhiều cột trong một dòng dữ liệu
Chúng ta muốn thay đổi địa chỉ v thêm v o tiền lương:
UPDATE Nhanvien
SET Diachi = 'BacNinh', Luong = '3.000.000'
WHERE Hoten = 'Hoang'
Kết quả:
01 Lan 22/9/1988 Ketoan HaiPhong 1.500.000
02 Nghia 12/9/1988 Quanly HaiPhong 1.500.000
03 Hai 22/9/1989 Ketoan HaiPhong 1.000.000
04 Trang 30/1/1999 Taivu BacNinh 2.000.000
Trang 39MNV Hoten Ngaysinh Nghenghiep Diachi Luong
01 Lan 22/9/1988 Ketoan HaiPhong 1.500.000
02 Nghia 12/9/1988 Quanly HaiPhong 1.500.000
03 Hai 22/9/1989 Ketoan HaiPhong 1.000.000
04 Trang 30/1/1999 Taivu BacNinh 2.000.000
Xoá tất cả các hàng
Có thể xoá tất cả các dòng trong một bảng m không cần phải xoá bảng Điềuu n y có nghĩa l cấu trúc bảng, cột v chỉ mục sẽ không bị thay đổi v mất đi
DELETE FROM tên bảng
Hoặc
DELETE * FROM tên bảng
4 Các lệnh truy vấn cơ sở dữ liệu
Cấu trúc đơn giản nhất trong SQL lμ khối SELECT đ−ợc miêu tả về cú pháp
nh− một khối select -from -where
Một cách tổng quát khối select bao gồm 3 mệnh đề chính:
Select: Xác định nội dung của các cột cần đ−a ra kết quả
From: Xác định các bảng cần lấy thông tin ra Where: Xác định các bản ghi thoả điều kiện chọn lọc để đ−a ra
kết quả
Ngoμi ra, để mở rộng khả năng của ngôn ngữ, khối select - from -
where còn đ−ợc bổ sung thêm các mệnh đề group by, having, order by, các hμm mẫu vμ một số phần mềm còn thêm cả mệnh đề compute, for browse
Trong các phần sau sẽ trình bμy chi tiết từng mệnh đề
Dạng tổng quát của khối lệnh select đ−ợc biểu diễn nh− sau:
Select [∗ | distinct ] danh_sách_cột / biểu thức
From danh_sách_tên_bảng | tên_các_view
[ where biểu_thức_điều_kiện]
Trang 40[ groupe by danh_sách_tên_cột ]
[having biểu_thức_điều_kiện ]
[ order by { tên_cột | số_thứ_tự_cột | biểu_thức }
[ASC/ DESC ] ]
Trong đó mệnh đề where được biểu diễn dạng:
WHERE [NOT] biểu_thức phép_sánh biểu_thức
WHERE [NOT] tên_cột [ NOT ] LIKE xâu_ký_tự
WHERE [NOT] biểu_thức [ NOT ] BETWEEN biểu_thức and
WHERE [NOT] biểu_thức_logic
WHERE [NOT] biểu_thức_logic { AND | OR}[ NOT ]
biểu_thức_logic
4.1 Tìm thông tin từ các cột của bảng (phép chiếu)
Trước hết lμm quen với các câu hỏi chỉ liên quan tới một bảng Trong mệnh đề select có danh sách chiếu Danh sách nμy xác định tên các cột cần
có trong bảng kết quả Nếu xuất hiện giá trị ‘*’ có nghĩa lμ chọn toμn bộ các cột của bảng
Ví dụ 4.1.1: Cho biết tất cả các thông tin về các nhμ cung cấp