SlideShare ist ein Scribd-Unternehmen logo
1 von 7
ÔN TẬP HỌC PHẦN CƠ SỞ DỮ LIỆU
                                                    Lý thuyết:
Cơ sở dữ liệu: Một CSDL là một tập hợp các dữ liệu có liên quan tới nhau, chứa thông tin về 1 tổ chức nào đó
(như 1 trường học, ngân hàng, thư viện...) được lưu trữ trên các thiết bị nhớ của máy tính để đáp ứng nhu cầu khai
thác thông tin của nhiều người sử dụng với nhiều mục đích khác nhau.
Hệ quản trị CSDL: Phần mềm cho phép nhiều người dùng giao tiếp với CSDL, cung cấp 1 môi trường thuận lợi
và hiệu quả để tìm kiếm và lưu trữ thông tin của CSDL được gọi là hệ quản trị CSDL.
Hệ CSDL: Ngươi ta dùng cụm từ hệ CSDL để chỉ một CSDL và một hệ quản trị CSDL áp dụng trên CSDL đó.
Lược đồ CSDL: toàn bộ mô tả CSDL được gọi là lược đồ CSDL. VD hoten: kiểu text 30, namsinh kieu so>1980
Thể hiện của CSDL: Cần phân biệt mô tả của CSDL (lược đồ) với bản thân CSDL.
- Lược đồ CSDL được xác định trong quá trong quá trình thiết kế CSDL và gần như không thay đổi theo thời
gian.
- Trong khi đó bản thân CSDL lại thường xuyên thay đổi do dữ liệu được thêm vào, xóa đi hay cập nhật.
Toàn bộ dữ liệu được lưu trữ trong CSDL tại 1 thời điểm nhất định, gọi là thể hiện của CSDL.
Siêu khóa: Siêu khóa của 1 lược đồ quan hệ R là một tập hợp gồm 1 hay nhiều thuộc tính cảu lược đồ R có tính
chất xác định duy nhất 1 bộ trong mỗi thể hiện của R.
VD cho lược đồ R
{SDB, ten,diem} => các khóa con K1={SBD}; K2={SBD,Ten}; K3={SBD,Diem}; K4={SBD,diem, ten}.
=> K1,K2,K3,K4 là các siêu khóa
Khóa: Khóa của 1 lược đồ quan hệ là một siêu khóa của lược đồ này sao cho cho mọi tập con thực sự của nó
không là siêu khóa.
VD: Xét K2 có 2 tập con thực sự {SBD}, {ten}, vì SBD là siêu khóa nên K2 không là khóa => K1= {SBD} là
khóa của lược đồ quan hệ R.
Chú ý: Một lược đồ quan hệ có thể có nhiều khóa.
Khóa của lược đồ quan hệ:
Cho U là tập các thuộc tính, F: là tập các phụ thuộc hàm trên U, K: là tập con của U (K ⊆ U). Ta nói K là 1 khóa
của lược đồ quan hệ nếu:
i)K+ = U;
ii) ∀A ∈ K thì {K = {A}}+ ≠ U
Siêu khóa: Nếu K chỉ thỏa mãn (i) thì K gọi là siêu khóa của lược đồ quan hệ
VD: R {SBD, Ten, Diem}
F = {SBD → Ten; SBD → Diem}
K1 {SBD,Ten}
K1+ ={SBD, Ten, Diem} = U ⇒ K1 là siêu khóa khi (K1,{Ten} + = (SBD)+ = U ⇒ Không thỏa mãn (ii) nên K 1
không là khóa
Khóa ngoài: Khóa ngoài của một lược đồ quan hệ là một tập hợp 1 hay nhiều thuộc tính là khóa của 1 lược đồ
quan hệ khác.
VD: R1 {SBD, ten, NS, Fach}; R2 {FACH, Diem} = Fach là khóa ngoài.
Các thao tác trên CSDL quan hệ:
1 Phép chèn:
Cú pháp: Insert (<tên quan hệ>;<giá trị bộ dữ liệu >)
VD: R{SBD, ten, diem}
INSERT (R;’A009”,’Mai’,9)
Phép xóa:
Cú pháp: DELETE (<Tên quan hệ>;<Giá trị bộ dữ liệu cần xóa>)
Hoặc DELETE (<Tên quan hệ>;<khóa>=<Giá trị khóa>)
VD: DELETE (R;’A009’,’Mai’,9)
DELETE (R;SBD=’A009’)
Phép cập nhật
UPDATE (<Tên quan hệ>;<Giá trị bộ cần cập nhật>;<biểu thức giá trị mới>)
Hoặc UPDATE (<Tên quan hệ>;<Biểu thức khóa của bộ cần cập nhật>;<biểu thức giá trị mới>)
VD: UPDATE( R;’A009’,’Mai’,9:Diem=7)
UPDATE (R;”SBD=’A009’; Diem=7)
Bao đóng: Cho U là tập thuộc tính, F là tập phụ thuộc hàm xác định trên U, và X là tập con của U (X⊆U)
Ta gọi bao đóng của tập thuộc tính X đối với tập phụ thuộc F, ký hiệu X +F là tập các thuộc tính A, sao cho X xác
định A được suy diễn từ F nhờ các quy tắc suy diễn Amstrong ( X + ≡ X+F = {A∈U/(X->A)∈ F+}
Bổ để: X--> Y (X xác định Y) được suy diễn từ F nhờ vào hệ quy tắc Amstrong khi và chỉ khi Y⊆X+
 Thuật toán tìm bao đóng:
-Vào: +U
         +F
         +X⊆U
-Ra: X+
Phương pháp:
Ta tìm 1 dãy những tập thuộc tính X1,X2,X3 theo quy tắc sau đây:
B1: Đặt X0 = X
B2:Với mỗi chỉ số i lần lượt nhận giá trị =1, mỗi bước tăng lên 1 đơn vị ta thực hiện như sau:
+Tìm phụ thuộc hàm trong F sao cho { Vế trái ⊆ Xi-1 ; Vế phái không ⊆ Xi-1
+Nếu tìm thấy thì Xi= (Xi-1∪Vế phải
+Nếu không tìm được một phục thuộc hàm nào như vậy thì chuyển tới bước 3.
Bước 3: Thuật toán kết thúc khi Xi = Xi-1 và X+=Xi
Hệ tiên đề Armstrong
1.Các quy tắc suy diễn:
Cho U là tập các thuộc tính
F là tập các phụ thuộc hàm
X,Y,Z ⊆ U
Khi đó có:
+Tính phản xạ: Nếu Y là con của X ( Y⊆X) thì X-->Y ( X xác định Y)
+Tính tăng trưởng:
Nếu X-->Y thì XZ-->YZ và Z⊆U
+Tính bắc cầu:
Nếu X-->Y và Y-->Z thì X-->Z
2.Hệ quy tắc bổ sung:
+Quy tắc hợp: Nếu X-->Y và X-->Z thì X-->YZ
+Quy tắc giả bắc cầu: Nếu X-->Y và WY-->Z thì WX-->Z
+Quy tác tách: Nếu X-->Y và Z⊆Y thì X-->Z
                                                         Bài tập
Đại số quan hệ và SQL:
KN Khả hợp: hai quan hệ được gọi là khả hợp với nhau nếu chúng có chung tập thuộc tính.
Phép hợp: Cho hai quan hệ r và s khả hợp, tập hợp của r và s ký hiệu là (r ∪ s) là tập hợp tất cả các bộ thuộc vào
r hoặc s.
         r ∪ s ={t/t∈r hoặc t∈s)
Phép giao: Cho hai quan hệ r và s khả hợp
Giao của r và s ký hiệu là (r ∩ s) là tập tất cả các bộ thuộc đồng thời cả r và s
         r ∩ s ={t/t∈r và t∈s)
Phép trừ: Cho hai quan hệ r và s khả hợp, hiệu của r và s ký hiệu (r-s) là tập hợp tất cả các bộ thuộc r nhưng
không thuộc s
         r - s = {t/t∈r và t ∉s)
Phép tích đề các: Cho quan hệ r xác định trên tập thuộc tính {A1,A2,A3,...,Am}
s xác định trên tập thuộc tính {B1,B2,..,Bn}
Tích đề các của r và s ký hiệu là (r*s) được định nghĩa như sau: là tập các bộ có m+n thành phần trong đó có m
thành phần đầu là một bộ thuộc r và n thành phần sau là 1 bộ thuộc s.
r*s={(A1,A2,...,Am),(B1,B2,...,Bn) =T|(A1,A2,...,Am)∈ r và (B1,B2,...,Bn) ∈ s}
Phép chia: Cho quan hệ r xác định trên tập thuộc tính {A1,A2,A3,...,Am,A m+1, ...An,}
s xác định trên tập thuộc tính {A1,A2,..,Am}
Phép chia r cho s ký hiệu là (r ÷ s) là tập các bộ gồm (n-m) thành phần sao cho mỗi bộ này khi ghép với mọi bộ
trong s sẽ cho kết quả là bộ trong r
(r ÷ s) = {t=(Am=1,...,An)| ∀ (A1,A2,...,Am) thì (A1,A2,...,An)∈r}
Các phép toán đặc biệt trên quan hệ:
1. Phép chọn: Ký hiệu là δ
Phép chọn được dùng để xây dựng để xây dựng 1 tập con các bộ của 1 quan hệ đã cho, các bộ này phải thỏa mãn
1 điều kiện (gọi là điều kiện chọn). Điều kiện chọn được biểu diễn bằng 1 biểu thức logic, là tổ hợp của các toán
hạng, mỗi toán hạng là phép so sánh đơn giản. Biểu thức logic sẽ cho giá trị là True hoặc False. Các phép so sánh
trong biểu thức: >;<;=;<=;<=;<>
-Các phép logic: And, or, not (∧: và; ∨: Hoặc; ¬ phủ định)
δC(r)={t∈r/c(t)=true}}
Phép chọn c trên r là tập tất cả các bộ t sao cho c(t) = true.
-Phép chiếu: (∏)
-Phép chiếu 1 quan hệ r trên tập thuộc tính X dùng để xây dựng 1 quan hệ mới từ quan hệ r đã cho bằng cách loại
bỏ đi một số thuộc tính của r, chỉ giữ lại các thuộc tính X
∏X(r) = {t[X]| t∈r}
Phép kết nối: (            )
 khái niệm “xếp cạnh nhau”
Cho 2 bộ p=(p1,p2,...,pm)
q=(q1, q2,q3,...,qn)
xếp cạnh nhau của p và q kí hiệu là (p,q) và được định nghĩa như sau:
(p,q) = (p1,p2,...,pm,q1,q2,...,qn)
-Phép kết nối : cho r là 1 quan hệ xác định trên tập thuộc tính r[a1,a2,...,an}; s{b1,b2,b3,...,bm}
θ là 1 trong 6 phép so sánh (>, <, =; ≥; ≤; ≠); ai ∈ {a1,a2,...,an}; bj ∈ {b1,b2,...,bm}.
Phép kết nối θ(tê ta) của quan hệ r và s theo điều kiện ai θ bj được ký hiệu là
r          s = {(t,u)| t∈ r, u∈ s; t[ai] θ u[bj]}
  a i θ bj
Định nghĩa: phép kết nối θ là tập các xếp cạnh nhau sao cho t∈ r, u∈ s và t[ai] θ u[bj]
Phép kết nối bằng : Khi θ là phép so sánh “=” ta có phép kết nối bằng.
Phép kết nối tự nhiên: Khi kết nối bằng tại thuộc tính cùng tên của hai quan hệ, ta có phép kết nối tự nhiên và ký
hiệu là (*). Trong kết quả của phép kết nối tự nhiên chỉ giữ lại một thuộc tính cùng tên của 2 quan hệ.
Các phép toán bổ sung:
Max: giá trị lớn nhất; Min: giá trị nhỏ nhất; Average: Giá trị trung bình; cout: Đếm;
*Kiểu câu hỏi thứ hai cũng không thực hiện được là các câu hỏi cần phải sử dụng phép gộp nhóm. Do đó người
ta xây dựng phép toán bổ sung để thực hiện 2 kiểu câu hỏi kiểu như sau:
<Thuộc tính gom nhóm>F< tên quan hệ>
                            <hàm><thuộc tính>
Nếu trong biểu thức không có biểu thức gộp nhóm thì các hàm được áp dụng trên thuộc tính của toàn bộ bảng
quan hệ.
Bài tập: Cho 3 quan hệ
CT ( MCT, TenCT): Danh sách công ty (mã công ty, tên công ty)
SP (MSP,TenSP,Gia): Danh sách sản phẩm (mã sản phẩm, tên sản phẩm, giá)
BAN (MCT, MSP,SL): Danh sách chuyến hàng
1.Đưa ra thông tin đầy đủ về các công ty
ΠMCT, TenCT(CT)
2.Đưa ra mã sản phẩm của những sản phẩm có giá lớn hơn 5 triệu.
ΠSP(δGia>5(SP)
3.Đưa ra tên công ty đã bán các sản phẩm có số lượng = 100
KQ1 ← δSL = 100(BAN)
KQ2 ← CT*KQ1
KQ ← ΠTenCT (KQ2)
4.Đưa ra tên công ty , tên sản phẩm, giá của các sản phẩm đã được bán, có giá bằng 1 triệu đồng
Đưa ra sản phẩm có giá 1 triệu:
KQ1 ← ΠMSP,TenSP (δGia = 1(SP))
Tìm chuyến hàng bán sản phẩm đó
KQ2 ← KQ1*BAN
Lấy ra MCT, tên sản phẩm
KQ3← ΠMCT,TenSP(KQ2)
Đưa ra tên công ty, tên sản phẩm
KQ← ΠMCT,TenSP(KQ3*CT)
Ví dụ 2:
Cho CSDL gồm 4 quan hệ sau:
NV (Ten, TP) Nhân viên (tên, thành phố sinh sống)
LAM (Ten, TenCT,Luong) Làm việc
CT (TenCT, TP) Công ty
QL (Ten, TT) Quản lý (tên, thủ trưởng)
Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ đại số quan hệ và SQL.
1, Tìm tên và thành phố sinh sống của các nhân viên làm việc cho công ty FBC:

KQ1← δTenCT=’FBC’(LAM)                     Creat view FBC as (Selection *
                                                               From LAM
Tìm tên và thành phố sinh sống:
                                                               Where (TenCT=”FBC”)
KQ← ΠTen,TP (KQ1*NV)                       Select Ten,TenTP
                                           From NV
                                           Where Ten in (select Ten
                                                         From FBC)

2.Tìm tên và thành phố sinh sống của các nhân viên làm việc cho FBC và có lương >2 triệu
KQ1← δTenCT=’FBC’,Luong>2(LAM)             Creat view FBC as (Selection *
                                                               From LAM
Tìm tên và thành phố sinh sống:
                                                               Where (TenCT=”FBC”) and (Luong>2)
KQ← ΠTen,TP (KQ1*NV)                       Select Ten,TenTP
                                           From NV
                                           Where Ten in (select Ten
                                                          From FBC)
3.Tìm tên các nhân viên sống trong cùng thành phố với công ty họ làm việc

*Kết nối CT với làm                       Select Ten
KQ1← (CT*LAM)                             From NV,LAM,CT
*Kết nối NV với KQ1                       Where (NV.Ten=Lam.Ten) and (LAM.TenCT=CT.TenCT)
KQ2← (KQ1*NV)
*Tìm tên nhân viên
KQ ←ΠTen(KQ2)
4.Tìm các nhân viên không làm việc cho FBC
KQ ← δTenCT ≠ ‘FBC’(LAM)                  Select Ten
                                          From LAM
                                          Where (TenCT <>’FBC’
5.Tìm tên của các nhân viên có lương cao hơn lương của mọi nhân viên ở công ty FBC
*Chọn các nhân viên làm việc ở FBC                           Select Ten
                                                             From LAM
KQ ← δTenCT = ‘FBC’(LAM)                                     Where Luong>(Select Max(Luong)
                                                                             From LAM
*Tìm max lương của FBC                                                        Where (TenCT =’FBC’)

        KQ2 ← FMax Luong(KQ1)

*Tìm các nhân viên có lương cao hơn lương của mọi
nhân viên FBC

KQ ←ΠTen(δLương>Max_Luong(LAM              KQ2)

6.Giả sử công ty FBC đặt tại nhiều thành phố. Tìm tên tất cả các công ty đặt tại nơi có công ty FBC
*Tìm các thành phố mà ct FBC đặt tại đó                Select TenCT
KQ ← ΠTP(δTenCT=’FBC’(CT)                              From CT
                                                       Where TP as (Select TP
*.Chọn các công ty không phải là FBC, TenTP
                                                                    From CT
KQ2 ←δTenCT ≠’FBC”(CT)                                               Where TenCT = ‘FBC’)
*Tìm công ty mà đặt trụ sở tại mọi nơi mà có FBC
KQ ←ΠTenCt(KQ2*KQ1)
 7. Tìm tên của tất cả các nhân viên có lương cao hơn lương trung bình của công ty của họ.
*Tính lương trung bình của từng công ty                Select TenCT, AVG(Luong)
KQ1 ← TenCT FAverage Luong (LAM)                 From LAM
                                                 Group by TenCT
KQ2← LAM              KQ1)
                                                 as KQ1 ( TenCT,TBL)
           TenCT=TenCT                           Select Ten
            Luong >Avarege_Luong                 From KQ1,LAM
*Đưa ra tên NV                                   Where (KQ1.TenCT = LAM.TenCT) and (Luong>TBL)
KQ ←ΠTen(KQ2)
 8.Tìm tên của các nhân viên sống trong cùng thành phố với thủ trưởng của họ.
Thông tin về nhân viên                         Creat view Thutruong as
KQ1 ← (NV*QL)                                  select Ten, TT,TP
Thông tin về thủ trưởng                        From NV,QL
KQ2 ←ΠTT,TP (NV           QL )                 where NV.Ten = QL.TT
                Ten = TT                       Select Ten
Tìm nhân viên cùng thành phố với thủ From NV,Thutruong
                                               Where (NV.Ten = Thutruong.Ten) and (NV.TP=Thutruong.TP)
trưởng của họ
KQ ←ΠTen(KQ1*KQ2)
9.Tìm công ty có nhiều nhân viên nhất.
*Đếm số nhân viên của từng công ty           Creat view TongNV as
KQ1 ← TenCT FCount Ten(LAM)                                    (Select TenCT, Count(ten) as SoNV
*Tìm công ty có nhiều nhân viên nhất                           From LAM
KQ2 ← FMax Count_Ten(KQ1)                                     Group by TenCT
KQ ← ∏TenCT(KQ1           KQ2)               Select TenCT
                                             From TongNV
                                             Where (SoNV = (Select Max (SoNV)
                                                            From TongNV)


Bao đóng
Bài 1: Cho U= ABCDE
F = {A→C (1); BC→D(2); D→E(3); E→A(4)}
A, Tính AB+
B1: Đặt X0 = AB
B2: Tính X1:
Có (1) thỏa mãn { A ⊆AB = X0 và C không ⊆ AB) Khi đó X1 =X0∪C = ABC
Tính X2: =X1∪D = ABCD
Tính X3:
 Có (3) thỏa mãn {D⊆ABCD = X2 và E không ⊆ ABCD) ⇒X3= X2 ∪ E = ABCDE
Tính X4: Không tìm thấy phục thuộc hàm nào
Vậy (AB)+ = ABCDE
b) Tính (BD)+ - D+
X0= BD
X1=BD ∪ E = BDE vì từ (3) {D ⊆BD và E không ⊆ BD}
X2= BDE ∪ A = BDEA vì {E ⊆BDE và A không ⊆ BDE}
X3=ABDE ∪ C = ABCDE vì từ 1 {A ⊆ABDE và C không ⊆ ABDE)
Vậy (BD)+ = ABCDE
X0=D
X1=D ∪ E = DE vì từ (3) {D⊆ D và E không ⊆ D}
X2= DE ∪ A = ADE vì từ (4) {E⊆ DE và A không ⊆ DE}
X3= ADE ∪ C = ACDE vì từ (1) { A⊆ ADE và C không ⊆ ADE}
(D)+ = ACDE
Vậy (BD)+ - (D)+ = {ABCDE} – {ACDE} = {B}
Khóa
Thuật toán tìm 1 khóa
* Vào :+ Cho U: tập thuộc tính
         +F={ti-pi| ti,pi⊆ U,ti ∩ pi = ∅, i=1,2,3..,n}
* Ra: Khóa X
Phương pháp:
Đặt P=Un Pi
    i=1
T = Un Ti
    i=1
Bước 1: Đặt X:=UV
Bước 2: Nếu X+ = U thì tới bước 5
Bước 3: X:=(UP) ∪ (T∩P)
Bước 4: Với mỗi Ai ∈ (T∩P) làm như sau :
+) X := X-Ai
+)Nếu X+ ≠ U thì X :=X ∪ {Ai}
Bước 5 : Kết luận : X là khóa
VD : U=ABCDE
F={AB →E (1) ; E →AB(2) ; D→ C(3)}. Tìm 1 khóa của lược đồ trên.
Giải : Đặt T = Un Pi = ABCD
               i =1
    n
P=U Pi = ACDE
  i=1
Bước 1 : Gán X=UP = ABCDE  ACDE = {B}
Bước 2 : Tính X+=B+ =B ≠U (vì B không suy được ra cái gì cả}
Bước 3 : X :=(UP) ∪ (T∩P) = P∪ADE = BADE
Không có thuộc tính nào suy ra được B chắc chắn trong khóa nhất định chứa B. Còn các thành phần
ADE thì trong khóa sẽ chứa 1 trong các thành phần này : Thử từng thành phần trong nhóm ADE
Nếu thử bỏ từng phần tử đi rồi lấy bao đóng mà bao đóng ≠U ⇒Phần tử đó rất quan trọng ⇒ Trong
khóa chứa nó.
Với mỗi phần tử trong ADE làm như sau :
+Xét bỏ A : Khi đó X=BDE
Có X+ =(BDE)+ = BDECA = U ⇒ Bỏ được A
+Xét bỏ D = X còn BDE; Khi đó X=BE
Có X+= (BDE)+= BACDE = U ⇒ Bỏ được D
+Xét bỏ E: Khi đó X=B có X+=B+ =B≠U ⇒ Không bỏ được E.
Vậy khóa là BE


Kiểm tra tính kết nối không thất thoát (tổn thất) của 1 phép tách
Vào: + U = {A1,A2,..,An}
        + Tập các phụ thuộc hàm F
        + Phép tách ℘= (U1, U2, …, Uk}
Ra: Kết luận ℘ có phải là phép tách kết nối không thất thoát hay không?
Phương pháp:
Bước 1: Lập bảng kxn, với k dòng được đại diện bởi U1,U2,…,Uk; n cột được đại diện bởi n thuộc tính A1,A2,
…,An. Ô giao nhay tại dòng I, cột j ta điền ký tự aj nếu aj ∈ui, ngược lại ta điền ký hiệu bj
Bước 2: với mỗi X → Y∈F, ta xét các dòng có ký hiệu bằng nhau trên tập thuộc tính X, ta sẽ làm các dòng này
bằng nhau trên X theo quy tắc: Nếu tồn tại một ký hiệu có dạng aj thì các ký hiệu còn lại được đổi thành ạ. Nếu
không có giá trị nào dạng aj thì lấy tùy ý một ký hiệu bij để làm bằng.
Bước 3: Quá trình lặp sẽ dừng khi xảy ra trong 2 khả năng sau:
-Nếu trong bảng có 1 dòng gồm toàn ký hiệu dạng aj thì phép tách ℘là phép tách không thất thoát.
- Sau khi áp dụng 1 lượt các phép thuộc hàm trong F mà không có thêm một thay đổi nào nữa so với bảng ở lượt
trước thì phép tách ℘ là phép tách thất thoát.
VD: Cho U = {S,A,I,P} và F = {S→A (1) , SI → P (2)}. Kiểm tra xem P = (SA,SIP) có thất thoát hay không?
Bước 1: Lập bảng khởi tạo
i                   0                   1                   2                   3              4
i =1                SA                  a1                  a2
i=2                 SIP                 a1                                      a3             a4
Bước 2: Áp dụng lượt 1 các phụ thuộc hàm F
i                  0                  1                 2                   3                  4
i =1               SA                 a1                a2
i=2                SIP                a1                a2                  a3                 a4
⇒Sau khi áp dụng trong bảng xuất hiện 1 dòng chứa toàn bộ ký hiệu a ⇒ Phép tách không thất thoát
Tách BCNF
Thuật toán:
* Vào: R=<U,F>
* Ra: Phép tách ℘ = (R1, R2, …,Rk) không thất thoát với Ri ở dạng chuẩn BCNF ∀ I = 1,…,k
Phương pháp:
Bước 1: ℘ chỉ gần R: ℘ = (R)
Bước 2: + Nếu mọi lược đồ trong ℘ đều thuộc BCNF thì chuyển sang bước 3
+ Ngược lại, tìm được lược đồ S = <Us, Fs> trong ℘ mà S không là BCNF. Chọn một phụ thuộc hàm X→A ∈ Fs
mà x không phải là siêu khóa của S, và A∈X. Khi đó ta thay thế S bởi 2 lược đồ ứng với tập thuộc tính XA và Us-
{A}. Quay trở lại bước 2.
Bước 3: Kết thúc.
VD: Cho R = (U,F); U = CTHRSG
F = {C→T (1); HR →C (2); HT →R (3); CS →G (4); HS →R (5)}
Tách R thành các lược đồ quan hệ ở BCNF
Khóa của R là HS
Giải:
                      U= CTHRSG
                      F = {C→T; HR →C; HT →R; CS →G; HS →R}




  U1=CSG                                  V1=CTHRS
  F1=(CS→G)                               FV1 = {C→T; HR →C ; HT →R; HS →R }
  Khóa là CS                              Khóa là HS




             U2=CT                                   V3=CHRS
             F2=(C→T)                                FV3 = {HR →C ; HC →R; HS →R }
             Khóa là C                               Khóa là HS




                    U3=HRC                                         V4=CHC
                    F2=(HR→C, HC → R)                              FV4 ={HS →C }
                    Khóa là CH hoặc HR                             Khóa là HS

Weitere ähnliche Inhalte

Was ist angesagt?

New microsoft power point presentation
New microsoft power point presentationNew microsoft power point presentation
New microsoft power point presentation
doanchitrung
 
Bộ sách về phương trình hàm
Bộ sách về phương trình hàmBộ sách về phương trình hàm
Bộ sách về phương trình hàm
Thế Giới Tinh Hoa
 
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
Duy Duy
 
Chuong+1 ______
Chuong+1  ______Chuong+1  ______
Chuong+1 ______
Phi Phi
 
Chương 1 dai so truu tuong
Chương 1 dai so truu tuongChương 1 dai so truu tuong
Chương 1 dai so truu tuong
vpmity
 

Was ist angesagt? (20)

chuong 3. quan he
chuong 3. quan hechuong 3. quan he
chuong 3. quan he
 
04 mat102-bai 1-v1.0
04 mat102-bai 1-v1.004 mat102-bai 1-v1.0
04 mat102-bai 1-v1.0
 
C1 dk mo_ok
C1 dk mo_okC1 dk mo_ok
C1 dk mo_ok
 
Toan cao cap a1
Toan cao cap a1Toan cao cap a1
Toan cao cap a1
 
Phương trình hàm đa thức
Phương trình hàm đa thứcPhương trình hàm đa thức
Phương trình hàm đa thức
 
New microsoft power point presentation
New microsoft power point presentationNew microsoft power point presentation
New microsoft power point presentation
 
Bộ sách về phương trình hàm
Bộ sách về phương trình hàmBộ sách về phương trình hàm
Bộ sách về phương trình hàm
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
Topo daicuong1[1]
Topo daicuong1[1]Topo daicuong1[1]
Topo daicuong1[1]
 
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
 
Tsch csdl 01 - dhcntt
Tsch   csdl 01 - dhcnttTsch   csdl 01 - dhcntt
Tsch csdl 01 - dhcntt
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
 
Thiet Ke Co So Du Lieu4
Thiet Ke Co So Du Lieu4Thiet Ke Co So Du Lieu4
Thiet Ke Co So Du Lieu4
 
Chuong+1 ______
Chuong+1  ______Chuong+1  ______
Chuong+1 ______
 
Chap4 new
Chap4 newChap4 new
Chap4 new
 
Chương 1 dai so truu tuong
Chương 1 dai so truu tuongChương 1 dai so truu tuong
Chương 1 dai so truu tuong
 
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
 
Bt dai so hoang
Bt dai so hoangBt dai so hoang
Bt dai so hoang
 
Functional dependencies PHỤ THUỘC HÀM
Functional dependencies PHỤ THUỘC HÀMFunctional dependencies PHỤ THUỘC HÀM
Functional dependencies PHỤ THUỘC HÀM
 
xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3xử lý số tín hiệu -Chuong 3
xử lý số tín hiệu -Chuong 3
 

Andere mochten auch (10)

Css
CssCss
Css
 
Sql understanding
Sql understandingSql understanding
Sql understanding
 
52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query
52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query
52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query
 
Lenh sql
Lenh sqlLenh sql
Lenh sql
 
Giai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtvGiai bai tap_chuong_3truy-van-rbtv
Giai bai tap_chuong_3truy-van-rbtv
 
De12
De12De12
De12
 
Dt 5 145
Dt 5 145Dt 5 145
Dt 5 145
 
đề Thi môn access
đề Thi môn accessđề Thi môn access
đề Thi môn access
 
Đề thi Access mới nhất 2014 - Part 3
Đề thi Access mới nhất 2014 - Part 3Đề thi Access mới nhất 2014 - Part 3
Đề thi Access mới nhất 2014 - Part 3
 
De access 1 (2013)
De access 1 (2013)De access 1 (2013)
De access 1 (2013)
 

Ähnlich wie 65 csdl

Dai so quan he
Dai so quan heDai so quan he
Dai so quan he
Phùng Duy
 
Buoi12-13-14_SV (1).ppt
Buoi12-13-14_SV (1).pptBuoi12-13-14_SV (1).ppt
Buoi12-13-14_SV (1).ppt
HMCHONG1
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
guest717ec2
 
Chap07 thiet ke csdl
Chap07 thiet ke csdlChap07 thiet ke csdl
Chap07 thiet ke csdl
vukhucxanh
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThem
CNTT-DHQG
 
Hàm số một biến, đạo hàm và vi phân của hàm số một biến
Hàm số một biến, đạo hàm và vi phân của hàm số một biếnHàm số một biến, đạo hàm và vi phân của hàm số một biến
Hàm số một biến, đạo hàm và vi phân của hàm số một biến
ngTonH1
 

Ähnlich wie 65 csdl (20)

Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6
 
Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5 Cơ sở dữ liệu PTIT slide 5
Cơ sở dữ liệu PTIT slide 5
 
Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1Cấu trúc dữ liệu cơ bản 1
Cấu trúc dữ liệu cơ bản 1
 
phuthuochamnhomd22.pptx. Phụ thuộc hàm Cơ sở dữ liệu
phuthuochamnhomd22.pptx. Phụ thuộc hàm Cơ sở dữ liệuphuthuochamnhomd22.pptx. Phụ thuộc hàm Cơ sở dữ liệu
phuthuochamnhomd22.pptx. Phụ thuộc hàm Cơ sở dữ liệu
 
02 phep tinhquanhe
02 phep tinhquanhe02 phep tinhquanhe
02 phep tinhquanhe
 
Phan2
Phan2Phan2
Phan2
 
Dai so quan he
Dai so quan heDai so quan he
Dai so quan he
 
Buoi12-13-14_SV (1).ppt
Buoi12-13-14_SV (1).pptBuoi12-13-14_SV (1).ppt
Buoi12-13-14_SV (1).ppt
 
ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
 
buoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.pptbuoi2_MoHinhQuanHe.ppt
buoi2_MoHinhQuanHe.ppt
 
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptxc11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
c11_phanraluocdo (1)dấdasdadsadsadasdsad.pptx
 
Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh Hoàng
 
W03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptxW03_Thietkecosodulieulogic.pptx
W03_Thietkecosodulieulogic.pptx
 
Chap07 thiet ke csdl
Chap07 thiet ke csdlChap07 thiet ke csdl
Chap07 thiet ke csdl
 
Lý Thuyết Và Bài Tập Thực Hành Golden Common Lisp - ĐH Bách Khoa TP.HCM
Lý Thuyết Và Bài Tập Thực Hành Golden Common Lisp - ĐH Bách Khoa TP.HCM Lý Thuyết Và Bài Tập Thực Hành Golden Common Lisp - ĐH Bách Khoa TP.HCM
Lý Thuyết Và Bài Tập Thực Hành Golden Common Lisp - ĐH Bách Khoa TP.HCM
 
Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7 Cơ sở dữ liệu PTIT slide 7
Cơ sở dữ liệu PTIT slide 7
 
TRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdfTRNG_DI_HC_NHA_TRANG.pdf
TRNG_DI_HC_NHA_TRANG.pdf
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThem
 
Hàm số một biến, đạo hàm và vi phân của hàm số một biến
Hàm số một biến, đạo hàm và vi phân của hàm số một biếnHàm số một biến, đạo hàm và vi phân của hàm số một biến
Hàm số một biến, đạo hàm và vi phân của hàm số một biến
 

65 csdl

  • 1. ÔN TẬP HỌC PHẦN CƠ SỞ DỮ LIỆU Lý thuyết: Cơ sở dữ liệu: Một CSDL là một tập hợp các dữ liệu có liên quan tới nhau, chứa thông tin về 1 tổ chức nào đó (như 1 trường học, ngân hàng, thư viện...) được lưu trữ trên các thiết bị nhớ của máy tính để đáp ứng nhu cầu khai thác thông tin của nhiều người sử dụng với nhiều mục đích khác nhau. Hệ quản trị CSDL: Phần mềm cho phép nhiều người dùng giao tiếp với CSDL, cung cấp 1 môi trường thuận lợi và hiệu quả để tìm kiếm và lưu trữ thông tin của CSDL được gọi là hệ quản trị CSDL. Hệ CSDL: Ngươi ta dùng cụm từ hệ CSDL để chỉ một CSDL và một hệ quản trị CSDL áp dụng trên CSDL đó. Lược đồ CSDL: toàn bộ mô tả CSDL được gọi là lược đồ CSDL. VD hoten: kiểu text 30, namsinh kieu so>1980 Thể hiện của CSDL: Cần phân biệt mô tả của CSDL (lược đồ) với bản thân CSDL. - Lược đồ CSDL được xác định trong quá trong quá trình thiết kế CSDL và gần như không thay đổi theo thời gian. - Trong khi đó bản thân CSDL lại thường xuyên thay đổi do dữ liệu được thêm vào, xóa đi hay cập nhật. Toàn bộ dữ liệu được lưu trữ trong CSDL tại 1 thời điểm nhất định, gọi là thể hiện của CSDL. Siêu khóa: Siêu khóa của 1 lược đồ quan hệ R là một tập hợp gồm 1 hay nhiều thuộc tính cảu lược đồ R có tính chất xác định duy nhất 1 bộ trong mỗi thể hiện của R. VD cho lược đồ R {SDB, ten,diem} => các khóa con K1={SBD}; K2={SBD,Ten}; K3={SBD,Diem}; K4={SBD,diem, ten}. => K1,K2,K3,K4 là các siêu khóa Khóa: Khóa của 1 lược đồ quan hệ là một siêu khóa của lược đồ này sao cho cho mọi tập con thực sự của nó không là siêu khóa. VD: Xét K2 có 2 tập con thực sự {SBD}, {ten}, vì SBD là siêu khóa nên K2 không là khóa => K1= {SBD} là khóa của lược đồ quan hệ R. Chú ý: Một lược đồ quan hệ có thể có nhiều khóa. Khóa của lược đồ quan hệ: Cho U là tập các thuộc tính, F: là tập các phụ thuộc hàm trên U, K: là tập con của U (K ⊆ U). Ta nói K là 1 khóa của lược đồ quan hệ nếu: i)K+ = U; ii) ∀A ∈ K thì {K = {A}}+ ≠ U Siêu khóa: Nếu K chỉ thỏa mãn (i) thì K gọi là siêu khóa của lược đồ quan hệ VD: R {SBD, Ten, Diem} F = {SBD → Ten; SBD → Diem} K1 {SBD,Ten} K1+ ={SBD, Ten, Diem} = U ⇒ K1 là siêu khóa khi (K1,{Ten} + = (SBD)+ = U ⇒ Không thỏa mãn (ii) nên K 1 không là khóa Khóa ngoài: Khóa ngoài của một lược đồ quan hệ là một tập hợp 1 hay nhiều thuộc tính là khóa của 1 lược đồ quan hệ khác. VD: R1 {SBD, ten, NS, Fach}; R2 {FACH, Diem} = Fach là khóa ngoài. Các thao tác trên CSDL quan hệ: 1 Phép chèn: Cú pháp: Insert (<tên quan hệ>;<giá trị bộ dữ liệu >) VD: R{SBD, ten, diem} INSERT (R;’A009”,’Mai’,9) Phép xóa: Cú pháp: DELETE (<Tên quan hệ>;<Giá trị bộ dữ liệu cần xóa>) Hoặc DELETE (<Tên quan hệ>;<khóa>=<Giá trị khóa>) VD: DELETE (R;’A009’,’Mai’,9) DELETE (R;SBD=’A009’) Phép cập nhật UPDATE (<Tên quan hệ>;<Giá trị bộ cần cập nhật>;<biểu thức giá trị mới>) Hoặc UPDATE (<Tên quan hệ>;<Biểu thức khóa của bộ cần cập nhật>;<biểu thức giá trị mới>) VD: UPDATE( R;’A009’,’Mai’,9:Diem=7) UPDATE (R;”SBD=’A009’; Diem=7) Bao đóng: Cho U là tập thuộc tính, F là tập phụ thuộc hàm xác định trên U, và X là tập con của U (X⊆U) Ta gọi bao đóng của tập thuộc tính X đối với tập phụ thuộc F, ký hiệu X +F là tập các thuộc tính A, sao cho X xác định A được suy diễn từ F nhờ các quy tắc suy diễn Amstrong ( X + ≡ X+F = {A∈U/(X->A)∈ F+} Bổ để: X--> Y (X xác định Y) được suy diễn từ F nhờ vào hệ quy tắc Amstrong khi và chỉ khi Y⊆X+ Thuật toán tìm bao đóng:
  • 2. -Vào: +U +F +X⊆U -Ra: X+ Phương pháp: Ta tìm 1 dãy những tập thuộc tính X1,X2,X3 theo quy tắc sau đây: B1: Đặt X0 = X B2:Với mỗi chỉ số i lần lượt nhận giá trị =1, mỗi bước tăng lên 1 đơn vị ta thực hiện như sau: +Tìm phụ thuộc hàm trong F sao cho { Vế trái ⊆ Xi-1 ; Vế phái không ⊆ Xi-1 +Nếu tìm thấy thì Xi= (Xi-1∪Vế phải +Nếu không tìm được một phục thuộc hàm nào như vậy thì chuyển tới bước 3. Bước 3: Thuật toán kết thúc khi Xi = Xi-1 và X+=Xi Hệ tiên đề Armstrong 1.Các quy tắc suy diễn: Cho U là tập các thuộc tính F là tập các phụ thuộc hàm X,Y,Z ⊆ U Khi đó có: +Tính phản xạ: Nếu Y là con của X ( Y⊆X) thì X-->Y ( X xác định Y) +Tính tăng trưởng: Nếu X-->Y thì XZ-->YZ và Z⊆U +Tính bắc cầu: Nếu X-->Y và Y-->Z thì X-->Z 2.Hệ quy tắc bổ sung: +Quy tắc hợp: Nếu X-->Y và X-->Z thì X-->YZ +Quy tắc giả bắc cầu: Nếu X-->Y và WY-->Z thì WX-->Z +Quy tác tách: Nếu X-->Y và Z⊆Y thì X-->Z Bài tập Đại số quan hệ và SQL: KN Khả hợp: hai quan hệ được gọi là khả hợp với nhau nếu chúng có chung tập thuộc tính. Phép hợp: Cho hai quan hệ r và s khả hợp, tập hợp của r và s ký hiệu là (r ∪ s) là tập hợp tất cả các bộ thuộc vào r hoặc s. r ∪ s ={t/t∈r hoặc t∈s) Phép giao: Cho hai quan hệ r và s khả hợp Giao của r và s ký hiệu là (r ∩ s) là tập tất cả các bộ thuộc đồng thời cả r và s r ∩ s ={t/t∈r và t∈s) Phép trừ: Cho hai quan hệ r và s khả hợp, hiệu của r và s ký hiệu (r-s) là tập hợp tất cả các bộ thuộc r nhưng không thuộc s r - s = {t/t∈r và t ∉s) Phép tích đề các: Cho quan hệ r xác định trên tập thuộc tính {A1,A2,A3,...,Am} s xác định trên tập thuộc tính {B1,B2,..,Bn} Tích đề các của r và s ký hiệu là (r*s) được định nghĩa như sau: là tập các bộ có m+n thành phần trong đó có m thành phần đầu là một bộ thuộc r và n thành phần sau là 1 bộ thuộc s. r*s={(A1,A2,...,Am),(B1,B2,...,Bn) =T|(A1,A2,...,Am)∈ r và (B1,B2,...,Bn) ∈ s} Phép chia: Cho quan hệ r xác định trên tập thuộc tính {A1,A2,A3,...,Am,A m+1, ...An,} s xác định trên tập thuộc tính {A1,A2,..,Am} Phép chia r cho s ký hiệu là (r ÷ s) là tập các bộ gồm (n-m) thành phần sao cho mỗi bộ này khi ghép với mọi bộ trong s sẽ cho kết quả là bộ trong r (r ÷ s) = {t=(Am=1,...,An)| ∀ (A1,A2,...,Am) thì (A1,A2,...,An)∈r} Các phép toán đặc biệt trên quan hệ: 1. Phép chọn: Ký hiệu là δ Phép chọn được dùng để xây dựng để xây dựng 1 tập con các bộ của 1 quan hệ đã cho, các bộ này phải thỏa mãn 1 điều kiện (gọi là điều kiện chọn). Điều kiện chọn được biểu diễn bằng 1 biểu thức logic, là tổ hợp của các toán hạng, mỗi toán hạng là phép so sánh đơn giản. Biểu thức logic sẽ cho giá trị là True hoặc False. Các phép so sánh trong biểu thức: >;<;=;<=;<=;<> -Các phép logic: And, or, not (∧: và; ∨: Hoặc; ¬ phủ định)
  • 3. δC(r)={t∈r/c(t)=true}} Phép chọn c trên r là tập tất cả các bộ t sao cho c(t) = true. -Phép chiếu: (∏) -Phép chiếu 1 quan hệ r trên tập thuộc tính X dùng để xây dựng 1 quan hệ mới từ quan hệ r đã cho bằng cách loại bỏ đi một số thuộc tính của r, chỉ giữ lại các thuộc tính X ∏X(r) = {t[X]| t∈r} Phép kết nối: ( ) khái niệm “xếp cạnh nhau” Cho 2 bộ p=(p1,p2,...,pm) q=(q1, q2,q3,...,qn) xếp cạnh nhau của p và q kí hiệu là (p,q) và được định nghĩa như sau: (p,q) = (p1,p2,...,pm,q1,q2,...,qn) -Phép kết nối : cho r là 1 quan hệ xác định trên tập thuộc tính r[a1,a2,...,an}; s{b1,b2,b3,...,bm} θ là 1 trong 6 phép so sánh (>, <, =; ≥; ≤; ≠); ai ∈ {a1,a2,...,an}; bj ∈ {b1,b2,...,bm}. Phép kết nối θ(tê ta) của quan hệ r và s theo điều kiện ai θ bj được ký hiệu là r s = {(t,u)| t∈ r, u∈ s; t[ai] θ u[bj]} a i θ bj Định nghĩa: phép kết nối θ là tập các xếp cạnh nhau sao cho t∈ r, u∈ s và t[ai] θ u[bj] Phép kết nối bằng : Khi θ là phép so sánh “=” ta có phép kết nối bằng. Phép kết nối tự nhiên: Khi kết nối bằng tại thuộc tính cùng tên của hai quan hệ, ta có phép kết nối tự nhiên và ký hiệu là (*). Trong kết quả của phép kết nối tự nhiên chỉ giữ lại một thuộc tính cùng tên của 2 quan hệ. Các phép toán bổ sung: Max: giá trị lớn nhất; Min: giá trị nhỏ nhất; Average: Giá trị trung bình; cout: Đếm; *Kiểu câu hỏi thứ hai cũng không thực hiện được là các câu hỏi cần phải sử dụng phép gộp nhóm. Do đó người ta xây dựng phép toán bổ sung để thực hiện 2 kiểu câu hỏi kiểu như sau: <Thuộc tính gom nhóm>F< tên quan hệ> <hàm><thuộc tính> Nếu trong biểu thức không có biểu thức gộp nhóm thì các hàm được áp dụng trên thuộc tính của toàn bộ bảng quan hệ. Bài tập: Cho 3 quan hệ CT ( MCT, TenCT): Danh sách công ty (mã công ty, tên công ty) SP (MSP,TenSP,Gia): Danh sách sản phẩm (mã sản phẩm, tên sản phẩm, giá) BAN (MCT, MSP,SL): Danh sách chuyến hàng 1.Đưa ra thông tin đầy đủ về các công ty ΠMCT, TenCT(CT) 2.Đưa ra mã sản phẩm của những sản phẩm có giá lớn hơn 5 triệu. ΠSP(δGia>5(SP) 3.Đưa ra tên công ty đã bán các sản phẩm có số lượng = 100 KQ1 ← δSL = 100(BAN) KQ2 ← CT*KQ1 KQ ← ΠTenCT (KQ2) 4.Đưa ra tên công ty , tên sản phẩm, giá của các sản phẩm đã được bán, có giá bằng 1 triệu đồng Đưa ra sản phẩm có giá 1 triệu: KQ1 ← ΠMSP,TenSP (δGia = 1(SP)) Tìm chuyến hàng bán sản phẩm đó KQ2 ← KQ1*BAN Lấy ra MCT, tên sản phẩm KQ3← ΠMCT,TenSP(KQ2) Đưa ra tên công ty, tên sản phẩm KQ← ΠMCT,TenSP(KQ3*CT) Ví dụ 2: Cho CSDL gồm 4 quan hệ sau: NV (Ten, TP) Nhân viên (tên, thành phố sinh sống) LAM (Ten, TenCT,Luong) Làm việc
  • 4. CT (TenCT, TP) Công ty QL (Ten, TT) Quản lý (tên, thủ trưởng) Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ đại số quan hệ và SQL. 1, Tìm tên và thành phố sinh sống của các nhân viên làm việc cho công ty FBC: KQ1← δTenCT=’FBC’(LAM) Creat view FBC as (Selection * From LAM Tìm tên và thành phố sinh sống: Where (TenCT=”FBC”) KQ← ΠTen,TP (KQ1*NV) Select Ten,TenTP From NV Where Ten in (select Ten From FBC) 2.Tìm tên và thành phố sinh sống của các nhân viên làm việc cho FBC và có lương >2 triệu KQ1← δTenCT=’FBC’,Luong>2(LAM) Creat view FBC as (Selection * From LAM Tìm tên và thành phố sinh sống: Where (TenCT=”FBC”) and (Luong>2) KQ← ΠTen,TP (KQ1*NV) Select Ten,TenTP From NV Where Ten in (select Ten From FBC) 3.Tìm tên các nhân viên sống trong cùng thành phố với công ty họ làm việc *Kết nối CT với làm Select Ten KQ1← (CT*LAM) From NV,LAM,CT *Kết nối NV với KQ1 Where (NV.Ten=Lam.Ten) and (LAM.TenCT=CT.TenCT) KQ2← (KQ1*NV) *Tìm tên nhân viên KQ ←ΠTen(KQ2) 4.Tìm các nhân viên không làm việc cho FBC KQ ← δTenCT ≠ ‘FBC’(LAM) Select Ten From LAM Where (TenCT <>’FBC’ 5.Tìm tên của các nhân viên có lương cao hơn lương của mọi nhân viên ở công ty FBC *Chọn các nhân viên làm việc ở FBC Select Ten From LAM KQ ← δTenCT = ‘FBC’(LAM) Where Luong>(Select Max(Luong) From LAM *Tìm max lương của FBC Where (TenCT =’FBC’) KQ2 ← FMax Luong(KQ1) *Tìm các nhân viên có lương cao hơn lương của mọi nhân viên FBC KQ ←ΠTen(δLương>Max_Luong(LAM KQ2) 6.Giả sử công ty FBC đặt tại nhiều thành phố. Tìm tên tất cả các công ty đặt tại nơi có công ty FBC *Tìm các thành phố mà ct FBC đặt tại đó Select TenCT KQ ← ΠTP(δTenCT=’FBC’(CT) From CT Where TP as (Select TP *.Chọn các công ty không phải là FBC, TenTP From CT KQ2 ←δTenCT ≠’FBC”(CT) Where TenCT = ‘FBC’) *Tìm công ty mà đặt trụ sở tại mọi nơi mà có FBC KQ ←ΠTenCt(KQ2*KQ1) 7. Tìm tên của tất cả các nhân viên có lương cao hơn lương trung bình của công ty của họ. *Tính lương trung bình của từng công ty Select TenCT, AVG(Luong)
  • 5. KQ1 ← TenCT FAverage Luong (LAM) From LAM Group by TenCT KQ2← LAM KQ1) as KQ1 ( TenCT,TBL) TenCT=TenCT Select Ten Luong >Avarege_Luong From KQ1,LAM *Đưa ra tên NV Where (KQ1.TenCT = LAM.TenCT) and (Luong>TBL) KQ ←ΠTen(KQ2) 8.Tìm tên của các nhân viên sống trong cùng thành phố với thủ trưởng của họ. Thông tin về nhân viên Creat view Thutruong as KQ1 ← (NV*QL) select Ten, TT,TP Thông tin về thủ trưởng From NV,QL KQ2 ←ΠTT,TP (NV QL ) where NV.Ten = QL.TT Ten = TT Select Ten Tìm nhân viên cùng thành phố với thủ From NV,Thutruong Where (NV.Ten = Thutruong.Ten) and (NV.TP=Thutruong.TP) trưởng của họ KQ ←ΠTen(KQ1*KQ2) 9.Tìm công ty có nhiều nhân viên nhất. *Đếm số nhân viên của từng công ty Creat view TongNV as KQ1 ← TenCT FCount Ten(LAM) (Select TenCT, Count(ten) as SoNV *Tìm công ty có nhiều nhân viên nhất From LAM KQ2 ← FMax Count_Ten(KQ1) Group by TenCT KQ ← ∏TenCT(KQ1 KQ2) Select TenCT From TongNV Where (SoNV = (Select Max (SoNV) From TongNV) Bao đóng Bài 1: Cho U= ABCDE F = {A→C (1); BC→D(2); D→E(3); E→A(4)} A, Tính AB+ B1: Đặt X0 = AB B2: Tính X1: Có (1) thỏa mãn { A ⊆AB = X0 và C không ⊆ AB) Khi đó X1 =X0∪C = ABC Tính X2: =X1∪D = ABCD Tính X3: Có (3) thỏa mãn {D⊆ABCD = X2 và E không ⊆ ABCD) ⇒X3= X2 ∪ E = ABCDE Tính X4: Không tìm thấy phục thuộc hàm nào Vậy (AB)+ = ABCDE b) Tính (BD)+ - D+ X0= BD X1=BD ∪ E = BDE vì từ (3) {D ⊆BD và E không ⊆ BD} X2= BDE ∪ A = BDEA vì {E ⊆BDE và A không ⊆ BDE} X3=ABDE ∪ C = ABCDE vì từ 1 {A ⊆ABDE và C không ⊆ ABDE) Vậy (BD)+ = ABCDE X0=D X1=D ∪ E = DE vì từ (3) {D⊆ D và E không ⊆ D} X2= DE ∪ A = ADE vì từ (4) {E⊆ DE và A không ⊆ DE} X3= ADE ∪ C = ACDE vì từ (1) { A⊆ ADE và C không ⊆ ADE} (D)+ = ACDE Vậy (BD)+ - (D)+ = {ABCDE} – {ACDE} = {B} Khóa Thuật toán tìm 1 khóa * Vào :+ Cho U: tập thuộc tính +F={ti-pi| ti,pi⊆ U,ti ∩ pi = ∅, i=1,2,3..,n} * Ra: Khóa X Phương pháp:
  • 6. Đặt P=Un Pi i=1 T = Un Ti i=1 Bước 1: Đặt X:=UV Bước 2: Nếu X+ = U thì tới bước 5 Bước 3: X:=(UP) ∪ (T∩P) Bước 4: Với mỗi Ai ∈ (T∩P) làm như sau : +) X := X-Ai +)Nếu X+ ≠ U thì X :=X ∪ {Ai} Bước 5 : Kết luận : X là khóa VD : U=ABCDE F={AB →E (1) ; E →AB(2) ; D→ C(3)}. Tìm 1 khóa của lược đồ trên. Giải : Đặt T = Un Pi = ABCD i =1 n P=U Pi = ACDE i=1 Bước 1 : Gán X=UP = ABCDE ACDE = {B} Bước 2 : Tính X+=B+ =B ≠U (vì B không suy được ra cái gì cả} Bước 3 : X :=(UP) ∪ (T∩P) = P∪ADE = BADE Không có thuộc tính nào suy ra được B chắc chắn trong khóa nhất định chứa B. Còn các thành phần ADE thì trong khóa sẽ chứa 1 trong các thành phần này : Thử từng thành phần trong nhóm ADE Nếu thử bỏ từng phần tử đi rồi lấy bao đóng mà bao đóng ≠U ⇒Phần tử đó rất quan trọng ⇒ Trong khóa chứa nó. Với mỗi phần tử trong ADE làm như sau : +Xét bỏ A : Khi đó X=BDE Có X+ =(BDE)+ = BDECA = U ⇒ Bỏ được A +Xét bỏ D = X còn BDE; Khi đó X=BE Có X+= (BDE)+= BACDE = U ⇒ Bỏ được D +Xét bỏ E: Khi đó X=B có X+=B+ =B≠U ⇒ Không bỏ được E. Vậy khóa là BE Kiểm tra tính kết nối không thất thoát (tổn thất) của 1 phép tách Vào: + U = {A1,A2,..,An} + Tập các phụ thuộc hàm F + Phép tách ℘= (U1, U2, …, Uk} Ra: Kết luận ℘ có phải là phép tách kết nối không thất thoát hay không? Phương pháp: Bước 1: Lập bảng kxn, với k dòng được đại diện bởi U1,U2,…,Uk; n cột được đại diện bởi n thuộc tính A1,A2, …,An. Ô giao nhay tại dòng I, cột j ta điền ký tự aj nếu aj ∈ui, ngược lại ta điền ký hiệu bj Bước 2: với mỗi X → Y∈F, ta xét các dòng có ký hiệu bằng nhau trên tập thuộc tính X, ta sẽ làm các dòng này bằng nhau trên X theo quy tắc: Nếu tồn tại một ký hiệu có dạng aj thì các ký hiệu còn lại được đổi thành ạ. Nếu không có giá trị nào dạng aj thì lấy tùy ý một ký hiệu bij để làm bằng. Bước 3: Quá trình lặp sẽ dừng khi xảy ra trong 2 khả năng sau: -Nếu trong bảng có 1 dòng gồm toàn ký hiệu dạng aj thì phép tách ℘là phép tách không thất thoát. - Sau khi áp dụng 1 lượt các phép thuộc hàm trong F mà không có thêm một thay đổi nào nữa so với bảng ở lượt trước thì phép tách ℘ là phép tách thất thoát. VD: Cho U = {S,A,I,P} và F = {S→A (1) , SI → P (2)}. Kiểm tra xem P = (SA,SIP) có thất thoát hay không? Bước 1: Lập bảng khởi tạo i 0 1 2 3 4 i =1 SA a1 a2 i=2 SIP a1 a3 a4
  • 7. Bước 2: Áp dụng lượt 1 các phụ thuộc hàm F i 0 1 2 3 4 i =1 SA a1 a2 i=2 SIP a1 a2 a3 a4 ⇒Sau khi áp dụng trong bảng xuất hiện 1 dòng chứa toàn bộ ký hiệu a ⇒ Phép tách không thất thoát Tách BCNF Thuật toán: * Vào: R=<U,F> * Ra: Phép tách ℘ = (R1, R2, …,Rk) không thất thoát với Ri ở dạng chuẩn BCNF ∀ I = 1,…,k Phương pháp: Bước 1: ℘ chỉ gần R: ℘ = (R) Bước 2: + Nếu mọi lược đồ trong ℘ đều thuộc BCNF thì chuyển sang bước 3 + Ngược lại, tìm được lược đồ S = <Us, Fs> trong ℘ mà S không là BCNF. Chọn một phụ thuộc hàm X→A ∈ Fs mà x không phải là siêu khóa của S, và A∈X. Khi đó ta thay thế S bởi 2 lược đồ ứng với tập thuộc tính XA và Us- {A}. Quay trở lại bước 2. Bước 3: Kết thúc. VD: Cho R = (U,F); U = CTHRSG F = {C→T (1); HR →C (2); HT →R (3); CS →G (4); HS →R (5)} Tách R thành các lược đồ quan hệ ở BCNF Khóa của R là HS Giải: U= CTHRSG F = {C→T; HR →C; HT →R; CS →G; HS →R} U1=CSG V1=CTHRS F1=(CS→G) FV1 = {C→T; HR →C ; HT →R; HS →R } Khóa là CS Khóa là HS U2=CT V3=CHRS F2=(C→T) FV3 = {HR →C ; HC →R; HS →R } Khóa là C Khóa là HS U3=HRC V4=CHC F2=(HR→C, HC → R) FV4 ={HS →C } Khóa là CH hoặc HR Khóa là HS