SlideShare a Scribd company logo
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
   KHOA CÔNG NGHỆ THÔNG TIN
    *************************




CƠ SỞ DỮ LIỆU
GV: ThS.VŨ VĂN ĐỊNH
Bài 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
1. Tại sao cần phải có một CSDL?
    - Hệ thống các tập tin cổ điển :
•   Được tổ chức riêng rẽ, phục vụ một mục đích hay một bộ
    phận nào đó của doanh nghiệp.

•   Nhược điểm:
      - Tính phụ thuộc giữa chương trình và dữ liệu .
      - Lưu trữ trùng lặp dữ liệu
      - Việc chia sẻ dữ liệu bị hạn chế
      - Tốn thời gian xây dựng
      - Chi phí cho bảo trì chương trình lớn
2. Ví dụ về CSDL.
    -Cơ sở dữ liệu cho một công ty chuyên
  kinh doanh :
Gồm các bảng: KHACH HANG, SANPHAM,
  DON_DAT_HANG, NHA_CUNG_CAP,... và
  một số quy tắc nghiệp vụ áp đặt lên các
  bảng.


Ví dụ về bảng KHACHHANG :
STT    MKH    Tên KH      Ma hang   So
   luong
 1     CN22   Hoàng Hà      MK02         8
 2    CT20     Bến Nghé     CT01
3. Cơ sở dữ liệu là gì?
    ĐN: CSDL là một tập hợp các dữ liệu có
    cấu trúc về một tổ chức nào đó được lưu trữ
    trên các thiết bị lưu trữ thông tin thứ cấp
    như băng từ, đĩa từ,..
   Mục đích: Nhằm thoả mãn nhu cầu khai
    thác thông tin của một hay nhiều người sử
    dụng phục vụ cho nhiều mục đích khác
    nhau
   Điểm khác nhau nổi bật giữa CSDL và
    hệ thống File là :  Các dữ liệu trong
   Ưu điểm của CSDL:

     Tối thiểu hoá dư thừa thông tin
     Tính độc lập chương trình- ứng dụng
     Nâng cao tính nhất quán dữ liệu
     Nâng cao tính chia sẻ dữ liệu
     Nâng cao chất lượng dữ liệu
     Nâng cao khả năng truy cập và trả lại dữ liệu
     Giảm chi phí bảo trì chương trình.
Tiêu chuẩn của một CSDL:



      Tính bảo mật
    Tính độc lập
     Tránh sự dư thừa thông tin
     Có khả năng lưu trữ, phục hồi khi gặp sự cố
     Hiệu suất sử dụng tốt, đảm bảo chế độ ưu tiên khi
    truy nhập dữ liệu.
4. Các đối tượng sử dụng CSDL

   Những người sử dụng không chuyên
    về lĩnh vực tin học
   Các chuyên viên tin học biết khai
    thác CSDL
   Những người quản trị CSDL: là người
    tổ chức CSDL, cấp quyền hạn khai
    thác dữ liệu và giải quyết các tranh
    chấp khi gặp sự cố
5. Các mức biểu diễn một CSDL.
Gồm 3 mức :
Mức ngoài : là tập tất cả các dữ liệu mà người sử dụng cụ
thể có thể nhìn thấy và được phép truy cập, là mức của
người sử dụng và các chương trình ứng dụng.
Mức quan niệm : giải quyết vấn đề lưu trữ dữ liệu loại gì,
lưu trữ bao nhiêu, mối quan hệ trong CSDL và mối quan hệ
giữa các loại dữ liệu này như thế nào?
Mức trong( mức vật lý): Đây là mức lưu trữ dữ liệu. Mục
đích của mức này giải quyết vấn đề dữ liệu là gì, dữ liệu được
lưu trữ như thế nào và nhằm mục đích gì.
Hình biểu diễn Sự phân mức một CSDL
User 1        View 1
                                 CSDL           CSDL
User 2        View 2              mức            mức
                                  khái           vật
……           ………….
                                 niệm             lý
User k        View k

             Mức ngoài       Mức trung gian     Mức vật lý

    View ( khung nhìn) của một user là một tập hợp tất cả
 các dữ liệu mà user đó nhìn thấy, được phép truy cập vào.
6. Tính độc lập giữa dữ liệu và
       chương trình
 Một CSDL là độc lập dữ liệu nếu nó có hoặc có thể có
khả năng phát triển mà không ảnh hưởng tới các hệ ứng
dụng.
 Tính độc lập dữ liệu là " tính bất biến của các hệ ứng
dụng đối với các thay đổi trong cấu trúc lưu trữ và chiến
lược truy nhập"
 Có hai mức độc lập dữ liệu:
    Độc lập dữ liệu mức vật lý : Có thể tổ
    chức lại CSDL vật lý (như thay đổi các tổ
    chức, cấu trúc dữ liệu) để làm thay đổi
    hiệu quả tính toán của các chương trình
    ứng dụng nhưng không đòi hỏi phải viết
    lại chương trình ứng dụng.
   Độc lập dữ liệu mức logic: Có thể
    thay đổi lược đồ khái niệm như thêm,
    xoá , bớt thông tin của các thực thể
    đang tồn tại trong CSDL nhưng không
    làm ảnh hưởng tới các lược đồ con, do đó
    không cần phải viết lại các chương trình
    ứng dụng.
II. Hệ quản trị CSDL
1. Khái niệm

 - Là một phần mềm điều khiển mọi truy
 nhập đối với CSDL. Nó giúp người sử dụng
 có thể dùng được hệ thống mà không cần
 quan tâm tới thuật toán chi tiết hoặc biểu
 diễn dữ liệu trong máy.


  - Mỗi hệ QT CSDL được cài đặt dựa trên
 mô hình dữ liệu cụ thể và hỗ trợ tối đa cho
 người dùng thực hiện các thao tác trên đó.
  - VD : FOXPRO, ACCESS, ORACLE, v.v..
2.Tính năng của hệ QTCSDL:

   Tạo cấu trúc lưu trữ dữ liệu trên
    máy. Cho phép đưa dữ liệu vào máy
    tính theo cấu trúc đã tạo ra.
   Cho phép khai thác CSDL đã lưu trữ
   Tạo cơ chế đảm bảo an toàn, bí mật
    cho dữ liệu trong quá trình thao tác
3. Các thành phần trong hệ QT CSDL:
 Ngôn ngữ giao tiếp với người sử dụng: Gồm
:ngôn ngữ mô tả , thao tác , truy vấn và quản lý dữ
liệu.
- Từ điển dữ liệu : là một CSDL của hệ QT CSDL
sử dụng để lưu trữ cấu trúc CSDL, các thông tin bảo
mật, bảo đảm an toàn dữ liệu và các cấu trúc ngoài
                    -
- Các biện pháp bảo mật
- Cơ chế giải quyết tranh chấp dữ liệu. Các biện
pháp:
      + Cấp quyên ưu tiên cho NSD
      + Đánh dấu yêu cầu truy xuất, phân chia thời
-    Cơ chế phục hồi, sao lưu dữ liệu khi
    có sự cố:
       + Định kỳ kiểm tra CSDL, sau một
    thời gian nhất định tự động tạo bản sao.
        + Tạo nhật kí thao tác, khi có sự cố
    thì tự động lật ngược lại để phụ hồi.
- Đảm bảo tính độc lập giữa dữ liệu
- Cung cấp giao trình. thiện với người dùng
  và chương diện thân
không chuyên
Bài 2
  NHỮNG CÁCH TIẾP CẬN MỘT CSDL

     Mô hình dữ liệu là sự trừu tượng hoá
môi trường thực, nó là biểu diễn dữ liệu ở
mức quan niệm.
     Mỗi loại mô hình dữ liệu đặc trưng cho
một cách tiếp cận dữ liệu khác nhau của
những nhà phân tích thiết kế CSDL.
     Một số loại mô hình dữ liệu phổ biến :
1. Mô hình dữ liệu quan hệ


   Mô hình dữ liệu quan hệ do E.F.
Codd đề xuất.
   Nền tảng cơ bản của nó là khái
niệm lý thuyết tập hợp trên các quan
hệ, tức là tập các bộ giá trị.
2. Cách tiếp cận theo mô hình dữ liệu
                     mạng
       Mô hình dữ liệu mạng (lưới) là mô hình
    được biểu diễn bởi một đồ thị có hướng.
      Loại mẫu tin (Record Type): là mẫu đặc
    trưng cho từng loại đối tượng riêng biệt, được
    biểu diễn bởi một hình chữ nhật.
        Loại liên hệ ( Set Type): là sự liên kết
    giữa một loại mẫu tin chủ với một loại mẫu tin
    thành viên, được biểu diễn bởi một hình bầu
    dục.
         Sự liên kết giữa 2 loại mẫu tin được thể
    hiện bởi các cung có hướng đi từ loại mẫu tin
    chủ tới loại liên hệ và từ loại liên hệ tới loại
    mẫu tin thành viên.
   Trong loại liên kết, cần chỉ ra số
    lượng các mẫu tin tham gia trong
    mỗi kết hợp. Các loại liên hệ:
       1-1
       1-n
       n-1
       Đệ quy
PHÒNG                                LÝ LỊCH

               1-n
        Gồm                          Có      1-1

                  NHÂN VIÊN



      n-1     Cùng làm             1-n


     CÔNG VIỆC                           quản lý

  Hình 3. Mô hình dữ liệu mạng ( Network
3. Mô hình dữ liệu phân cấp
             Mô hình dữ liệu phân cấp là một cây
    ( Tree) trong đó mỗi nút của cây biểu diễn một
    thực thể, giữa nút con và nút cha được liên hệ
    với nhau theo một mối quan hệ xác định.
   Loại mẫu tin : Giống trong mô hình mạng
   Loại liên hệ : Kiểu liên hệ là phân cấp, theo
    cách:

    - Mẫu tin thành viên chỉ đóng vai trò thành
      viên của một mối liên hệ duy nhất, tức là
      thuộc một chủ duy nhất.
    - Như vậy, mối liên hệ từ mẫu tin chủ tới các
Ví dụ :            TOÀN QUỐC

   HÀ            HẢI PHÒNG       NAM    …
   NỘI                           ĐỊNH

ĐÔNG ANH         BA          …
                 ĐÌNH

CỔ        NAM HỒNG       …
LOA
HỘ 1      HỘ 2     …


NK 1      NK 1          …
4. Mô hình dữ liệu hướng đối tượng


- Cho phép biểu diễn các đối tượng
  khá tự nhiên và sát với thực tế.
- Hỗ trợ các ngôn ngữ thao tác hướng
  đối tượng mạnh, cho phép người sử
  dụng dễ dàng biểu diễn cả các truy
  vấn phức tạp
Bài 3. Mô hình quan hệ của E.F.
                 Codd
I. Khái quát chung
Mô hình quan hệ :
• Biểu thị dữ liệu trong một CSDL như một tập các quan
hệ.
• Một quan hệ là một bảng các giá trị gồm các dòng và các
cột.
• Mỗi dòng trong bảng là một tập các giá trị có liên quan
đến nhau, biểu thị một sự kiện tương ứng với một thực thể
hay một mối quan hệ tương ứng với thế giới thực.
VD: Quan hệ :
        SINH_VIEN (Ma SV, Hoten, Nam sinh, DiaChi,
Diem)
  Mã        Hoten     Namsi    Diachi   Đie
  SV                   nh               m
  001     Ngọc Anh    1986     Hoàn      9    t1
                               Kiếm
  002     Minh Tuấn   1980    Ba Đình   10    t2
  003     Hoàng Hà    1985    Tây Hồ    8     t3
II. Các khái niệm của mô hình quan hệ
1. Thuộc tính :
•      Mỗi đối tượng quản lý đều có các đặc tính riêng biệt,
gọi là các thuộc tính. Kí hiệu các thuộc tính là A, B, C, A1,
A2,...
•     VD: Mã sinh viên, họ tên, quê quán, ngày sinh, ...
•       Các thuộc tính được đặc trưng bởi một tên gọi, kiểu
giá trị, miền giá trị của chúng.
2. Lược đồ quan hệ :
     Một lược đồ quan hệ được đặc trưng bởi tên lược đồ
và một tập hữu hạn các thuộc tính U={A1, A2, ..., An}.
Lược đồ R với tập thuộc tính là U= { A1, A2,... An} được
3. Miền giá trị :


    - Là tập hợp các giá trị nguyên tử mà thuộc tính có thể
   nhận
   - Để đặc tả một miền, người ta dùng:
             tên miền, một kiểu dữ liệu và khuôn dạng dữ
   liệu.
VD: Miền Mã SV là tập hợp các dãy kí tự có độ dài từ 5 ki
  tự Miền Điểm là tập các giá trị số thuộc [0..10]
4. Quan hệ :
 Một quan hệ trên một tập thuộc tính là một tập con
của tích Desscartes cuả một hay nhiều miền.
  Cho một quan hệ r xác định trên tập thuộc tính
Ω={ A1, A2, ..,An}.
    Khi đó r ⊆ Dom(A1) x Dom(A2) x ...x
Dom(An), trong đó Dom(Ai ) là miền của thuộc tính
Ai


Như vậy, quan hệ r là một tập hợp các n_ bộ có dạng :
           r = {( a1, a2,.., an) | ai ∈ Dom(Ai), i= 1,
2,..,n }
     Có thể quan niệm quan hệ là một bảng hai
chiều, mỗi cột là một thuộc tính thường gọi là
trường, mỗi dòng là một bộ n.

  VD: Quan hệ R= {(di1,di2,...,din ) / i=1..m}

          A1   A2    ...   An
         d11   d12   ...   d1n
         d21   d22   ...   d2n
          ... ... ...       ...
         dm1 dm2 ...       dmn
 Một số chú ý :

       - Các tập D1= Dom ( A1),.., Dn=Dom ( An)
là tập các miền trị của R
      - n được gọi là bậc của quan hệ r
      - M được gọi là lực lượng của r
      - Quan hệ bậc 1 là quan hệ nhất nguyên,
quan hệ bậc hai là quan hệ nhị nguyên, quan hệ
bậc n là qua hệ n nguyên.
 Các tính chất dặc trưng của một quan hệ.

 • Một quan hệ có một tên phân biệt với các quan hệ
 khác
 • Mỗi ô trong bảng quan hệ chứa một giá trị nguyên
 tố
 • Mỗi thuộc tính trong một quan hệ có một tên phân
 biệt
 • Các giá trị của một thuộc tính thuộc cùng một miền
 • Thứ tự của các thuộc tính, các bộ là không quan
 trọng
VD: Quan hệ TKB( Ngày, tiết thứ, môn, phòng, GV}
                    là một quan hệ 5 ngôi.
Ngà     Tiết     Môn      Phòng         GV
 y      thứ
24/3     1      CSB2        202        Ngọc Anh     t1
25/3     2       NN         102           Minh      t2
                                         Tuấn
 t1 (24/3, 1, CSB2,CSDL
26/3        3      202, Ngoc Anh)= t1(R) Hoàng
                              200                   t3
  Chú ý : Các khái niệm tương đương       Hà
      Quan hệ            Bảng             Tệp
      Thuộc tính         Cột              Trường
      Bộ                 Dòng             Bản ghi
      (NN ĐSQH)          (SQL-Access) (Fox)
4. Khoá và siêu khoá
a. Siêu khoá
•     Siêu khoá của một quan hệ R là một tập hợp gồm một
hay nhiều thuộc tính của lược đồ R có tính chất xác định
duy nhất một bộ trong mỗi thể hiện của R.
•     Nếu SK là siêu khoá của R=<Ω ,F> thì SK ⊆ Ω và
trong một quan hệ bất kỳ của lược đồ R không thể có hai bộ
khác nhau nhưng có cùng một giá trị trên SK.
•    Mỗi quan hệ có ít nhất một siêu khoá, đó là Ω- tập tất
cả các thuộc tính của quan hệ.
•     Mọi tập con của Ω chứa một siêu khoá cũng là siêu
khoá.
b.Khoá
       Khoá của một lược đồ quan hệ R là một siêu khoá
của lược đồ này sao cho mọi tập con thực sự của nó không
là siêu khoá.
      Như vậy, một khoá là một siêu khoá tối thiểu hiểu
theo nghĩa, đó là một siêu khoá mà chúng ta không thể bỏ
bớt thuộc tính nào ra khỏi nó mà vẫn giữ được tính chất
xác định duy nhất cho mỗi bộ.
VD: Xét quan hệ SINH_VIEN

- Các siêu khoá : {Mã SV, Họ tên} hay {Mã SV, ngày
sinh, điểm,},...
- Khoá : {Mã SV}
•- Một lược đồ quan hệ có nhiều hơn một khoá, khi đó
mỗi khoá được gọi là một khoá dự tuyển.
• Thông thường có một khoá dự tuyển được chọn làm
khoá chính. Ta nên chọn khoá dự tuyển có một thuộc
tính hoặc có ít thuộc tính nhất làm khoá chính.
• Khoá chính là khóa được dùng để nhận diện một bộ
trong quan hệ do đó các giá trị của các bộ ở các thuộc
tính trong khoá chính không được null.
• Thuộc tính khoá : là các thuộc tính có tham gia vào
một khoá ( khoá dự tuyển hay khoá chính).
• Ngược lại, thuộc tính không tham gia vào một khoá
nào gọi là thuộc tính không khoá.
VD: Quan hệ KHOA
 Mã        Tên      Điện      Địa chỉ   Chủ nhiệm
khoa      khoa      thoại                 khoa
SPT       Toán       04.7684      A3     Nguyễn Anh
                     59
 SPV        Văn 04.7689           A4     Hoài Nam
                     45
SPCN hệ trên có 04.7683 tuyển là { Mã khoa}, Anh
  - Quan CNTT 3 khoá dự           A3     Nguyễn
  { Tên khoa}, {Điện thoại }. Người ta thường chọn Mã
                     43
  khoa làm khoá chính. Như vậy, thuộc tính không khoá
  chỉ còn là : Địa chỉ và Chủ nhiệm khoa
c. Khoá ngoài :
Một tập thuộc tính K là khoá ngoài của một quan hệ r
nếu K không là khoá chính của quan hệ r nhưng lại là
khoá chính của một quan hệ khác .
   VD: Có hai quan hệ:
      SINHVIEN (Mã SV, Tên SV,..., Mã lớp)
       LOP( Mã lớp, Tên lớp,...)
   Mã lớp là khoá ngoài của quan hệ SINHVIEN.
Bài 4. Đại số quan hệ

I. Đại số quan hệ
       Đại số quan hệ là cơ sở của một ngôn ngữ bậc cao
để thao tác trên các quan hệ. Đại số quan hệ gồm 8 phép
toán cơ bản. Bằng các phép toán này, ta có thể trích dữ
liệu từ một hay nhiều quan hệ để tạo ra các quan hệ mới.
II. Các phép toán lý thuyết tập hợp
 -Gọi r là quan hệ trên tập thuộc tính R={A1, ..,An}.
Giả thiết rằng r là tập hữu hạn các bộ.
 - Khái niệm khả hợp : Hai lược đồ quan hệ R1 và R2
được goị là khả hợp nếu có cùng bậc n và DOM(Ai) =
DOM(Bi) (1≤i≤n)
 - Cho hai quan hệ R1=(A1,A2,..An) và
R2=(B1,B2,..,Bn) là hai quan hệ khả hợp, ta có định
nghĩa:
1.Phép hợp
Hợp của hai quan hệ r và s khả hợp, kí hiệu là r ∪ s là tập
các bộ thuộc r hoặc s hoặc thuộc cả hai quan hệ.
 Biểu diễn hình thức:
           r ∪ s = { t/ t ∈ r hoặc t ∈ s hoặc t ∈ r và s }
Ví dụ :
r ( A B C)            s ( A B C)       r ∪ s = ( A B C)
___________           __________       _________________
  a1      b1   c1       a1 b1 c1                 a1 b1 c1
  a2      b1   c2       a2 b2 c2                 a2 b1 c2
  a2      b2   c1                                a2 b2 c2
                                                 a2   b2 c1
2. Phép giao
      Giao của hai quan hệ r và s khả hợp, kí hiệu là r
∩ s là tập các bộ thuộc cả quan hệ r và s .
Biểu diễn hình thức :
       r ∩ s = { t/ t ∈ r và t ∈ s }
Ví dụ : Với hai quan hệ ở ví dụ trên, giao của chúng
là:
            r∩s=( A B C)
                        a1 b1 c1
3. Phép trừ
        Hiệu của hai quan hệ r và s khả hợp, kí hiệu là r - s là
tập các bộ thuộc r nhưng không thuộc s .
Biểu diễn hình thức :

        r - s = { t/ t ∈ r và t ∉ s }
Ví dụ : Cũng với ví dụ trên, hiệu của chúng là:
               r-s= ( A B       C)
                         a2 b1 c2
                         a2 b2 c1
 Chú ý : phép giao của hai quan hệ có thể biểu diễn qua phép
trừ:
               r ∩ s = r- ( r - s )
4. Tích Đề -Các
  - Gọi r là quan hệ xác định trên tập thuộc tính { A1, A2,..,An} và s
là quan hệ xác định trên tập thuộc tính { B1, B2,..,Bm} . Tích Đề -
Các r x s của r và s là tập ( n + m ) - bộ với n thành phần đầu có
dạng một bộ thuộc r và m thành phần sau có dạng của một bộ thuộc
s.
- Biểu diễn hình thức :
       r x s = { t/ t có dạng (a1, a2, .., an, b1, b2,..,bm)
trong đó ( a1, ..,an )∈ r và (b1,.. ,bm) ∈ s }
- Ví dụ :
 r (A B      C)    s ( D E F)         rxs=(A B        C D E        F)
     a1 b1    c1          d   e   f           a1 b1 c1    d    e   f
     a2 b2    c2       d1 e1 f 1              a1 b1 c1 d1 e1 f1
                                             a2 b2 c2     d    e   f
5. Phép chiếu
      Phép chiếu trên một quan hệ thực chất là loại bỏ
đi một số thuộc tính và giữ lại những thuộc tính còn lại
của quan hệ đó. Dạng tổng quát : π < ds_thuộc
tính> (< tên quan hệ >)
 π là kí hiệu phép chiếu.
< ds_thuộc tính> : danh sách các thuộc tính được lấy
ra
 Nếu < ds_thuộc tính > chỉ có những thuộc tính
không khoá thì phép chiếu sẽ tự bỏ đi những bộ lặp.
Phép chiếu không có tính giao hoán.
Nếu <ds1 > ⊆< ds2> thì
Ví dụ :
    Cho quan hệ SV ( Mã SV, Họ tên, Ngày sinh, điểm) như
   sau :
            Mã       Họ tên       Ngày sinh Điểm
            SV
            001      Trần Anh     23/4/86      8
            002      Ngọc Bích 13/4/85         9
            003      Xuân Mai     25/3/87      7
            004      Hồng Vân 21/6/85          10

 Thì phép chiếu πMã Sv, Điểm (SV) sẽ cho ta một quan hệ mới chỉ
 gồm hai thuộc tính là Mã SV và Điểm .
                              Mã Điểm
DIEM( Mã SV, Điểm     ):      SV
                              001 8
                              002 9
                              003 7
                              004 10
6. Phép chọn
      Phép chọn dùng để trích chọn một tập con trong
một quan hệ, các bộ được trích chọn phải thoả mãn điều
kiện chọn. ( Phép chọn trích ra các hàng trong quan hệ)
Dạng tổng quát : σ < điều kiện > (< Tên quan hệ >)
 σ là kí hiệu phép chọn.
Kết quả thu được từ phép chọn là một quan hệ có
danh sách thuộc tính được chỉ ra trong Tên quan hệ
Điều kiện : là các biểu thức điều kiện cần thoả mãn..
Các biểu thức này được nối với nhau bằng các phép: ¬(
phủ định ), ∧ (giao), ∨ (hợp)
7. Phép kết nối
     Phép kết nối : Dùng để kết hợp hai bộ có
liên quan từ hai quan hệ thành một bộ.
     Trước hết ta làm quen với khái niệm xếp
cạnh nhau:
Cho bộ d =( d1, d2,..,dm) và bộ e= (e1, e2,..,
em). Phép xếp cạnh nhau được định nghĩa qua :
         d ∩ e = ( d1, d2,.., dm,e1, e2,..,em).
Gọi θ là một trong các phép so sánh . Phép kết nội
được định nghĩa:
     Phép kết nối của quan hệ r đối với thuộc tính
A với quan hệ s đối với thuộc tính B được định
nghĩa qua.
r A θ B s = { (t ∩ u ) | t ∈ r và u ∈ s và t[A] θ
  
u[B] }
 Kết quả của phép kết nối là một quan hệ Q có
( n+m) thuộc tính, mỗi bộ trong Q thoả mãn điều
kiện kết nối.
 Các bộ có giá trị rỗng tại thuộc tính kết nối thì
không xuất hiện trong kết quả của phép kết.
 Bản chất của phép kết nối là phép lấy tích Đề
- Các của hai quan hệ và chọn ra các bộ thoả mãn
điều kiện kết.
Ví dụ :

r(A B C )     s( C D E )    r  s = ( A B C C D E
                           B≥ C


 a1 1   1       1 d1 e1            a1   1 1 1 d1 e1
 a2 2   1       2 d2 e2            a2   2 1 1 d1 e1
 a1 2   2       3 d3 e3            a2   2 1 2 d2 e2
                                   a1   2 2 1 d1 e1
                                   a1   2 2 2 d2 e2
 Nếu điều kiện kết nối chứa phép so sánh (=) bằng thì
phép kết nối được gọi là phép kết nối bằng.
 Trường hợp kết nối bằng tại thuộc tính cùng tên của hai
quan hệ và một trong hai thuộc tính đó bị loại bỏ, thì phép kết
nối được gọi là kết nối tự nhiên . Kí hiệu là " * ".
 Biểu diễn của phép kết nối tự nhiên :
      r(ABC) * s(CDE) = { t[ABCDE]/ t[ABC] ∈ r và
   t[CDE ] ∈s}
   VD : với hai quan hệ r và s nêu trên thì :
     r(ABC) * s(CDE) =   (A B     C D E)
                          a1 1   1   d1 e1
                          a2 2   1   d1 e1
8. Phép chia
      Gọi r là quan hệ n- ngôi và s là quan hệ m ngôi
( n > m, s ≠ ∅ ). Phép chia r ÷s là tập tất cả các ( n-
m )- bộ t sao cho với mọi bộ u ∈s thì bộ t ∩ u ∈ r.
Ví dụ :
r(A B C D)              s ( C D)          r ÷s = ( A B)
    a     b   c   d        c   d                 a   b
    a     b   e   f        e   f                e    d
    b c       e   f
    e d       c   d
    e d       e   f
    c a       d   e
Cơ sở dữ liệu minh hoạ
 Cho một cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây:
              SV( SV#, HT, NS, QUE, HL)
              DT(DT#, TDT, CN, KP)
              SD(SV#, DT#, NTT, KM, KQ)
      -Quan hệ SV chứa thông tin về các sinh viên trong một lớp
của một trường đại học. Trong đó:
       SV# : mã số sinh viên
       HT : Họ và tên sinh viên
       NS : Năm sinh của sinh viên
       QUE: quê quán
       HL : Học lực thể hiện qua điểm trung bình
- Quan hệ DT chứa thông tin về đề tài nhà trường quản lý .
  Trong đó :
        DT# : mã số đề tài
         TDT : tên đề tài
         CN : họ và tên chủ nhiệm đề tài
         KP : Kinh phí cấp cho đề tài ( triệu đồng)
    - Quan hệ SD chứa thông tin về tình hình thực tập của các
    sinh viên theo các đề tài. Trong đó :
          NTT : nơi thực tập
          KM : khoảng cách từ nơi thực tập đến trường
          KQ : kết quả thực tập theo đề tài đã chọn .
 * Giả thiết là mỗi sinh viên có thể tham gia nhiều đề tài, mỗi đề tài
sinh viên đó thực tập tại một địa điểm.
SV
SV#          HT              NS          Que          HL
 1     Hồng Mai          22/4/1982      Hà Nội        6.8
 2     Mạnh Khánh        27/6/1986    Nam Định        8.3
 3     Xuân Quỳnh        17/5/1987      Hà Nội        9.5
 4     Ngọc Bích         25/4/1979     Nam Định       8.6
 5     Minh Tú           19/3/1986    Quảng Ninh      6.2
 6     Hồng Vân          19/4/1980    Hải Phòng       9.8
 7     Ngọc Anh          27/5/1982      Hà Nội        7.6
 8     Mai Lan           16/8/1983    Hải Phòng       8.5

      DT
DT#             TDT                  CN            KP
 1     Phân tích thiết kế CSDL    Trần Hùng        1000000
 2         Mạng máy tính         Nguyễn Anh         500000
 3       Kiến trúc máy tính      Hồng Hạnh         1400000
 4          Phần mềm A            Mạnh Hùng        2300000
 5        Giáo trình ABC          Hoàng Hà          900000
 6         Mạng Internet          Ngọc Lan         1800000
SD

SV#   DT#      NTT       KM    KQ
 1     4      Hà Tây      56   6.8
 1     6    Hải Phòng    120   8.7
 3     5    Quảng Ninh   300    9
 3     4     Hà Đông      30   9.7
 2     3      Hà Nội      40   9.8
 1     5     Nam Định     80   9.4
 7     3       Hà Nội     38   8.7
 5     5     Hải Phòng   150   8.2
 7     3    Thanh Hoá    240   7.9
Yêu cầu :
- Hãy viết các biểu thức đại số quan hệ biểu diễn các yêu cầu sau :
1.   Cho thông tin về những sinh viên sinh trước năm 1985 có quê
     ở Hà Nội.
2. Cho biết các địa điểm thực tập xa trường (KM >100) của đề
   tài số 5.
3. Cho thông tin về các đề tài có sinh viên thực tập.
4. Cho biết mã của các đề tài không có sinh viên nào tham gia.
5.   Cho danh sách các tỉnh có sinh viên đến thực tập.
6. Cho thông tin về việc thực tập tại Hải Phòng của sinh viên.
7. Cho biết mã của những đề tài có kinh phí lớn hơn 1 triệu và
   nhỏ hơn 2 triệu
8. Cho biết mã của sinh viên dưới 20 tuổi, thực tập khá ( có điểm
   kết quả thực tập >=6.5)
III. Các phép toán quan hệ bổ sung

    Các hàm kết tập: Có nhiều truy vấn mà
    đại số quan hệ không thể thực hiện được
    như: đưa ra tổng lương, tìm lương lớn
    nhất ,v.v..
   Ta có các hàm sau:
     Hàm tính trung bình cộng ( AVERAGE)
     Hàm tính tổng ( SUM)
    Hàm tìm giá trị lớn nhất ( MAX), nhỏ
     nhất (MIN)
    Hàm đếm các bộ giá trị ( COUNT)
 Các phép gộp nhóm: Nhóm các bộ trong
  một quan hệ theo một giá trị của một số các
  thuộc tính và sau đó áp dụng các hàm kết tập
  trên từng nhóm một cách độc lập.
 Phép gộp nhóm được định nghĩa như

  sau:
  < các tt cơ sở để gộp nhóm>ℑ < ds các hàm kết tập >
  (r)
Trong đó : - ℑ là kí hiệu của phép gộp nhóm
 - <các tt cơ sở để gộp nhóm>: là danh sách
  các thuộc tính của quan hệ.
 - < ds hàm kết tập >: là danh sách các cặp
  ( <hàm>< thuộc tính>.
• Kết quả của phép gộp nhóm là một
  quan hệ. Ngoài các thuộc tính cơ sở để
  gộp nhóm, quan hệ kết quả còn có các
  thuộc tính tương ứng với các phần tử
  trong danh sách hàm kết tập.
• Nếu ds các thuộc tính cơ sở để gộp
  nhóm là rỗng thì các hàm kết tập
  được áp dụng cho các giá trị thuộc tất cả
  các bộ trong quan hệ. Khi đó quan hệ
  kết quả chỉ có một bộ.
Ví dụ : Giả sử có quan hệ NHAN_VIEN

   MA_NV     HO_TEN      NG_SINH      MA_P   LUONG
      1    Hồng Mai      22/4/1982 P1        1000000
      2    Mạnh Khánh    27/6/1978 P3        2500000
      3    Xuân Quỳnh    17/5/1977 P2        1200000
      4    Ngọc Bích     25/4/1979 P1        2000000
      5    Minh Tú       19/3/1981 P3        1500000
      6    Hồng Vân      19/4/1980 P1        1800000
      7    Ngọc Anh      27/5/1982 P2        1800000
      8    Mai Lan       16/8/1979 P1        1200000
Nếu thực hiện phép gộp nhóm

MA_PHONG        ℑ    COUNT MA_NV, AVERAGE LUONG   (NHAN_VIEN)

 Thì quan hệ kết quả sẽ là :
     MA_P          COUNT MA_NV        AVERAGE LUONG
       P1                4                        1500000
       P2                2                        2000000
       P3                2                        1500000
 Nếu thực hiện phép gộp nhóm :

        ℑ    COUNT MA_NV, AVERAGE LUONG   (NHAN_VIEN)
 Thì quan hệ kết quả sẽ là :

                      COUNT MA_NV         AVERAGE LUONG
                               8                  1666666.7
Bài tập:
        Xét các CSDL gồm các lược đồ quan hệ được cho bởi các
thể hiện của chúng như sau:
      NHAN_VIEN
   MA_NV     HO_TEN     NG_SINH GIOI_TINH     MA_P    LUONG
     1      Trần Anh   28/3/1978   Nam         P2     2000000
     2      Ngọc Hà    17/4/1979   Nữ          P1     1700000
     3      Hồng Mai   29/6/1980    Nữ         P4     2300000
     4      Hoàng Hà   24/5/1980   Nam         P2     1800000
     5      Ngọc Lan   7/11/1979    Nữ         P1     2500000

     PHONG
       MA_P          TEN_P              ĐIA_CHI
        P1     Hành chính quản trị    P302 - Nhà A
        P2      Nghiên cứu và PT     Tầng 3 - Nhà B
        P3         Giám đốc          Tầng 2- Nhà A
        P4          Kỹ thuật          P205 - Nhà C
DU_AN

  MA_DA       TEN_DA            ĐIA_ĐIEM_DA   MA_P
   D1       Phần mềm A             HÀ NỘI      P4
   D5          Mạng B             NAM ĐỊNH     P2
   D20    Giáo trình điện tử     HẢI PHÒNG     P1

CHAM_CONG
     MA_NV      MA_DA          SO_GIO
       1         D8              20
       2         D4              15
       3         D1              17
       4         D8              24
       5         D20             30
       6         D1              27
Yêu cầu :
1. Tìm tên dự án có mã là D20
2.Cho biết tên các thành phố có dự án thực hiện.
3. Cho biết tên phòng thực hiện dự án có mã là D20
4. Cho biết tên và lương của những nhân viên thực hiện dự án D8 và
làm việc trên 20 giờ
5. Cho biết họ tên và lương của những nhân viên thuộc phòng " Nghiên
cứu & PT"
6. Đếm số nhân viên trong công ty và tính mức lương trung bình của
các nhân viên.
7. Đếm số dự án mà công ty đã thực hiện
Bài 5. Ngôn ngữ CSDL – SQL
   Để người sử dụng có thể giao tiếp được
    với CSDL phải có một hệ thống ngôn
    ngữ giao tiếp bao gồm:
     • Ngôn ngữ định nghĩa dữ liệu .
     • Ngôn ngữ thao tác dữ liệu
     • Ngôn ngữ truy vấn dữ liệu
     • Ngôn ngữ quản lý dữ liệu
             Mỗi hệ quản trị CSDL đều có cách
       cài đặt các ngôn ngữ khác nhau
       nhưng đều dựa trên chuẩn của ngôn
       ngữ truy vấn có cấu trúc SQL
       ( Structured- Query Language)
I. Ngôn ngữ định nghĩa dữ liệu SQL

   Là ngôn ngữ mô tả dữ liệu, cho phép
    người dùng định nghĩa cấu trúc CSDL, sửa
    đổi cấu trúc, liên kết các thành phần trong
    CSDL
    Ngoài ra , nó còn cung cấp các khả
    năng khác như : định nghĩa khung nhìn,
    kiểm soát tính toàn vẹn dữ liệu, cấp phát
    quyền truy cập, …
Quy ước :

  – Tên tên bảng, thuộc tính đối tượng không chứa dấu cách,
  không trùng tên với nhau.
  – Các phạm trù cú pháp bắt buộc phải điền được đặt trong
  cặp dấu < >
  – Các thành phần tuỳ chọn được viết trong cặp dấu [ ]
  – Mỗi câu lệnh SQL có thể được viết trên nhiều dòng và
  được kết thúc bằng dấu ;
Các kiểu dữ liệu đơn giản trong
                  SQL
     Kiểu dữ liệu số: integer , float,
    decimal(n,p)- số thực với độ dài tối đa là
    n chữ số với p chữ số thập phân ,
    number(n)- kiểu số có độ dài tối đa là n
   Kiểu dữ liệu chuỗi :
    -varchar (n) - chuỗi có độ dài biến đổi
    từ 0 đến n
    - Char (n): xâu kí tự có độ dài cố định n (
    n<=255)
   Kiểu dữ liệu ngày tháng: date, time
   Kiểu luận lí : boolean
II. Các câu lệnh tạo cấu trúc
               bảng
1. Lệnh tạo bảng tổng quát
     CREATE TABLE <Tên_bảng>
     ( <tên_ cột_1> <loại dữ_liệu_1> <
  kích thước 1>,
     ………………….
      <tên_ cột_n> <loại dữ_liệu_n> < kích
  thước n>,
     );
Ví dụ :
       Tạo bảng SINH_VIEN có các thuộc tính:
- mã sinh viên ( kiểu số có độ dài <5)
- họ tên ( kiểu xâu kí tự có độ dài <25)
 - ngày sinh (kiểu date)
 - giới tính ( kiểu xâu có độ dài <3)
 - địa chỉ ( kiểu xâu có độ dài < 30 )
 - điểm TB ( kiểu số thực có độ dài <4, trong đó có
2 chữ số sau phần thập phân)
CREATE TABLE SINH_VIEN
(    ma_sv NUMBER(5) ,
     ho_ten VARCHAR(25),
     ng_sinh DATE,
     gioi_tinh VARCHAR (3),
     đia_chi VARCHAR (30),
     diem_tb DECIMAL (4,2),
);
2. Lệnh tạo bảng với một số điều kiện ràng
                        buộc
   CREATE TABLE <Tên_bảng>
   ( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>,
   ………………….
    <tên_ cột_n> <loại dữ_liệu_n> < kích thước n>,

  [ CONSTRAINT < tên ràng buộc toàn vẹn>]| NULL|
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 đó :
   NOT NULL : chỉ rằng cột không nhận giá trị rỗng.
    Ngầm định là Null. Thuộc tính khoá ngầm định là Not
    Null.
   COSNTRAINT< tên các ràng buộc toàn vẹn> :
    khai báo các ràng buộc toàn vẹn của CSDL.
   Primary Key ( Khoá chính): Khai báo khoá chính
    của mảng
   Unique ( Khoá ) : Khai báo các khoá khác nếu có
   Foreign Key Khoá_ ngoài References Tên_
    bảng : Khai báo các khoá ngoài của bảng
   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 bảng SINH_VIEN có:
- khoá chính là thuộc tính mã sinh viên ( kiểu
số)
- họ tên ( kiểu xâu kí tự có độ dài <=25) không
được để trống,
 - ngày sinh (kiểu date)
 - giới tính ( kiểu xâu có độ dài <=3, mặc định là
'Nam')
 - mã lớp là một khoá ngoài, mã lớp thuộc bảng
LOP.
 - điểm TB ( kiểu số thực có độ dài <=4)
Câu lệnh :
CREATE TABLE SINH_VIEN
(    ma_sv NUMBER(5) PRIMARY KEY,
     ho_ten VARCHAR(25) NOT NULL,
     ng_sinh DATE,
     gioi_tinh VARCHAR (3) DEFAULT ' Nam',
     ma_lop CHAR (3) ,
     diem_tb DECIMAL (4,2),
     FOREIGN KEY ma_lop REFERENCES LOP


);
Hoặc :
CREATE TABLE SINH_VIEN
(    ma_sv NUMBER(5) ,
     ho_ten VARCHAR(25)      NOT NULL,
     ng_sinh DATE,
     gioi_tinh VARCHAR (3)    DEFAULT ' Nam',
     ma_lop CHAR (3) ,
     diem_tb DECIMAL (4,2),
     PRIMARY KEY ( ma_sv),
     FOREIGN KEY ma_lop REFERENCES LOP
);
3. Bổ sung -xoá một cột trong bảng
a. Bổ sung một cột :
ALTER TABLE < tên bảng>
    ADD <tên cột> < kiểu dữ liệu > <
 kích thước>;

VD : Thêm cột số điện thoại vào bảng
 SINH_VIEN ở trên.
   ALTER TABLE SINH_VIEN
       ADD dien_thoai NUMBER(10);
a.Xoá một cột :
ALTER TABLE < tên bảng> DROP <tên
 cột> ;

VD : Xoá cột điểm TB trong bảng SINH_VIEN
 ở trên.

    ALTER TABLE SINH_VIEN DROP
 diem_tb;
4. Xoá một bảng khỏi CSDL
    DROP TABLE < tên bảng>;

VD : Xoá bảng SINH_VIEN trong CSDL
        DROP TABLE SINH_VIEN;

     Khi đó toàn bộ thông tin về bảng
 SINH_VIEN( gồm cả lược đồ và các bản ghi ) đều
 bị xoá, khác với lệnh

     DELETE FROM SINH_VIEN ;

     chỉ xoá các bản ghi trong bảng, vẫn giữ lại cấu
 trúc (lược đồ ) của bảng
III. Các câu lệnh truy vấn
1. Truy vấn theo câu hỏi đơn giản
      Cấu trúc cơ sở của một biểu thức hỏi ( còn gọi là
  biểu thức truy vấn) SQL gồm :

  SELECT [ DISTINCT | ALL] {* | <cột> AS [<tên
   mới>],..}
  FROM < tên bảng> [ < bí danh >],...
  [WHERE < điều kiện chọn>]
  [GROUP BY < ds tên cột>] [HAVING <điều kiện>]
  [ORDER BY < ds cột> ];
Trong đó :
 - Từ khoá DISTINCT : để loại bỏ sự trùng lặp ( các bộ trùng
lặp chỉ giữ lại một bộ)
- < biểu thức cột>: là tên của một cột hoặc của biểu thức
- < tên bảng >: là tên của một bảng trong CSDL hay một khung
nhìn mà ta có thể truy cập vào
- GROUP BY : dùng để gộp nhóm các bộ cùng giá trị tương ứng
ở các cột xuất hiện trong ds tên cột.
 - HAVING: dùng để lọc các nhóm thoả điều kiện
 - ORDER BY : quy định thứ tự trong các cột trả ra gồm : ASC (
tăng dần) và DESC ( giảm dần). Mặc định là ASC
Ví dụ 1:
     Tìm tên các dự án và mã các phòng
 quản lý dự án tương ứng
     SELECT ten_da, ma_p
     FROM DU_AN;
Kết quả tra ra :
         Ten_da            Ma_p
       Phần mềm A           P2
         Mạng B             P3
      Giáo trình điện       P1
            tử
Chú ý :
a . Muốn hiển thị tất cả các cột trong bảng, ta có
thể dùng dấu * để thay thế
Ví dụ 2. Cho biết thông tin về nhân viên trong
 công ty .
C1 : SELECT ma_nv, ho_ten, ng_sinh, gioi_tinh,
 ma_p, luong
     FROM NHAN_VIEN;

C2:   SELECT *
      FROM    NHAN_VIEN ;
b. Trong bảng kết quả, nếu muốn ta
 có thể đặt tên mới cho cột sau từ khoá
 As
Ví dụ3 : Cho biết tên và lương mới của mỗi nhân
  viên biết họ được tăng 10% .
Câu lệnh :
  C1:
     SELECT ho_ten, luong + luong*0.1
     FROM NHAN_VIEN;

 C2:
    SELECT ho_ten, luong+luong*0.1 AS
 luong_moi
    FROM NHAN_VIEN;
c. SQL dùng các phép so sánh :
       <= ( nhỏ hơn hoặc bằng) ,
       >=( lớn hơn hoặc bằng) ,
        < > ( khác)
 - Có thể kết hợp nhiều biểu thức logic
 bằng các phép AND, OR, NOT.
Ví dụ 4:Tìm các nhân viên thuộc phòng có mã
phòng là P2 và có lương >=2tr.

   SELECT ma_nv, ho_ten, ma_p, luong
   FROM NHAN_VIEN
   WHERE ma_p= 'P2' AND
luong>=2000000;
Ví dụ 5:
      Lập danh sách ( gồm mã sinh viên,họ
tên, ngày sinh, giới tính) của các sinh viên
nữ có học lực từ khá trở lên và các sinh
viên nam học lực giỏi.
  SELECT SV#, HT, NS, GT
  FROM SV
  WHERE (GT= 'Nữ' AND HL>=6.5)
          OR ( GT= 'Nam' AND HL
>=8.0 );
d. Tìm kiếm có xử lý xâu kí tự
     SQL dùng toán tử LIKE để so sánh
    xâu.
     SQL sử dụng kí tự ' %' để thay thế cho
    một xâu con, dấu phân cách '_' để thay
    thế cho một kí tự.
     VD:
       - A%B : xâu kí tự bất kì bắt dầu bằng
    chữ A và kết thúc bằng chữ B
       - A_B : xâu gồm 3 kí tự, có kí tự thứ
    hai bất kì
Ví dụ 6: Cho biết mã và tên các dự án mà
địa điểm có chứa từ UBND:
   SELECT ma_da, ten_da
   FROM DU_AN
   WHERE dia_diem_da LIKE '%UBND
%';
e. SQL cho phép sử dụng các giá trị NULL để
chỉ sự thiếu vắng thông tin về giá trị của một bộ
tại một thuộc tính. Với từ khoá IS NULL, SQL
cho phép kiểm tra xem một giá trị có là NULL
hay không ?

Ví dụ 7: Cho biết tên và mã số dự án mà
  cột địa điểm có giá trị là NULL.
     SELECT ma_da, ten_da
     FROM DU_AN
     WHERE dia_diem_da IS NULL;
f. Truy vấn có sắp xếp thứ tự
     Kết quả của câu truy vấn SQL có thể
  được sắp theo thứ tự tăng dần (ASC )
  hoặc giảm dần (DESC) bởi khoá
  ORDER BY. Mặc định là tăng dần.
Ví dụ 8 :
     Liệt kê các nhân viên nữ theo thứ tự
  tăng dần của lương:
     SELECT *
     FROM NHAN_VIEN
     WHERE GT = ' Nữ'
     ORDER BY luong;
 Việc sắp thứ tự có thể được thực
 hiện trên nhiều thuộc tính
Ví dụ 9: Hiển thị các thông tin chấm
 công của các dự án có mã thuộc tập
 D1, D2, D8 theo thứ tự tăng dần của
 số giờ và giảm dần của mã dự án:
   SELECT *
   FROM CHAM_CONG
   WHERE ma_da IN ('D1', 'D2', 'D8')
   ORDER BY so_gio ASC, ma_da
 DESC;
g. Tìm kiếm nhờ sử dụng IN và
                 BETWEEN
Ví dụ 10:
    Tìm những nhân viên có lương từ 2000000
 đến 3000000 , sắp xếp tên theo thứ tự tăng
 dần.
    SELECT *
    FROM NHAN_VIEN
    WHERE luong BETWEEN 2000000 AND
 3000000
    ORDER BY ho_ten ASC;
2. Các hàm thư viện
SQL có 5 hàm kết tập được cài sẵn :
 - COUNT :đếm số giá trị
 - SUM : tính tổng các giá trị trong một
 cột
 - MAX : tính giá trị lớn nhất trong một
 cột
 - MIN : tính giá trị nhỏ nhất trong một
 cột
 - AVG : tính giá trị trung bình của một
 cột
Chú ý : Các hàm sum và avg chỉ áp
Ví dụ 1: Tìm lương cao nhất, lương thấp
 nhất, và trung bình cộng lương toàn cơ
 quan
 SELECT MAX (luong) AS max, MIN
 (luong) AS min, AVG (luong) AS tb
 FROM NHAN_VIEN;

Kết quả câu truy vấn này trả ra như sau :

        max        min         tb

     3000000     1200000    2350000
Ví dụ 2: Cho biết số nhân viên thực hiện dự
án có mã là D8
    SELECT   COUNT (*)
    FROM     CHAM_CONG
    WHERE     ma_da = 'D8';
Chú ý :
   - Hàm Count khi có đối số (*) có
 nghĩa là đếm số bản ghi thoả mãn
 yêu cầu mà không cần quan tâm đến
 bất kì cột nào .
- Dùng từ khoá DISTINCT ngay
  trước tên cột được áp dụng hàm,
  khi cần loại bỏ các bộ trùng nhau.
Ví dụ 3: Đếm số tỉnh có sinh viên
  theo học
    SELECT COUNT (DISTINCT Que)
    FROM   SINHVIEN;
3.Tìm kiếm nhờ mệnh đề GROUP BY

Ví dụ 1: In ra danh sách sinh viên theo
 từng quê của sinh viên?
    SELECT SV#, HT, NS
    FROM      SV
    GROUP BY Que;
4. Tìm kiếm có sử dụng mệnh đề
                   HAVING
      Mệnh đề HAVING thường sử dụng cùng mệnh đề
GROUP BY. Sau HAVING là biểu thức điều kiện. Biểu
thức này không tác động vào toàn bảng mà chỉ tác động
vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề
GROUP BY
VÍ DỤ : Tìm mã số những sinh viên thực hiện ít nhất 2
đề tài:
            SELECT SV#
            FROM SD
            GROUP BY SV#
            HAVING COUNT (DT# ) >=2;
5. Tìm kiếm với câu hỏi phức
                       tạp
    Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ
      Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ
lồng nhau hoặc qua phép kết nối.
 Phép kết nối :
      ĐK: Các miền tham gia kết nối phải có miền trị là
sánh được với nhau. Tên của các cột khác nhau có thể
được viết tường minh qua tên bảng theo cú pháp :
          Tên_ bảng. Tên_ cột
 Ví dụ : Với mỗi đề tài có sinh viên tham gia thực tập. Hãy
cho biết tên đề tài, tên chủ nhiệm đề tài và kinh phí thực
hiện đề tài đó.
Câu lệnh :

     SELECT TDT, CN, KP
     FROM DT, SD
     WHERE SD.DT# = DT.DT#;

      Chú ý : Trong câu truy vấn có hơn một
bảng, nếu tên cột là không duy nhất thì bắt buộc
phải viết tên cột dạng tường minh.
 Ánh xạ lồng
Ví dụ 1:
     Tìm tên những sinh viên thực tập tại Hà Nội .
     SELECT HT
     FROM SV
     WHERE SV# IN (SELECT SV#
                   FROM SD

WHERE NTT= ‘Hà Nội ‘);
SQL còn có thể tìm kiếm trên nhiều bảng
 nhờ mênh đề EXISTS ( tồn tại )

                  Ví dụ 2:
Tìm những sinh viên thực hiện ít nhất một đề tài nào
đó:
SELECT *
FROM SV
WHERE EXISTS ( SELECT *
                   FROM                SD
                                            WHERE
SV.SV# = SD.SV#);
 Tìm kiếm có sử dụng lường từ ANY và
                 ALL
Ví dụ 3 : Tìm tên những đề tài mà sinh viên có mã số 5
đã thực hiện:
SELECT TDT
FROM DT
WHERE DT# = ANY ( SELECT DT#
                  FROM SD

WHERE SV# = 5);
Ví dụ 4 :
     Tìm tên sinh viên có điểm học lực
cao hơn tất cả các sinh viên
SELECT HT
 FROM SV
WHERE HL >= ALL      ( SELECT HL
                               FROM
  SV );

    Mệnh đề trên tương đương với :
SELECT HT
 FROM SV
WHERE HL = ( SELECT MAX (HL)
                          FROM     SV );
IV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆU
1. Thêm một bộ :
Dạng tổng quát :
      INSERT INTO Tên _ bảng ( ds_tên _cột)
      VALUES (các_ giá_trị )
      [ câu hỏi con]
Có thể bổ sung vào một tập các bản ghi là kết quả xử lý
của một câu hỏi nào đó.
VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng
SV.
      INSERT INTO SVG
      SELECT *
      FROM SV
2. Xoá bản ghi
      Có thể xoá một hay nhiều bản ghi thoả mãn một
điều kiện nào đó.
Dạng tổng quát:
     DELETE [tên_bảng]
     [FROM { Tên_bảng / Tên_ view}]
     [WHERE Biểu_ thức _điều _kiện]
Ví dụ : Xoá những sinh viên có điểm HL kém
(HL<=3.5):
            DELETE
            FROM SV
3. Sửa đổi dữ liệu
Sửa đổi các giá trị của các bản ghi theo một điều kiện nào đó:
Dạng tổng quát :
            UPDATE [ tên_bảng]
            SET [ tên_cột = biểu_thức,...]
            FROM tên _ bảng
            WHERE Biểu _ thức _điều _kiện
Ví dụ : Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5
            UPDATE SV
            SET HL = 8.5
            WHERE HT=‘ Phan Ngọc Hà’;
4. Tạo chỉ mục.
  Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các
bản ghi dựa trên giá trị tăng dần của một ( hay một số)
cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm
kiếm thông tin trong CSDL.
Dạng tổng quát :
   CREATE INDEX tên_bảng_chỉ_mục
   ON Tên_bảng ( tên _cột [ASC | DESC]);
Bỏ chỉ mục thì sử dụng mệnh đề :
      DROP INDEX tên_chỉ_mục;
Ví dụ :
       Tạo chỉ mục CMHT trên cột Ho_ten của bảng
sinh viên:
      CREATE INDEX CMHT
      ON SV ( HT ASC);


Ví dụ: Xoá chỉ mục CMHT ra khỏi bảng SV
           DROP INDEX CMHT;
5. Tạo View của người sử
                       dụng
Tạo ra một khung nhìn của người sử dụng :
Dạng tổng quát :
   CREATE VIEW Tên_View (Danh_ sách_ tên _cột)
   AS mệnh_đề_Select ;
Ví dụ : Tạo View DSSVG gồm những sinh viên giỏi bao
gồm thông tin về họ tên, ngày sinh, giới tính của các sinh
viên từ bảng SV.
       CREATE VIEW DSSVG ( Hoten, NS, GT)
       AS    SELECT HT , NS, GT
            FROM         SV
            WHERE HL >= 8.0;
6. SQL nhúng
       Có thể truy cập vào CSDL từ một ngôn ngữ lập
trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ này.
Một ngôn ngữ trong đó các câu hỏi được SQL được
nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc của
SQL được phép trong ngôn ngữ này làm thành SQL
nhúng
- Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:
Ngôn ngữ chủ
            +
       SQL nhúng

       Tiền xử lý

      Ngôn ngữ chủ
            +
      Các lời gọi hàm

      Biên dịch
                            Thư viện SQL
     ngôn ngữ chủ

Chương trình ngôn ngữ chủ
Bài 6. RÀNG BUỘC TOÀN VẸN
1.   Tổng quan
•      Ràng buộc toàn vẹn sử dụng các luật
     để định nghĩa các điều kiện đảm bảo
     cho CSDL ở trạng thái an toàn.
•      Ràng buộc toàn vẹn được dùng để
     ngăn ngừa việc đưa dữ liệu không hợp
     lệ vào CSDL.


       Định nghĩa : Ràng buộc toàn vẹn là
     các điều kiện bất biến không được vi
     phạm trong một CSDL.
   RBTV còn được gọi là các quy tắc
    quản lý được áp đặt lên các đối
    tượng của thế giới thực .
    VD :
       - Mỗi sinh viên có một mã sinh
    viên duy nhất để phân biệt với các
    sinh viên khác
       - Điểm HL của mỗi sv không được
    nhỏ hơn0 và lớn hơn 10.
       - Mỗi SV phải thuộc một lớp nào
    đó.
    Các hệ quản trị CSDL thường có
    các cơ chế tự động kiểm tra RBTV
    này.

    Việc kiểm tra RBTV có thể được
    tiến hành vào một trong các thời
    điểm sau :
       - Kiểm tra ngay khi thực hiện
    một thao tác cập nhật ( thêm, sửa ,
    xoá ,…)
       - Kiểm tra định kỳ hay đột xuất
2. Các yếu tố của RBTV
 Khi xác định một RBTV cần chỉ rõ:
 Điều kiện ( tức là nội dung) của

  RBTV, từ đó, xác định cách biểu diễn.
 Bối cảnh xảy ra RBTV: trên một hay

  nhiều quan hệ và cụ thể là trên
  những quan hệ nào.
 Mức độ ảnh hưởng của RBTV.

 Hành động cần phải có khi phát hiện

  ra có RBTV bị vi phạm.
3. Điều kiện của RBTV
   Điều kiện của RBTV là sự mô tả và
    biểu diễn hình thức và nội dung của
    nó.

 Được biểu diễn bằng ngôn ngữ tự
  nhiên, thuật giải, ngôn ngữ quan hệ
  hoặc bằng các phụ thuộc hàm ,v.v..
 VD:
   R1: Mỗi sinh viên có một mã sinh viên
    duy nhất không trùng với các sinh
    viên khác:
    ∀ sv1, sv2 ∈ SV, sv1 ≠ sv2
            ⇒ sv1. SV#    ≠ sv2. SV#
   R2: Mọi sv được làm đề tài đều phải
    đạt loại giỏi:
      ∀ sd ∈ SD, ∃ sv ∈ SV :
          ( sv. HL >=8.0) ∧ (sd. SV# =
    sv. SV# )
4. Bối cảnh của RBTV
       Bối cảnh của một RBTV là tập các
    quan hệ mà khi thao tác trên các
    quan hệ đó có khả năng làm cho
    ràng buộc toàn vẹn bị vi phạm.

   Có thể chia RBTV thành hai loại
    chính theo bối cảnh RBTV :
   RBTV có bối cảnh trên 1 quan hệ

   RBTV có bối cảnh trên nhiều
    quan hệ
4.1. RBTV có bối cảnh 1 quan hệ


   RBTV   miền giá trị.
   RBTV   liên bộ
   RBTV   liên thuộc tính
a. RBTV miền giá trị
   RBTV miền giá trị qui định tập giá
    trị mà một thuộc tính có thể nhận.

   VD:
   DOM(PHAI) = {‘Nam’, ‘Nữ’}
   Ví dụ 3: Xét lược đồ quan hệ
    • NHANVIEN (MANV, HT, NS, GT, DC,
      LUONG)

   Xét RBTV R2:
    • Nội dung:
       • GT của nhân viên chỉ có thể là

         ‘Nam’ hoặc ‘Nữ’
       ∀ ∀n ∈ NHANVIEN: n.GT IN

         {‘Nam’,’Nữ’}
    • Bối cảnh: quan hệ NHANVIEN
Bảng tầm ảnh hưởng (TAH) gồm 4 cột:
      Cột 1 chứa tên các quan hệ liên quan tới
    RBTV.
      3 cột tiếp theo là tên các thao tác :
    Thêm / Sửa / Xoá
      Nếu RBTV cần được kiểm tra nguy cơ
    dẫn tới vi phạm dấu gạch chéo (x) hoặc dấu
    cộng (+) ;
   Có thể chỉ rõ các thuộc tính nào nếu được
    cập nhật mới dẫn đến vi phạm bằng cách liệt
    kê chúng dưới dấu (x) hoặc dấu (+)
       Nếu không có nguy cơ bị vi phạm thì
    đánh dấu trừ (-)
• Bảng TAH của R2:


  R2      Thêm        Xóa    Sửa

NHANVIE     +          -    +(GT)
   N
b. RBTV liên bộ
   RBTV liên bộ là điều kiện ràng buộc giữa
    các bộ trên cùng một quan hệ

   Ví dụ 5: Xét lược đồ quan hệ:
    • PHONGBAN(MAP, TENP, TP,NGNC)
   Xét RBTV R4:
    • Nội dung:
       • Hai phòng khác nhau sẽ có mã phòng

         khác nhau
       ∀ ∀ p1, p2 ∈ PHONGBAN: p1 ≠ p2

             ⇒ p1.MAP ≠ p2.MAP
    • Bối cảnh: quan hệ PHONGBAN
• Bảng tầm ảnh hưởng:

   R4      Thê    Xóa   Sửa
            m
PHONGBAN    +      -    -(*)
c. RBTV liên thuộc tính
   RBTV liên thuộc tính là ràng buộc giữa các
    thuộc tính trong cùng một quan hệ

   Ví dụ 7: Xét lược đồ quan hệ
    DEAN (MADA, TDA, DD, PHONG,
      NGBD_DK, NGKT_DK)
    • Xét RBTV R6:
    • Nội dung:
       • Với mọi đề án, ngày bắt đầu dự kiến

         (NGBD_DK) phải trước ngày kết thúc
         dự kiến (NGKT_DK)
• Bối cảnh: quan hệ DEAN
• Bảng tầm ảnh hưởng:


 R6     Thêm   Xóa     Sửa
DEAN     +      -       +
                     (NGBD_D
                        K,
                     NGKT_DK
                        )
4.2. RBTV có bối cảnh trên nhiều
                quan hệ

   RBTV tham chiếu
   RBTV liên bộ, liên quan hệ
   RBTV liên thuộc tính, liên quan hệ
   RBTV do thuộc tính tổng hợp
   RBTV do chu trình trong lược đồ biểu
    diễn quan hệ
a. RBTV tham chiếu

   RBTV tham chiếu là ràng buộc quy
    định giá trị của thuộc tính trong một
    bộ của quan hệ R phải thuộc tập giá
    trị của thuộc tính khóa trong quan hệ
    S khác.

   RBTV tham chiếu còn gọi là ràng
    buộc phụ thuộc tồn tại hay ràng buộc
    khóa ngoại
   Ví dụ 10 : Xét các lược đồ quan hệ
   PHONGBAN (MAP, TENP, TRP, NGNC)
   NHANVIEN (MANV, HT, NS, GT, LUONG)

    • Xét RBTV R9:
    • Nội dung:
       Mỗi trưởng phòng phải là một nhân viên
        trong công ty. ∀p ∈ PHONGBAN, ∃n
       ∈ NHANVIEN:
        n[MANV] = p[TRP]
      Hay: PHONGBAN[TRP] ⊆
       NHANVIEN[MANV])
• Bối cảnh: NHANVIEN,
   PHONGBAN
 • Bảng tầm ảnh hưởng:
  R9       Thêm   Xóa     Sửa
PHONGBA     +      -     +(TRP)
   N
NHANVIEN    -     +       - (*)
b. RBTV liên bộ, liên quan hệ
   RBTV liên bộ, liên quan hệ là điều kiện giữa
    các bộ trên nhiều quan hệ khác nhau.
   Ví dụ 11 : Xét các lược đồ quan hệ
     PHONGBAN (MAP, TENP, TRP, NGNC)
     DIADIEMPHG (MAP, DIADIEM)
   Xét RBTV R10:
   Nội dung:
    • Mỗi phòng ban phải có ít nhất một
      địa điểm phòng
       ∀p ∈ PHONGBAN, ∃d ∈ DIADIEMPHG:
       p.MAP = d.MAP
• Bối cảnh: PHONGBAN,
       DIADIEM_PHG
     • Bảng tầm ảnh hưởng:

   R10       Thêm   Xóa        Sửa

PHONGBAN      -      -          -

DIADIEM_PH    -     +        + (MAP)
     G
c. RBTV liên thuộc tính, liên quan hệ
   RBTV liên thuộc tính, liên quan hệ là điều kiện
    giữa các thuộc tính trên nhiều quan hệ khác
    nhau.
    Ví dụ 12 :Xét các lược đồ quan hệ
     DATHANG(MADH, MAKH, NGAYDH)
     GIAOHANG(MAGH, MADH, NGAYGH)
     - Xét RBTV R11:
    • Nội dung:Ngày giao hàng không được
      trước ngày đặt hàng
       ∀g∈GIAO_HANG,
        ∃!d∈DAT_HANG:d[MADH]=g[MADH] ∧
• Bối cảnh: DATHANG, GIAOHANG
• Bảng tầm ảnh hưởng:


   R11    Thêm Xóa       Sửa

DATHANG    -     -   + (MGAYDH)

GIAOHAN    +     -   + (NGAYGH)
   G
d. RBTV do thuộc tính tổng hợp
   Thuộc tính tổng hợp là thuộc tính được
    tính toán từ giá trị của các thuộc tính
    khác hoặc trạng thái của CSDL.
   Khi có thuộc tính tổng hợp, cần phải có
    RBTV để đảm bảo mối quan hệ giữa nó
    và nguồn mà nó được tính toán từ đó.
   Ví dụ 13 :Xét các lược đồ quan hệ
    • PXUAT(SOPHIEU, NGAY, TT)
    • CTIET_PX(SOPHIEU, MAHANG, SL, DG)
• Xét RBTV R12:
• Nội dung:
• Tổng trị giá của 1 phiếu xuất phải bằng
  tổng trị giá các chi tiết xuất.
  ∀px∈PXUAT,
  px.TT =   Σ(ct ∈ CTIET_PX ∧ ct.SOPHIEU = px.SOPHIEU) ct.SL * ct.DG

• Bối cảnh: PXUAT,CTIET_PX
• Bảng tầm ảnh hưởng:


  R12      Thê Xóa          Sửa
            m
 PXUAT     -(*) +         + (TT)
CTIET_P     +     +     + (SL,DG)
   X



• (*): Ở thời điểm thêm một bộ
  vào PXUAT, giá trị bộ đó tại TT là
  trống.
e. RBTV do có chu trình
   Ví dụ 15 :Xét các lược đồ quan hệ
    • NHANVIEN (MANV, HT,NS ,GT, PHONG,
      LUONG)
    • DEAN (MADA, TENDA, DD, PHONG)
    • PHANCONG (NV#, SODA, THOIGIAN)
    • Xét RBTV R14:
    • Nội dung:
       Nhân viên chỉ được phân công vào các đề
        án do phòng mình phụ trách.
   ∀ pc ∈ PHANCONG, ∃ nvda ∈ (NHANVIEN
    ⋈ PHG=PHONG DEAN): (nvda.MANV = pc.NV# ∧
    nvda.MADA = pc.SODA)

    Hay: PHANCONG[MA_NVIEN,SODA] ⊆
    (NHANVIEN ∗ DEAN) [MANV,MADA]

   Bối cảnh: NHANVIEN, DEAN, PHANCONG
   Bảng tầm ảnh hưởng

      R14      Thêm      Xóa        Sửa
PHANCONG        +        -     + (NV#, SODA)
    NHANVIEN    -        +          -(*)
     DEAN       -        +          -(*)
Bài 7. PHỤ THUỘC DỮ LIỆU
  TRONG MÔ HÌNH QUAN HỆ
I. Phụ thuộc hàm (Functional
  Dependencies : FD)
1. Định nghĩa :
     Cho R(U) là một lược đồ quan hệ với
  U = { A1, .. ,An} là tập thuộc tính. X và
  Y là tập con của U.
     Nói rằng X → Y (đọc là X xác định
  hàm Y hoặc Y phụ thuộc hàm vào X)
  nếu r là một quan hệ xác định trên R (U)
  sao cho bất kỳ hai bộ t1, t2 ∈ r mà
 Ví dụ : Trong quan hệ SV, mỗi thuộc tính
DIACHI, NS, KETQUA đều phụ thuộc hàm (pth ) vào
thuộc tính SV#. Mỗi giá trị SV# xác định duy nhất
một giá trị tương ứng đối với từng thuộc tính đó. Khi
đó , có thể viết :
       SV# → DIACHI
       SV# → NS
       SV# → KETQUA
    Nếu Y ⊆X thì hiển nhiên X → Y
2. Hệ tiên đề cho phụ thuộc
                 hàm một tập phụ
2.1. K/n bao đóng của
    thuộc hàm
•       Gọi F là tập tất cả các pth đối với lược
    đồ quan hệ R(U) và X →Y là một pth, X, Y
    ⊆ U.
•       Nói rằng X →Y được suy diễn logic từ
    F nếu mỗi quan hệ r trên R( U) đều thoả
    các pth của F thì cũng thoả X → Y.
•      Chẳng hạn F = { A → B, B → C} thì A
    →C
•      Tập tất cả các pth được suy diễn logic
2.2. Hệ tiên đề Amstrong
   Năm 1974, Amstrong đưa ra hệ
    luật dẫn hay các tính chất của phụ
    thuộc hàm, gọi là hệ tiên đề
    Amstrong:
    Cho X, Y, Z, W ⊆ U . Ta có các
    luật sau :
    A1. Luật phản xạ :
           Nếu Y ⊆ X thì X→ Y
    A2. Luật bổ sung :
           X → Y thì XZ → YZ
   Hệ tiên đề Amstrong được chứng minh
    là đúng đắn và đầy đủ thông qua 3 bổ
    đề sau:
   Bổ đề 1 : Hệ tiên đề Astrong là đúng.
    Có nghĩa là, với F là một tập các pth
    đúng trên quan hệ r. Nếu X → Y là một
    pth được suy dẫn từ F nhờ hệ tiên đề
    Amstrong thì X→ Y là đúng trên quan
    hệ r
   Bổ đề 2: Từ hệ tiên đề Amstrong ta suy
    ra một số luật sau đây:
    a. Luật hợp : Nếu X → Y và X → Z thì
    X → YZ
    b. Luật tách : Nếu X → Y và Z ⊆ Y thì
    X→Z
    c. Luật tựa bắc cầu :
        Nếu X → Y và WY → Z thì XW → Z
 Khái niệm bao đóng của tập các thuộc
tính đối với tập các phụ thuộc hàm.

   Gọi F là tập các pth trên tập thuộc
tính U, X ⊆U . X + là bao đóng của X
(đối với F ) được định nghĩa như sau :
        X + = { A | X → A ∈ F+ }
   Nói cụ thể : X + là tập tất cả các
thuộc tính A mà pth X→A có thể được
suy diễn logic từ F nhờ hệ tiên đề
Amstrong
 Bổ đề 3 : X → Y suy dẫn từ hệ tiên đề
 Amstrong khi và chỉ khi Y ⊆ X +
Như vậy :
            (1).   X ⊆ X+
            (2). f: X→Y ∈ F+ <=> Y ⊆ X+
2.3 Thuật toán tìm bao đóng của tập thuộc
                     tính
Thuật toán CLOSURE.
Thuật toán CLOSURE.
 Input : Tập thuộc tính X và tập phụ thuộc
 hàm F
 Output : Bao đóng X của F
CLOSURE (X,F)
  Begin olddep:= ∅;
 newdep:=olddep
    While newdep <> olddep do
         Begin
         olddep:= newdep
         For each W → Z ∈ F do
        if W ⊂ newdep then newdep:=
 newdep ∪ Z
       End
VD: Cho U = ABCDEG
F={
    AB →C (f1)
    D → EG (f2)
    C → A (f3)
    BE → C (f4)
    BC → D (f5)
    CG → BD         (f6)
    ADC → B         (f7)
    CE → AG    (f8)
}
Cho X= BD. Tính ( BD)+F
Giải:
X(0):   =   BD
X(1):   =   BD∪ EG    ( do (f2) )
X(2):   =     ∪ C ( do (f4) )
            BDEG
X(3):   =     ∪ { A ( do (f2) ) ∪
            BDEGC
                 C ( do (f4) ) ∪
                 D ( do ( f5) ) ∪
                 BD ( do (f6) ) ∪
                 AG ( do (f8))
               }
X(4): = BDEGCA = U => X+F = X (4)
3. Tập phụ thuộc hàm tương đương
    3.1 Định nghĩa
       Hai tập pth F và G được gọi là
    tương đương nếu F+ = G+. Khi đó ta
    nói F phủ G ( hay G phủ F). Kí hiệu :
    F≡ G
   Bổ đề 1: Mỗi tập các pth F đều được
    phủ bằng tập các pth G mà vế phải
    các pth đó bao gồm không quá một
    thuộc tính.
   Bổ đề 2: F≡ G <=> F suy dẫn
    được ra G và G suy dẫn được ra F
Ví dụ : Cho quan hệ Q (ABCDE) với:
      F = {A→ BC , A→ D,CD → E }
      G = {A→ BCE , A→ ABD, CD → E}
* F suy dẫn được ra G vì :
     A → C, A → D => A → CD
     CD → E                   A→E
         => A → BCE.
Tương tự, dễ dàng chứng minh : A →
  ABD.
  Vậy F suy dẫn được ra G.
* Ngược lại, ta nhận thấy F ⊆ G , do đó
  hiển nhiên G suy dẫn được ra F.
3.2 Phủ tối thiểu
Định nghĩa : Một tập phụ thuộc hàm F
  được gọi là tối thiểu nếu :
 Mỗi vế phải của một phụ thuộc hàm F

  chỉ có một thuộc tính.
 F gồm toàn những pth đầy đủ, nghĩa

  là không tồn tại một phụ thuộc hàm X
  → A thuộc F và một tập con Z của X
  mà :
     F+ = ( F - { X → A } ∪ { Z → A}) +
 Không tồn tại một phụ thuộc hàm X →

  A thuộc F mà :
3.3 Thuật toán MINIMALCOVER
     tìm phủ tối thiểu của tập phụ
             thuộc hàm F
Input: Tập phụ thuộc hàm F
Output : G- là phủ tối thiểu của F
MINIMALCOVER (G, F)
 G:=F
Thay thế từng phụ thuộc hàm X→ { A1,
  A2,..,An} trong G bằng các phụ thuộc hàm X
  →A1, X → A2, .., X → An
For each X → A trong G
     For each B ∈ X
       If ( G - { X → A }) ∪ ( X- {B})→ A)
  tương đương với G Then
    Thay X → A bằng ( X- { B}) → A trong G
For each X → A trong G
       If ( G - { X → A }) tương đương
  với G     Then
     Loại X → A ra khỏi G
Return (G)
End.
Ví dụ 1: Cho F = { A→ B , B → A, B →
   C, A → C, C → A}. Tìm phủ tối thiểu G
                    của F
Giải :    Tất cả các pth của F đều thoả
 mãn điều kiện 1 vì vế trái chỉ có một
 thuộc tính.
     Vế phải của mỗi pth chỉ có một
 thuộc tính nên không cần xét đk2.
    Xét đk 3, ta thấy : Nếu koại bỏ pth
 B → A và A → C ta được một tập pth G
    G={A→ B , B → C, A → C } ≡ F
    Không thể loại bỏ thêm một pth
 nào nữa vì tập pth còn lại sẽ không
Ví dụ 2: Cho F = { AB→ C, A → B, B →
                      A}.
          Tìm phủ tối thiểu G của F
Giải :   Tất cả các pth của F đều thoả
 mãn điều kiện 1 vì vế trái chỉ có một
 thuộc tính.
     Xét đk2: ta thấy pth là không đầy
 đủ vì :     (F- {AB→ C} ∪{A→ C}) ≡
 F
    Vậy loại bỏ pth AB → C và thay
 bằng pth A → C ta được tập pth G:
    G={A→ C , A→ B, B → A } ≡ F
 Nhận thấy, không thể loại bỏ thêm
4. Bài toán tìm khoá của quan hệ
 4.1 Thuật toán tìm khoá dựa trên đồ thị

Định nghĩa khoá được viết lại bằng pth.
    Cho Q là lược đồ quan hệ định
 nghĩa trên tập các thuộc tính U =
 { A1, A2, .. , An} với tập các pth F=
 { f1, f2, .. ,fn} xác định trên Q. K ⊆
 U là khoá của R nếu thoả mãn hai
 điều kiện sau :
    (1): K → U
    (2): ∃ K' ⊂ K mà K' → U
Biểu diễn lược đồ quan hệ Q(U)
 bằng đồ thị có hướng như sau:
- Mỗi nút của đồ thị là tên của một thuộc tính
  thuộc Q
- Cung nối hai thuộc tính A và B thể hiện cho
  pth A →B
- Thuộc tính chỉ có các mũi tên đi ra, tức là
  chỉ ở vế trái của pth gọi là nút gốc
- Thuộc tính mà chỉ có mũi tên đi vào, tức là
  chỉ nằm ở vế phải của pth gọi là nút lá.
- Khoá của lược đồ quan hệ phải bao phủ tập
  nút gốc và không được chứa bất cứ nút lá
  nào của đồ thị
Thuật toán tìm khoá:
-B1: Vẽ đồ thị của lược đồ quan hệ
-B2: Xác định tập các nút gốc ( G) và tập các
  nút lá ( L)
-B3: Xuất phát từ tập các nút gốc(G), đặt K
  bằng G ( khởi đầu ta đặt khoá là tập các nút
  gốc)
-B4: Dựa trên tập các pth F, tìm bao đóng
  của tập K ( tìm K+F)
+ Nếu K+F = U thì K chính là khoá . Dừng lại.
+ Ngược lại thì bổ sung một thuộc tính không
 thuộc tập nút lá (L) vào K. Khi đó K = K+1
 nút không thuộc tập L.
4.2 Thuật toán tìm khoá dựa trên bao
đóng của tập thuộc tính
* Ý tưởng : Bắt đầu từ tập R vì R+ = R. Ta bớt
  dần các phần tử của R để nhận được tập bé
  nhất mà bao đóng của nó vẫn bằng R.
  Vào : r(R), F
  Ra : K ( Khoá )
     B1: gán K = R
     B2: Lặp lại các bước sau :
          Loại khỏi K phần tử A mà ( K A)+
  =R
  Nhận xét: Thuật toán trên chỉ tìm được một
  khoá trong sơ đồ quan hệ. Nếu cần tìm
Ví dụ : Cho R = { ABCDEGHI}
F = { AC→ B , BI → ACD, ABC → D, H →
I, ACE → BCG, CG → AE}.
       Tìm khoá K ?
Giải :
B1: Gán K= R = { ABCDEGHI}
B2: Lần lượt loại bỏ các phần tử khỏi K.
 -Loại phần tử A : ta có : {BCDEGHI}+ = R vì
 pth CG → AE nên A thuộc về {BCDEGHI}+
 nên K ={BCDEGHI}
 -Loại phần tử B : ta có : {CDEGHI}+ = R vì
 pth CG → AE khiến A thuộc về {CDEGHI}+
 và pth AC → B khiến B thuộc về {CDEGHI}+
-Loại phần tử C : ta có : {DEGHI}+ ≠ R nên K
vẫn là {CDEGHI}
-Loại phần tử D : ta có : {CEGHI}+ = R
   vì CG → AE, AC → B, ABC → D nên D có
trong {CEGHI}+ . Nên K ={CEGHI}
-Loại phần tử E : ta có : {CGHI}+ = R
vì CG → AE khiến E thuộc về {CGHI}+ nên K
={CGHI}
-Loại phần tử H : ta có : {CGI}+ ≠ R nên K
vẫn là {CGHI}
-Loại phần tử I : ta có : {CGH}+ = R
    vì H → I, khiến I thuộc về {CGH}+ nên K
={CGH}
Bài 8. THIẾT KẾ SCDL MỨC QUAN NIỆM


 Trên thực tế, một ứng dụng có thể đựơc phân tích.
  thiết kế thành nhiều lược đồ CSDL khác nhau. Để
  đánh giá việc thiết kế một lược đồ CSDL, người ta
  dựa trên các tiêu chuẩn về sự trùng lặp thông tin, chi
  phí kiểm tra và các ràng buộc toàn vẹn...
 Vậy để tránh sự dư thừa thông tin, ta cần chuẩn hoá
  tất cả các lược đồ trong quá trình thiết kế.
1. Phép tách các lược đồ quan
              hệ
   - ĐN:    Phép tách các lược đồ quan
hệ R = { A1, A2, .. An} là việc thay thế
lược đồ quan hệ R bằng tập các lược đồ
{ R1, R2, .., Rk}, trong đó
Ri ⊂ R, i= 1,..,k
        và    R = R1∪ R2 ∪ ... ∪ Rk
Không đòi hỏi các Ri phải là phân biệt
- Mục đích : Loại bỏ các dị thường dữ
liệu
Ví dụ :
 Cho lược đồ quan hệ người cung
  cấp :
     S(MCTY, ĐC, MH, GIA)
 với tập pth : MCTY → ĐC
            MCTY, MH → GIA
Có thể được tách thành 2 lược đồ
  khác là :
S1(MCTY, ĐC) và S2 ( MCTY, MH,
  GIA)
  như vậy sẽ không mất công lưu địa
Kết nối không mất mát thông tin
    - Nếu R là một lược đồ quan hệ
 được tách thành các lược đồ con R1,
 R2, .., Rk và D là một tập các phụ
 thuộc dữ liệu. Nói rằng phép tách là
 tách - kết nối không mất mát thông
 tin đối với D nếu với mỗi quan hệ r
 trên R thoả D:
    r = ΠR1(r) * Π R2 (r) * ... * Π Rk(r)
tức là r được tạo nên từ phép kết nối tự
  nhiên của các hình chiếu của nó trên
Kiểm tra phép kết nối không
      mất mát thông tin
Input: R ={ A1, A2, .., An} tập các
 phụ thuộc hàm và phép tách p
 =(R1, R2, .., Rk)
Output: Phép tách có phải là không
 mất mát thông tin hay không ?
Phương pháp : Thiết lập một bảng
 với n cột k hàng.; cột thứ j tương
 ứng với thuộc tính Aj; hàng thứ i
 tương ứng với lược đồ Ri. Tại ô (i,j)
 điền kí hiệu aj nếu Aj ∈ Ri, nếu
- Xét các pth:
     +Xét ( X→ Y ) ∈ F , xét các hàng và
  nếu có giá trị bằng nhau trên thuộc tính X
  thì làm bằng các giá trị của chúng trên Y.
  Khi làm bằng trên Y, nếu một trong hai
  giá trị là aj thì ưu tiên làm bằng aj, nếu
  không làm bằng một trong các kí hiệu
  bij.
     +Tiếp tục với các pth khác ( kể cả
  việc lặp lại các pth đã được áp dụng) cho
  đến khi không còn áp dụng được nữa.
- Xem xét kq: Nếu xuất hiện một hàng
  gồm toàn kí hiệu a1, a2, .. , an thì phép
VD1: Quan hÖ ng­êi cung cÊp:
R(MCTY, ĐC, MH, GIA) ®­îc t¸ch thµnh 2 quan hÖ:
R1(MCTY, ĐC) vµ R2(MCTY, MH,GIA)
víi c¸c phô thuéc hµm: MCTY →ĐC
                         MCTY,MH →GIA
Kiểm tra xem phép tách trên có mất mát thông tin hay
  không ?
B¶ng ban ®Çu ®­îc thiÕt lËp nh­ sau:

           1        2        3         4
          MCTY     §C      MH      GIA

1    R1    a1      a2      b13     b14
     R2    a1     b22       a3         a3
2
¸p dông phô thuéc hµm M    CTY →ĐC cho 2
  hµng cña b¶ng. Ta nhËn thÊy 2 hµng b»ng nhau
  trªn cét tªn (®Òu lµ a1) nªn ë cét §C chóng ®­îc
  lµm b»ng vµ b»ng a2. Khi ®ã ta thÊy b¶ng kÕt
  qu¶ lµ:
            Tªn    §Þa       S¶n      Gi¸
                   chØ      phÈm
      R1    a1      a2       b13     b14
      R2    a1      a2        a3      a3


Cã hµng thø 2 cã c¸c gi¸ trÞ toµn lµ a, do ®ã phÐp
  t¸ch lµ T¸ch - KÕt nèi kh«ng mÊt m¸t th«ng tin.
Bµ i tËp :
B1. Cho l­îc ®å quan hÖ R={A, B, C, D} vµ tËp phô
    thuéc hµm F={A→B, AC →D}
    PhÐp t¸ch quan hÖ R thµnh 2 quan hÖ R1={AB} vµ
    R2={ACD} cã tæn thÊt th«ng tin kh«ng? V× sao?
B2. Cho lược đồ quan hệ với các thuộc tính A, B, C, D, E, F
    và tập phụ thuộc hàm
      F= { AB → C, C → D, ABD → E, F → A}
 Kiểm tra tính mất mát thông tin của phép tách R thành :
             (R) = ( BC, AC, ABDE, ABDF)
B3. Dùng kĩ thuật bảng kiểm tra tính tổn thất của các phép
  tách sau :
R= < U, F>, U = ABCDE ;
F = { A →C, B →C , C→D , DE →C , CE→A}
      p = ( AD, AB, BE , CDE)
2. Một số khái niệm
   * Thuộc tính khoá và không khoá
   - Cho một lược đồ quan hệ R trên
tập thuộc tính U ={ A1, .., An}. Thuộc
tính A∈ U được gọi là thuộc tính khoá
( nguyên thuỷ hay cơ bản) nếu A là
một thành phần thuộc một khoá nào
đó của R, ngược lại A được gọi là thuộc
tính không khoá (phi nguyên thuỷ hoặc
thứ cấp).
   -VD : Cho lược đồ R trên tập thuộc
tính u= { A, B, C, D } với các pth AB→
C , B → D , BC→ A . Ta thấy AB và BC
* Phụ thuộc hàm đầy đủ
   Cho lược đồ quan hệ R(U) trên
tập thuộc tính U = { A1, ... ,Ak}. X
và Y là hai tập thuộc tính khác nhau
X ⊆ U và Y ⊆ U.
   Y là phụ thuộc hàm đầy đủ vào X
nếu Y là pth vào X nhưng không pth
vào bất kì tập con thực sự nào của X
 Phụ thuộc bắc cầu
      Cho một lược đồ quan hệ R(U); X là một
tập con các thuộc tính X⊆ U, A là một thuộc
tính thuộc U. A được gọi là phụ thuộc bắc cầu
vào X trên R nếu tồn tại một tập con Y của R sao
cho X → Y, Y→ A nhưng Y → X với A ∉ XY.
3. Các dạng chuẩn của lược đồ quan
hệ
   - Quan hệ được chuẩn hoá là quan
hệ trong đó mỗi miền của một thuộc
tính chỉ chứa các giá trị nguyên tố
( tức là không phân nhỏ được nữa)
   - Quan hệ có chứa các miền giá trị
là không nguyên tố gọi là quan hệ
không chuẩn hoá.
 - Mét quan hÖ ®­îc chuÈn ho¸ cã thÓ thµnh mét
 hoÆc nhiÒu quan hÖ chuÈn ho¸ kh¸c vµ kh«ng
 lµm mÊt m¸t th«ng tin.
C¸ c d ¹ ng c huÈn:
- D¹ng kh«ng chuÈn
- D¹ng chuÈn thø nhÊt (1NF: First Normal Form)
- D¹ng chuÈn thø hai (2NF)
- D¹ng chuÈn thø ba (3NF)
- D¹ng chuÈn Boye – Codd (BCNF)
3.1. D¹ng chuÈn thø nhÊt:
  Mét l­îc ®å quan hÖ R ®­îc gäi lµ ë d¹ng chuÈn
  mét (1NF) nÕu vµ chØ nÕu toµn bé c¸c miÒn cã
  mÆt trong R ®Òu chØ chøa c¸c gi¸ trÞ nguyªn
  tè.
VD: Cho bảng quan hệ GD ( Ten_GV, MON_GD)
     Ten_GV           Mon_GD
     Ten_GV         Mon_GD
     Lan    PASCAL, NM CSDN
     Hà     C, VISUAL BASIC, TK
            WEP
   Các giá trị ở thuộc tính Mon_GD chưa là giá trị
   nguyên tố nên bảng trên chưa ở dạng chuẩn 1. Để
   đưa lược đồ trên về dạng chuẩn 1 ta tách thuộc
   tính kép thành các thuộc tính đơn như sau :
Bảng GD ở dạng chuẩn 1:


  Ten_GV            Mon_GD
  Lan       PASCAL
  Lan       NM CSDN
  Hà        C
  Hà        VISUAL BASIC
  Hà        TK WEP
3.2. D¹ng chuÈn thø 2:
L­îc ®å quan hÖ R ë d¹ng chuÈn 2 (2NF) nÕu:
 R ë d¹ng chuÈn mét
 Mọi thuéc tÝnh kh«ng kho¸ cña R lµ phô thuéc
   hµm ®Çy ®ñ vµo kho¸ chÝnh.
VD:Cho quan hÖ:
           SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM )
 M«n thi   MSSV       Tªn       Tuæi      §Þa       §iÓm
                                          chØ
   3         11       Lan        20        HN         8
   3         12       Ha         21        HP         6
   4         11       Lan        20        HN         7
   4         12       Ha         21        HP         6
   5         11       Lan        20        HN         7
   5         13       Tu         22        HT         2
Khoá chính của quan hệ trên là (Monthi ,
MSSV).Ta thấy các thuộc tính không khoá: ten,
tuoi , diachi không phụ thuộc đầy đủ vào khoá
chính (chỉ phụ thuộc vào MSSV). Do đó, vi phạm
2NF. Để lược đồ ở dạng chuẩn 2, ta tách thành 2
quan hệ :
       SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ
       THIXONG (MONTHI, MSSV, DIEM)

 Hai quan hệ trên đã ở 2NF vì mọi thuộc tính
không khoá đều đã phụ thuộc hàm đầy đủ vào
khoá chính
3.3 Dạng chuẩn thứ 3 ( 3NF)
Lược đồ quan hệ R ở dạng chuẩn thứ 3 ( 3NF) nếu :
 R ở dạng chuẩn 2
Mỗi thuộc tính không khoá là không phụ thuộc hàm bắc cầu
vào khoá chính.
- VD1 : Cho lược đồ quan hệ R ( SAIP) với các phụ thuộc
hàm : SI→ P và S → A.
 R không ở 3NF. Vì có A là một thuộc tính không khoá, phụ
thuộc bắc cầu vào khoá chính: SI→ S , S →A và S →SI.
 - VD2: Lược đồ quan hệ R ( CSZ) với các phụ thuộc hàm:
CS → Z, Z → C. Trong lược đồ này, mọi thuộc tính đều là
thuộc tính khoá. Do vậy R ở 3 NF
3.4 Dạng chuẩn Boye-Codd
                    ( R ở dạng chuẩn Boye-Codd ( BCNF)
      Lược đồ quan hệ
                      BCNF)
nếu với mọi : X → A thoả trên R , A ∉ X thì X là một khoá
của R.
- VD :Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở
BCNF mà là ở 3NF vì rằng Z → C nhưng Z không phải là
một khoá của R.
- Định lý : Nếu một lược đồ quan hệ R với tập phụ thuộc
hàm F là ở BCNF thì nó là ở 3NF.
 - Nhận xét : Trong CSDL, các lược đồ quan hệ ở dạng
chuẩn 1, 2, 3 vẫn tồn tại sự dư thừa thông tin. Để tối thiểu sự
dư thừa thông tin thì các bảng phải ở dạng chuẩn BCNF
4. Chuẩn hoá bảng
      Chuẩn hoá bảng là cách đưa một bảng chưa chuẩn hoá
về dạng chuẩn 3NF hoặc BCNF mà không làm mất mát
thông tin.
 Có hai phương pháp để chuẩn hoá lược đồ quan hệ :
 Phương pháp phân rã : Tách một lược đồ quan hệ thành
nhiều quan hệ khác thỏa mãn các dạng chuẩn.
 Phương pháp tổng hợp : Gom các thuộc tính thành từng
nhóm tạo thành quan hệ thoả mãn các dạng chuẩn.
4.1. Đưa một bảng chưa chuẩn hoá về dạng
  chuẩn hoá
 Tách các nhóm thuộc tính lặp thành một bảng, khoá của
bảng là khoá của bảng ban đầu và thuộc tính định danh của
nhóm lặp.
 Những thuộc tính còn lại lập thành một bảng với khoá của
bảng là khoá của bảng ban đầu.
 Quá trình tách chỉ dừng lại khi ta đã nhận được các bảng
đã chuẩn hoá ( không còn thuộc tính lặp)
 VD : Quan hệ đơn hàng:
  DONHANG ( SoĐ,MaH , TenH, SL, MAK, TenK,Tel)
  DONHANG1 (SoĐ, MaH, TenH, SL)
   DONHANG2 (SoĐ, MaK, TenK, Tel)
4.2. Đưa bảng ở 1NF về 2NF
     Tách các thuộc tính phụ thuộc vào một phần của khoá
thành một bảng, bảng này có khoá là thuộc tính gây ra sự
phụ thuộc.
     Các thuộc tính còn lại là một bảng với khoá của bảng
là khoá của bảng ban đầu.
 VD : Quan hệ ;
      SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM )

   ở 1NF nhưng chưa ở 2NF. Để quan hệ ở 2NF, ta
   tách thành 2 quan hệ :
      SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ
      THIXONG (MONTHI, MSSV, DIEM)
4.3. Phép tách một lược đồ quan hệ thành
3NF
        Phép tách một lược đồ quan hệ R với tập pth F tối
thiểu , không làm mất mát thông tin trên R, bảo toàn các pth
sao cho mỗi lược đồ con đều ở 3NF:
- B1 : Gom tất cả các thuộc tính của R không liên quan đên
một pth nào của F, hoặc vế trái, hoặc vế phải , cho vào một
lược đồ.
 - B2 : Nếu có một phụ thuộc hàm nào của F mà liên quan tới
tất cả các thuộc tính của R thì kết quả ra chính là R.
 - B3 : Ngoài ra, phép tách đưa ra các lược đồ gồm các thuộc
tính XA cho pth X → A; nếu X → A1, X → A2, ... , X→ An
thì thay thế tập thuộc tính XA1A2...An cho XAi ( 1<= i<=
n). Quá trình tiếp tục đến khi tất cả các lược đồ đều đã ở 3NF
Ví dụ : Cho lược đồ quan hệ R ( CTHRSG) với tập pth tối
thiểu : C → T , HR → C , HT → R , CS → G và HS → R.
      Thuật toán trên cho ta kết quả của phép tách là tập
lược đồ gồm 5 lược đồ con ở 3NF là :
              R1 (CT)     (ứng với pth C → T)
             R2 (HRC)     (ứng với pth HR → C)
             R3 ( HTR)     (ứng với pth HT → R)
             R4 ( CSG)     (ứng với pth CS → G)
             R5 (HSR)      (ứng với pth HS → R)
4.3. Phép tách một lược đồ quan hệ thành
 BCNF
      Phép tách một lược đồ quan hệ R với tập pth F, không
làm mất mát thông tin sao cho mỗi lược đồ con đều ở BCNF.
 Phương pháp : Lặp liên tiếp. Tại mỗi bước phép tách p là bảo
đảm không mất mát thông tin đối với F.
      -Bước đầu : p chỉ bao gồm R
      -Các bước tiếp : Nếu S là một lược đồ thuộc p, S chưa
BCNF, chọn X → A là pth thoả trên S, trong đó X không chứa
khoá của S, A∉ X. Thay thế S trong p bởi S1 và S2 với :
             S1 = XA, S2 = S - A
      Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở
dạng chuẩn BCNF.
VD: Cho lược đồ R(CTHRSG) với tập pth :
   C → T, HR → C, HT → R, CS → G, HS → R
Khoá của R là HS.
Ta lần lượt xét các pth vi phạm điều kiện BCNF.
- Xét C → T : vi phạm BCNF vì C không chứa khoá, dùng
thuật toán trên để tách thành : R1 ( CT ) và R2( CHRSG).
Sau đó cần tính F+ và chiếu xuống R1 và R2, kiểm tra ta
thấy R1 đã ở BCNF, R2 thì chưa. Ta tách tiếp R2.
Phép tách cuối cùng được :
      R1(CT), R2 ( CSG), R3 ( CHR), R4 ( HSR)
Quá trình tách có thể được biểu diến qua sơ đồ :
R(CTHRSG)          C → T, HR → C, HT → R,
     Khoá =HS          CS → G, HS → R


R1(CT)               R2(CHRSG)   HR→C, HT →R,
Khoá =C               Khoá =HS   CS →G, HS →R
 C→T
                                         HR→C,
          R21(CSG)         R22(CHRS)
                                         HC →R,
          Khoá =CS         Khoá =HS
                                         HS →R
          CS →G

                 R221(HRC)        R222(HSR)
                Khoá =HR,HC       Khoá =HS
               HR→C, HC →R             HS →R
BTVN:
  B1. Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U
= ABCDEHG và tập phụ thuộc hàm F={DE→ G, E→ A,
H→ C, CG→ H, DG→ EA, D→ B}
    a. Xác định khoá của lược đồ quan hệ trên.
     b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ
trên.
 B2. Xác định dạng chuẩn cao nhất của lược đồ quan hệ
với các thuộc tính ABCDEF và tập phụ thuộc hàm
{AB→C,C→B,ABD→E,F→A}
  B3. Cho W= < R,F> R = { A, B, C, D}
F= { B → D, A → C, C → ABD}. Hỏi W có là 2NF, 3NF
không ?
B4. Xác định dạng chuẩn cao nhất của lược đồ quan hệ
sau: H=(U,F); U=ABCD;
                          F={CD→B,A →C,B→ACD}
B5. Cho lược đồ R=(BOISQD) và
          F={S→D,I→B, IS→Q,B→O}
 a. Chứng tỏ rằng phép tách:
     R=(SD,IB, ISQ,BO) Là phép tách không mất mát
thông tin.
 b. Chứng tỏ phép tách trên là ở dạng 3NF.
BÀI 9. NGÔN NGỮ TÂN TỪ
I. Logic toán và ứng dụng của nó vào
   CSDL.
    ĐN1 : Biểu thức logic là một phát biểu
   mà giá trị của nó có thể đúng hoặc sai.
   Biểu thức logic có giá trị luôn luôn đúng
   ( hoặc sai ) được gọi là hằng đúng hoặc
   hàng sai.
1. Một số khái niệm :
-  Hàm: là một ánh xạ từ một miền giá trị
   vào tập hợp gồm hai giá trị hoặc đúng
   hoặc sai, thường kí hiệu là f,g,h…
-  Tân từ : Là một biểu thức được xây dựng
- ĐN2 : Tân từ một ngôi được định nghĩa
  trên 1 tập X và một biến x có giá trị
  chạy trên các phần tử của X.
   Với mỗi giá trị của x, tân từ P(x) là một
  mệnh đề logic, tức là nó có giá trị hoặc
  là đúng hoặc là sai.
VD: X là một tập hợp những người có tên
  như sau :
X={ Hoa , Lan, Tuấn, Dũng, T.Anh,…}
Với tân từ NỮ (x) được xác dịnh như : “ x
  là người nữ”. Khi đó mệnh đề :
  NỮ ( Hoa) : cho kết quả là đúng.
  NỮ ( Tuấn ) : Cho kết quả là sai .
ĐN3: Tân từ n ngôi được định nghĩa
 trên các tập X1, X2,…Xn và n biến
 x1, x2, …, xn lấy giá trị trên các tập
 Xi tương ứng. Với mỗi ai∈ Xi, xi =
 ai , tân từ n ngôi là một mệnh đề.
    Kí hiệu : P ( x1, x2, …, xn)
VD: CHA ( x1, x2 ) : “ x1 là cha của
 x2”
- ĐN4: Từ đựợc định nghĩa một cách truy
  hồi như sau :
  i. Từ là một hằng hay một biến
  ii. f (t1,t2,…,tn) là một hàm n ngôi thì f là
  một từ.
- ĐN5: Công thức :
  i. Công thức nguyên tố là một tân từ n ngôi
  P(t1,t2,.., tn) , trong đó t1, t2,.., tn là các
  từ.
  ii. Nếu F1, F2, .. ,Fn là các công thức thì các
  biểu thức sau: F1 v F2 , F1 Λ F2 , F1
  => f2, ¬ F1 cũng là các công thức.
  iii. Nếu F1 là công thức thì ∀x: F1, ∃x: F1
  cũng là các công thức.
-   ĐN6:
    - Một công thức được gọi là “đóng”
    nếu mọi biến của nó đều có kèm với
    lượng từ.
    - Một công thức được gọi là “mở”
    nếu tồn tại một biến không có kèm
    với lượng từ. Biến này gọi là biến tự
    do.
2. Diễn giải và mô hình.
a. Diễn giải của một công thức:
-  Một diễn giải của một CT gồm 4 phần
  :
  * Miền giá trị của các biến công thức,
  KH là tập M.
  * Việc sử dụng công thức: hằng , hàm
  , tân từ.
  * Ý nghĩa của công thức
  * Xác định một quan hệ n ngôi trên
  tập Mn
VD: Cho M = {Tùng, Minh , Hưng, Long, Đoàn,
  Tuấn} và một CT C có dạng như sau :
  ∀x ∀ y (∃z (P(x,y) v P(y,z) => Q (x,z) )
Tập diễn giải của công thức có thể là :
  - M : miền giá trị của các biến x, y, z
  - Các tân từ : P: CHA ; Q: ONG
  - Ý nghĩa :
      * CHA (x, y): x có cha là y
      * ONG (x, y): x có ông là y.
  - Các quan hệ 2 ngôi trên M2 :
  CHA = {(Tùng, Minh), (Long, Đoàn), (Đoàn,
  Tuấn),(Minh, Long)}
  ONG = {(Tùng, Long ), (Minh, Đoàn), (Long,
  Tuấn) }
II. Ứng dụng logic toán trong CSDL
1. Dẫn nhập
 CSDL : mô hình hoá thông tin gồm các sự
   kiện đựơc liên kết hay biểu diễn một
   tình trạng của thế giới thực.
 Chú ý :
   i. Câu hỏi đóng tương ứng với CT đóng.
   Câu trả lời là có hiệu lực đúng hoặc sai.
      VD: Tùng có cha là Minh?      CHA
   ( Tùng, Minh)?
           Con của Long là ai?        ∃x
   CON (Minh, x) ?
   ii. Câu hỏi mở tương ứng với một CT
2. Ngôn ngữ tân từ có biến là bộ -n
Một câu hỏi trong ngôn ngữ tân từ có biến là bộ
   -n thoả các quy tắc sau :
a. Biến: là một bộ của quan hệ
b. Từ : là hằng, biến, hay biểu thức có dạng
   s[c] trong đó : s là biến, c là tập các thuộc
   tính ( gọi là từ chiếu)
c. Các biểu thức:
     - R s : với R là một quan hệ; s là biến bộ-n
    được gọi là từ
      - t1 θ a, t1 θ t2: ở đây, t1, t2 là các từ
   chiếu, θ là toán tử so sánh, a là một hằng.
ĐN7: Một câu hỏi trong ngôn ngữ tân từ có biến
   là bộ -n đựơc biểu diễn như sau :
2. Ngôn ngữ tân từ có biến là miền giá trị
Một câu hỏi trong ngôn ngữ tân từ có biến là bộ
    -n thoả các quy tắc sau :
a. Từ : là hằng hoặc biến.
b. Công thức nguyên tố:
      i. Q (t1, t2,..,tn) : với Q là một quan hệ; ti
     là các từ
       ii. t1 θ a1, t2 θ a2: ở đây, ti là các từ ,θ là
    phép toán
c. Trong 1 CSDL, câu hỏi bằng ngôn ngữ tân từ
    có dạng :
    { ( x1, x2,…, xk) | F ( x1, x2, …, xk) }
      Ở đây xi (i= 1,2,..,k) là các biến tự do của
    F và F không có biến tự do nào khác.
VD: Xét cơ sở dữ liệu Thực tập gồm 3 quan
  hệ sau đây:
      SV( SV#, HT, NS, QUE, HL)
      DT(DT#, TDT, CN, KP)
      SD(SV#, DT#, NTT, KM, KQ)
Q1: Cho danh sách các sinh viên có quê Hà
  Nội và có điểm học lực >=8.0?
- Diễn tả bằng ngôn ngữ tân từ có biến là bộ

  như sau:
      { r[HT] | SV r Λ r[QUE=‘Hà Nội’] Λ
  r[HL]>=8.0}
Và bằng ngôn ngữ tân từ có biến là miền giá
  trị như sau:
Q2: Cho biết tên các sinh viên nam
  quê Hải Phòng có điểm học lực >8?
- Diễn tả bằng ngôn ngữ tân từ có

  biến là bộ như sau:
      { r[HT] | SV r Λ r[GT]=‘Nam’ Λ
  r[QUE] = ‘Hải Phòng’ Λ r[HL]>=8}
- Và bằng ngôn ngữ tân từ có biến là
  miền giá trị như sau:
     {n | ∃x ∃t ∃z ( SV (n, x, y,
  ‘Nam’,’Hải Phòng’, z) Λ z > 8}
Q3: Cho danh sách các sinh viên có
  điểm thực tập =10?
- Diễn tả bằng ngôn ngữ tân từ có

  biến là bộ như sau:
      { r[HT] | ∃p ( SV q Λ SD p Λ
  q[SV#]=pSV[#] Λ p[KQ]=9.0}
- Và bằng ngôn ngữ tân từ có biến là
  miền giá trị như sau:
     {y | ∃z ∃t ∃w ∃a ∃b ∃c ( SV (x, y,
  z, t, w) Λ SD(x, a, b, c, 10)}
BTVN: Cho quan hệ Thực tập như trên, hãy viết
  các câu truy vấn sau bằng ngôn ngữ tân từ
  có biến là bộ -n và có biến là miền giá trị ?
  1. Cho thông tin về những sinh viên sinh
  trước năm 1985 có quê ở Hà Nội?
  2. Cho biết các địa điểm thực tập xa trường
  (KM >100) của đề tài số 5?
  3. Cho biết mã của những đề tài có kinh phí
  lớn hơn 1 triệu và nhỏ hơn 2 triệu?
  4. Cho biết mã của sinh viên dưới 20 tuổi,
  thực tập khá ( có điểm kết quả thực tập
  >=6.5)
Bài 9. Tối ưu hoá câu hỏi
       Nói chung, các ngôn ngữ bậc cao ( ngôn ngữ
con dữ liệu ) đòi hỏi thực hiện trong máy đều rất tốn
kém thời gian. Do vậy, trước khi thực hiện các câu hỏi
thuộc các ngôn ngữ đó cần thiết phải biến đổi hợp lý
để giảm thời gian tính toán. Việc làm đó gọi là "tối ưu
hoá ".
      Ví dụ : Thực hiện câu truy vấn : Cho biết các
thông tin cá nhân và việc thực tập của những sinh viên
có điểm thực tập >=8. Ta nên chọn ra những sv có
điểm thực tập >=8 trong quan hệ SD rồi mới đem kết
nối với quan hệ SV để lấy ra nhứng thông tin các nhân
của họ .
I. Các chiến lược tối ưu tổng quát
    1. Thực hiện phép chọn sớm như có thể
       Biến đổi câu hỏi để đưa phép chọn vào thực hiện
trước nhằm làm giảm bớt kích cỡ của kết quả trung gian
và do vậy chi phí phải trả giá cho việc truy nhập bộ nhớ
thứ cấp cũng như lưu trữ của bộ nhớ chính sẽ nhỏ đi.
2. Tổ hợp những phép chọn xác định với phép tích
Đề - Các thành phép kết nối.
      Nếu kết quả của tích Đề - Các R x S là đối số của
phép chọn và phép chọn liên quan tới các phép so sánh
giữa các thuộc tính của R và S thì thay phép tích Đề - Các
bằng phép kết nối.
3. Tổ hợp dãy các phép tính một ngôi như các phép
chọn và phép chiếu.
   Một dãy các phép một ngôi ( như phép chọn hoặc
phép chiếu) mà kết quả của chúng phụ thuộc vào các bộ
của một quan hệ độc lập thì có thể nhóm các phép đó lại.
4. Tìm các biểu thức con chung trong một biểu thức
      Nếu kết quả của một biểu thức con chung ( biểu
thức xuất hiện hơn một lần) là một quan hệ không lớn và
nó có thể được đọc từ bộ nhớ thứ cấp với ít thời gian
hơn thì nên tính toán trước biểu thức đó chỉ một lần.
5. Xử lý các tệp trước
    Đối với các tệp số, có hai vấn đề quan trọng cần được
xử lý trước là sắp xếp trước các tệp và thiết lập các tệp chỉ
số.
6. Đánh giá trước khi thực hiện tính toán .
      Cần tính toán chi phí thực hiện các phép tính để có
được trình tự thực hiện các phép tính một cách tốt nhất.
II. Biểu thức tương đương
       Hai biểu thức E1 và E2 gọi là tương đương ( viết tắt
là ( E1 ≡ E 2 ) nếu chúng biểu diễn cùng một ánh xạ, nghĩa
là nếu thay thế cùng các quan hệ cho tên các lược đồ tương
ứng ở hai biểu thức cho ra cùng một kết quả.
III. Các quy tắc liên quan tới phép kết nối và
phép tích Đề- Các
     L1. Quy tắc giao hoán của phép kết nối và phép tích
Đề-Các
       Nếu E1 và E2 là hai biểu thức quan hệ, F là điều
kiện trên các thuộc tính của E1 và E2 thì :
      E1  E2
          F
                     ≡     E2  E1
                               F
      E1 * E2        ≡    E2 * E1
      E1 x E2        ≡    E2 x E1
L2. Quy tắc kết hợp của phép kết nối và
phép tích Đề- Các
 Nếu E1, E2 và E3 là các biểu thức quan hệ, F1, F2
 là điều kiện thì :
  (E1  E2 )  E3 ≡ E1  (E2  E3 )
       F1        F2             F1       F2


   (E1 * E2) * E3       ≡ E1 *( E2 * E3 )
   (E1 x E2) x E3       ≡ E1 x ( E2 x E3 )

More Related Content

PDF
Giao trinh-co-so-du-lieu
PDF
Các mô hình dữ liệu
DOC
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
PPT
ERD - Database Design
PPT
Tổng quan về cơ sở dữ liệu
PPT
Bài giảng cơ sở dữ liệu
PPT
Cơ sở dữ liệu đại học
PPT
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong
Giao trinh-co-so-du-lieu
Các mô hình dữ liệu
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
ERD - Database Design
Tổng quan về cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
Cơ sở dữ liệu đại học
Slide co-so-du-lieu-chuong-8-csdl-huong-doi-tuong

What's hot (20)

PPT
Csdl hdt
PPT
csdl - buoi1
PDF
Cơ Sở Dữ Liệu - Chương 1
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
PPTX
Giaoandientu bai10lop12
PDF
Cơ sở dữ liệu PTIT slide 2
PDF
Cơ sở dữ liệu PTIT slide 3
PPTX
Nguyễn Thị Thanh Hương - Bài 10 - Chương 3 - Lớp 12
PDF
Bài 4: Phân tích hệ thống về dữ liệu Mô hình dữ liệu mức khái niệm - Giáo trì...
PPTX
Tin hoc 12 chuong 3 - bai 10 - csdl quan he - tiet 2
PPTX
Bài 2: Hệ quản trị cơ sở dữ liệu
PDF
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
PDF
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
PDF
Com201 slide 1
PPTX
PDF
Chương 2. Các khái niệm trong CSDL
PPTX
Giaoandientu bai10lop12
PDF
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
PDF
Com201 slide 2
PDF
Com201 slide 6
Csdl hdt
csdl - buoi1
Cơ Sở Dữ Liệu - Chương 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Giaoandientu bai10lop12
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 3
Nguyễn Thị Thanh Hương - Bài 10 - Chương 3 - Lớp 12
Bài 4: Phân tích hệ thống về dữ liệu Mô hình dữ liệu mức khái niệm - Giáo trì...
Tin hoc 12 chuong 3 - bai 10 - csdl quan he - tiet 2
Bài 2: Hệ quản trị cơ sở dữ liệu
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Dữ liệu không gian trên SQL Server - (Spatial Data in SQL Server)
Com201 slide 1
Chương 2. Các khái niệm trong CSDL
Giaoandientu bai10lop12
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
Com201 slide 2
Com201 slide 6
Ad

Viewers also liked (19)

PPT
The Fruits
PPTX
PPTX
Kusportscombig12tournament 100328152840 Phpapp01
PPT
Twitter e prospettive di marketing
PPTX
Music Scavenger Hunt
PPT
Making the Most of Your Kit: IR on a Shoestring &amp; How to Stretch Your I...
PPTX
PPTX
How To Bake Cupcakes
PPT
Kombinasyon&PermüTasyon
PPT
Pengembangan Silabus
PPTX
Find our names
PPTX
Melissa Hernandez Spring Break
PPT
Pengembangan Silabus
PPT
Elektronski CV
PPTX
Spreadsheet Errors Slides Nick Silver
PPT
52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query
DOC
65 csdl
PPTX
Tech Ideas for the School Year
DOC
Giai bai tap_chuong_3truy-van-rbtv
The Fruits
Kusportscombig12tournament 100328152840 Phpapp01
Twitter e prospettive di marketing
Music Scavenger Hunt
Making the Most of Your Kit: IR on a Shoestring &amp; How to Stretch Your I...
How To Bake Cupcakes
Kombinasyon&PermüTasyon
Pengembangan Silabus
Find our names
Melissa Hernandez Spring Break
Pengembangan Silabus
Elektronski CV
Spreadsheet Errors Slides Nick Silver
52695817 p0201-m03t-truy-van-du-lieu-query-truy-van-chon-select-query
65 csdl
Tech Ideas for the School Year
Giai bai tap_chuong_3truy-van-rbtv
Ad

Similar to Csdliuihc 111212222339-phpapp02 (20)

PDF
Slide_BG_cơ sở dữ liệu 3TinChi CHUNG.pdf
PDF
co-so-du-lieu_thai-bao-tran_chuong-1-tong-quan-ve-co-so-du-lieu - [cuuduongth...
PDF
Chuong 1 tong_quan_ve_csdl
PPTX
01. Chương 1_Tổng quan về hệ quản trị cơ sở dữ liệu.pptx
PPT
Chuong 2: Mo hinh thuc the ket hop ( Entity - Relationship )
PDF
PDF
Cơ sở dữ liệu
PPT
k07406tochucdulieuvathongtin
PDF
CSDL_In ngay
PDF
Co so du lieu C1-2 đại học bách khoah hà nội.pdf
PDF
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
PDF
Chuong 1_Gioo thieu DB.pdf
PDF
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
PDF
Phan tich thiet_ke_he_thong_quan_ly_part_4
PDF
Phan tich thiet_ke_he_thong_quan_ly_part_4
PDF
Phan tich thiet_ke_he_thong_quan_ly_part_4
PDF
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
PPTX
Cơ sở dữ liệu_CHƯƠNG 1-Mô hình quan hệ.pptx
PDF
20121224164710718
PDF
Chapter0
Slide_BG_cơ sở dữ liệu 3TinChi CHUNG.pdf
co-so-du-lieu_thai-bao-tran_chuong-1-tong-quan-ve-co-so-du-lieu - [cuuduongth...
Chuong 1 tong_quan_ve_csdl
01. Chương 1_Tổng quan về hệ quản trị cơ sở dữ liệu.pptx
Chuong 2: Mo hinh thuc the ket hop ( Entity - Relationship )
Cơ sở dữ liệu
k07406tochucdulieuvathongtin
CSDL_In ngay
Co so du lieu C1-2 đại học bách khoah hà nội.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Chuong 1_Gioo thieu DB.pdf
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4
Phan tich thiet_ke_he_thong_quan_ly_part_4
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Cơ sở dữ liệu_CHƯƠNG 1-Mô hình quan hệ.pptx
20121224164710718
Chapter0

Csdliuihc 111212222339-phpapp02

  • 1. TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN ************************* CƠ SỞ DỮ LIỆU GV: ThS.VŨ VĂN ĐỊNH
  • 2. Bài 1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 1. Tại sao cần phải có một CSDL? - Hệ thống các tập tin cổ điển : • Được tổ chức riêng rẽ, phục vụ một mục đích hay một bộ phận nào đó của doanh nghiệp. • Nhược điểm: - Tính phụ thuộc giữa chương trình và dữ liệu . - Lưu trữ trùng lặp dữ liệu - Việc chia sẻ dữ liệu bị hạn chế - Tốn thời gian xây dựng - Chi phí cho bảo trì chương trình lớn
  • 3. 2. Ví dụ về CSDL. -Cơ sở dữ liệu cho một công ty chuyên kinh doanh : Gồm các bảng: KHACH HANG, SANPHAM, DON_DAT_HANG, NHA_CUNG_CAP,... và một số quy tắc nghiệp vụ áp đặt lên các bảng. Ví dụ về bảng KHACHHANG : STT MKH Tên KH Ma hang So luong 1 CN22 Hoàng Hà MK02 8 2 CT20 Bến Nghé CT01
  • 4. 3. Cơ sở dữ liệu là gì?  ĐN: CSDL là một tập hợp các dữ liệu có cấu trúc về một tổ chức nào đó được lưu trữ trên các thiết bị lưu trữ thông tin thứ cấp như băng từ, đĩa từ,..  Mục đích: Nhằm thoả mãn nhu cầu khai thác thông tin của một hay nhiều người sử dụng phục vụ cho nhiều mục đích khác nhau  Điểm khác nhau nổi bật giữa CSDL và hệ thống File là : Các dữ liệu trong
  • 5. Ưu điểm của CSDL: Tối thiểu hoá dư thừa thông tin Tính độc lập chương trình- ứng dụng Nâng cao tính nhất quán dữ liệu Nâng cao tính chia sẻ dữ liệu Nâng cao chất lượng dữ liệu Nâng cao khả năng truy cập và trả lại dữ liệu Giảm chi phí bảo trì chương trình.
  • 6. Tiêu chuẩn của một CSDL:  Tính bảo mật Tính độc lập  Tránh sự dư thừa thông tin  Có khả năng lưu trữ, phục hồi khi gặp sự cố  Hiệu suất sử dụng tốt, đảm bảo chế độ ưu tiên khi truy nhập dữ liệu.
  • 7. 4. Các đối tượng sử dụng CSDL  Những người sử dụng không chuyên về lĩnh vực tin học  Các chuyên viên tin học biết khai thác CSDL  Những người quản trị CSDL: là người tổ chức CSDL, cấp quyền hạn khai thác dữ liệu và giải quyết các tranh chấp khi gặp sự cố
  • 8. 5. Các mức biểu diễn một CSDL. Gồm 3 mức : Mức ngoài : là tập tất cả các dữ liệu mà người sử dụng cụ thể có thể nhìn thấy và được phép truy cập, là mức của người sử dụng và các chương trình ứng dụng. Mức quan niệm : giải quyết vấn đề lưu trữ dữ liệu loại gì, lưu trữ bao nhiêu, mối quan hệ trong CSDL và mối quan hệ giữa các loại dữ liệu này như thế nào? Mức trong( mức vật lý): Đây là mức lưu trữ dữ liệu. Mục đích của mức này giải quyết vấn đề dữ liệu là gì, dữ liệu được lưu trữ như thế nào và nhằm mục đích gì.
  • 9. Hình biểu diễn Sự phân mức một CSDL User 1 View 1 CSDL CSDL User 2 View 2 mức mức khái vật …… …………. niệm lý User k View k Mức ngoài Mức trung gian Mức vật lý View ( khung nhìn) của một user là một tập hợp tất cả các dữ liệu mà user đó nhìn thấy, được phép truy cập vào.
  • 10. 6. Tính độc lập giữa dữ liệu và chương trình  Một CSDL là độc lập dữ liệu nếu nó có hoặc có thể có khả năng phát triển mà không ảnh hưởng tới các hệ ứng dụng.  Tính độc lập dữ liệu là " tính bất biến của các hệ ứng dụng đối với các thay đổi trong cấu trúc lưu trữ và chiến lược truy nhập"  Có hai mức độc lập dữ liệu:
  • 11. Độc lập dữ liệu mức vật lý : Có thể tổ chức lại CSDL vật lý (như thay đổi các tổ chức, cấu trúc dữ liệu) để làm thay đổi hiệu quả tính toán của các chương trình ứng dụng nhưng không đòi hỏi phải viết lại chương trình ứng dụng.  Độc lập dữ liệu mức logic: Có thể thay đổi lược đồ khái niệm như thêm, xoá , bớt thông tin của các thực thể đang tồn tại trong CSDL nhưng không làm ảnh hưởng tới các lược đồ con, do đó không cần phải viết lại các chương trình ứng dụng.
  • 12. II. Hệ quản trị CSDL 1. Khái niệm - Là một phần mềm điều khiển mọi truy nhập đối với CSDL. Nó giúp người sử dụng có thể dùng được hệ thống mà không cần quan tâm tới thuật toán chi tiết hoặc biểu diễn dữ liệu trong máy. - Mỗi hệ QT CSDL được cài đặt dựa trên mô hình dữ liệu cụ thể và hỗ trợ tối đa cho người dùng thực hiện các thao tác trên đó. - VD : FOXPRO, ACCESS, ORACLE, v.v..
  • 13. 2.Tính năng của hệ QTCSDL:  Tạo cấu trúc lưu trữ dữ liệu trên máy. Cho phép đưa dữ liệu vào máy tính theo cấu trúc đã tạo ra.  Cho phép khai thác CSDL đã lưu trữ  Tạo cơ chế đảm bảo an toàn, bí mật cho dữ liệu trong quá trình thao tác
  • 14. 3. Các thành phần trong hệ QT CSDL: Ngôn ngữ giao tiếp với người sử dụng: Gồm :ngôn ngữ mô tả , thao tác , truy vấn và quản lý dữ liệu. - Từ điển dữ liệu : là một CSDL của hệ QT CSDL sử dụng để lưu trữ cấu trúc CSDL, các thông tin bảo mật, bảo đảm an toàn dữ liệu và các cấu trúc ngoài - - Các biện pháp bảo mật - Cơ chế giải quyết tranh chấp dữ liệu. Các biện pháp: + Cấp quyên ưu tiên cho NSD + Đánh dấu yêu cầu truy xuất, phân chia thời
  • 15. - Cơ chế phục hồi, sao lưu dữ liệu khi có sự cố: + Định kỳ kiểm tra CSDL, sau một thời gian nhất định tự động tạo bản sao. + Tạo nhật kí thao tác, khi có sự cố thì tự động lật ngược lại để phụ hồi. - Đảm bảo tính độc lập giữa dữ liệu - Cung cấp giao trình. thiện với người dùng và chương diện thân không chuyên
  • 16. Bài 2 NHỮNG CÁCH TIẾP CẬN MỘT CSDL Mô hình dữ liệu là sự trừu tượng hoá môi trường thực, nó là biểu diễn dữ liệu ở mức quan niệm. Mỗi loại mô hình dữ liệu đặc trưng cho một cách tiếp cận dữ liệu khác nhau của những nhà phân tích thiết kế CSDL. Một số loại mô hình dữ liệu phổ biến :
  • 17. 1. Mô hình dữ liệu quan hệ Mô hình dữ liệu quan hệ do E.F. Codd đề xuất. Nền tảng cơ bản của nó là khái niệm lý thuyết tập hợp trên các quan hệ, tức là tập các bộ giá trị.
  • 18. 2. Cách tiếp cận theo mô hình dữ liệu mạng Mô hình dữ liệu mạng (lưới) là mô hình được biểu diễn bởi một đồ thị có hướng.  Loại mẫu tin (Record Type): là mẫu đặc trưng cho từng loại đối tượng riêng biệt, được biểu diễn bởi một hình chữ nhật.  Loại liên hệ ( Set Type): là sự liên kết giữa một loại mẫu tin chủ với một loại mẫu tin thành viên, được biểu diễn bởi một hình bầu dục.  Sự liên kết giữa 2 loại mẫu tin được thể hiện bởi các cung có hướng đi từ loại mẫu tin chủ tới loại liên hệ và từ loại liên hệ tới loại mẫu tin thành viên.
  • 19. Trong loại liên kết, cần chỉ ra số lượng các mẫu tin tham gia trong mỗi kết hợp. Các loại liên hệ:  1-1  1-n  n-1  Đệ quy
  • 20. PHÒNG LÝ LỊCH 1-n Gồm Có 1-1 NHÂN VIÊN n-1 Cùng làm 1-n CÔNG VIỆC quản lý Hình 3. Mô hình dữ liệu mạng ( Network
  • 21. 3. Mô hình dữ liệu phân cấp Mô hình dữ liệu phân cấp là một cây ( Tree) trong đó mỗi nút của cây biểu diễn một thực thể, giữa nút con và nút cha được liên hệ với nhau theo một mối quan hệ xác định.  Loại mẫu tin : Giống trong mô hình mạng  Loại liên hệ : Kiểu liên hệ là phân cấp, theo cách: - Mẫu tin thành viên chỉ đóng vai trò thành viên của một mối liên hệ duy nhất, tức là thuộc một chủ duy nhất. - Như vậy, mối liên hệ từ mẫu tin chủ tới các
  • 22. Ví dụ : TOÀN QUỐC HÀ HẢI PHÒNG NAM … NỘI ĐỊNH ĐÔNG ANH BA … ĐÌNH CỔ NAM HỒNG … LOA HỘ 1 HỘ 2 … NK 1 NK 1 …
  • 23. 4. Mô hình dữ liệu hướng đối tượng - Cho phép biểu diễn các đối tượng khá tự nhiên và sát với thực tế. - Hỗ trợ các ngôn ngữ thao tác hướng đối tượng mạnh, cho phép người sử dụng dễ dàng biểu diễn cả các truy vấn phức tạp
  • 24. Bài 3. Mô hình quan hệ của E.F. Codd I. Khái quát chung Mô hình quan hệ : • Biểu thị dữ liệu trong một CSDL như một tập các quan hệ. • Một quan hệ là một bảng các giá trị gồm các dòng và các cột. • Mỗi dòng trong bảng là một tập các giá trị có liên quan đến nhau, biểu thị một sự kiện tương ứng với một thực thể hay một mối quan hệ tương ứng với thế giới thực.
  • 25. VD: Quan hệ : SINH_VIEN (Ma SV, Hoten, Nam sinh, DiaChi, Diem) Mã Hoten Namsi Diachi Đie SV nh m 001 Ngọc Anh 1986 Hoàn 9 t1 Kiếm 002 Minh Tuấn 1980 Ba Đình 10 t2 003 Hoàng Hà 1985 Tây Hồ 8 t3
  • 26. II. Các khái niệm của mô hình quan hệ 1. Thuộc tính : • Mỗi đối tượng quản lý đều có các đặc tính riêng biệt, gọi là các thuộc tính. Kí hiệu các thuộc tính là A, B, C, A1, A2,... • VD: Mã sinh viên, họ tên, quê quán, ngày sinh, ... • Các thuộc tính được đặc trưng bởi một tên gọi, kiểu giá trị, miền giá trị của chúng. 2. Lược đồ quan hệ : Một lược đồ quan hệ được đặc trưng bởi tên lược đồ và một tập hữu hạn các thuộc tính U={A1, A2, ..., An}. Lược đồ R với tập thuộc tính là U= { A1, A2,... An} được
  • 27. 3. Miền giá trị : - Là tập hợp các giá trị nguyên tử mà thuộc tính có thể nhận - Để đặc tả một miền, người ta dùng: tên miền, một kiểu dữ liệu và khuôn dạng dữ liệu. VD: Miền Mã SV là tập hợp các dãy kí tự có độ dài từ 5 ki tự Miền Điểm là tập các giá trị số thuộc [0..10]
  • 28. 4. Quan hệ :  Một quan hệ trên một tập thuộc tính là một tập con của tích Desscartes cuả một hay nhiều miền. Cho một quan hệ r xác định trên tập thuộc tính Ω={ A1, A2, ..,An}. Khi đó r ⊆ Dom(A1) x Dom(A2) x ...x Dom(An), trong đó Dom(Ai ) là miền của thuộc tính Ai Như vậy, quan hệ r là một tập hợp các n_ bộ có dạng : r = {( a1, a2,.., an) | ai ∈ Dom(Ai), i= 1, 2,..,n }
  • 29. Có thể quan niệm quan hệ là một bảng hai chiều, mỗi cột là một thuộc tính thường gọi là trường, mỗi dòng là một bộ n. VD: Quan hệ R= {(di1,di2,...,din ) / i=1..m} A1 A2 ... An d11 d12 ... d1n d21 d22 ... d2n ... ... ... ... dm1 dm2 ... dmn
  • 30.  Một số chú ý : - Các tập D1= Dom ( A1),.., Dn=Dom ( An) là tập các miền trị của R - n được gọi là bậc của quan hệ r - M được gọi là lực lượng của r - Quan hệ bậc 1 là quan hệ nhất nguyên, quan hệ bậc hai là quan hệ nhị nguyên, quan hệ bậc n là qua hệ n nguyên.
  • 31.  Các tính chất dặc trưng của một quan hệ. • Một quan hệ có một tên phân biệt với các quan hệ khác • Mỗi ô trong bảng quan hệ chứa một giá trị nguyên tố • Mỗi thuộc tính trong một quan hệ có một tên phân biệt • Các giá trị của một thuộc tính thuộc cùng một miền • Thứ tự của các thuộc tính, các bộ là không quan trọng
  • 32. VD: Quan hệ TKB( Ngày, tiết thứ, môn, phòng, GV} là một quan hệ 5 ngôi. Ngà Tiết Môn Phòng GV y thứ 24/3 1 CSB2 202 Ngọc Anh t1 25/3 2 NN 102 Minh t2 Tuấn t1 (24/3, 1, CSB2,CSDL 26/3 3 202, Ngoc Anh)= t1(R) Hoàng 200 t3  Chú ý : Các khái niệm tương đương Hà Quan hệ Bảng Tệp Thuộc tính Cột Trường Bộ Dòng Bản ghi (NN ĐSQH) (SQL-Access) (Fox)
  • 33. 4. Khoá và siêu khoá a. Siêu khoá • Siêu khoá của một quan hệ R là một tập hợp gồm một hay nhiều thuộc tính của lược đồ R có tính chất xác định duy nhất một bộ trong mỗi thể hiện của R. • Nếu SK là siêu khoá của R=<Ω ,F> thì SK ⊆ Ω và trong một quan hệ bất kỳ của lược đồ R không thể có hai bộ khác nhau nhưng có cùng một giá trị trên SK. • Mỗi quan hệ có ít nhất một siêu khoá, đó là Ω- tập tất cả các thuộc tính của quan hệ. • Mọi tập con của Ω chứa một siêu khoá cũng là siêu khoá.
  • 34. b.Khoá Khoá của một lược đồ quan hệ R là một siêu khoá của lược đồ này sao cho mọi tập con thực sự của nó không là siêu khoá. Như vậy, một khoá là một siêu khoá tối thiểu hiểu theo nghĩa, đó là một siêu khoá mà chúng ta không thể bỏ bớt thuộc tính nào ra khỏi nó mà vẫn giữ được tính chất xác định duy nhất cho mỗi bộ. VD: Xét quan hệ SINH_VIEN - Các siêu khoá : {Mã SV, Họ tên} hay {Mã SV, ngày sinh, điểm,},... - Khoá : {Mã SV}
  • 35. •- Một lược đồ quan hệ có nhiều hơn một khoá, khi đó mỗi khoá được gọi là một khoá dự tuyển. • Thông thường có một khoá dự tuyển được chọn làm khoá chính. Ta nên chọn khoá dự tuyển có một thuộc tính hoặc có ít thuộc tính nhất làm khoá chính. • Khoá chính là khóa được dùng để nhận diện một bộ trong quan hệ do đó các giá trị của các bộ ở các thuộc tính trong khoá chính không được null. • Thuộc tính khoá : là các thuộc tính có tham gia vào một khoá ( khoá dự tuyển hay khoá chính). • Ngược lại, thuộc tính không tham gia vào một khoá nào gọi là thuộc tính không khoá.
  • 36. VD: Quan hệ KHOA Mã Tên Điện Địa chỉ Chủ nhiệm khoa khoa thoại khoa SPT Toán 04.7684 A3 Nguyễn Anh 59 SPV Văn 04.7689 A4 Hoài Nam 45 SPCN hệ trên có 04.7683 tuyển là { Mã khoa}, Anh - Quan CNTT 3 khoá dự A3 Nguyễn { Tên khoa}, {Điện thoại }. Người ta thường chọn Mã 43 khoa làm khoá chính. Như vậy, thuộc tính không khoá chỉ còn là : Địa chỉ và Chủ nhiệm khoa
  • 37. c. Khoá ngoài : Một tập thuộc tính K là khoá ngoài của một quan hệ r nếu K không là khoá chính của quan hệ r nhưng lại là khoá chính của một quan hệ khác . VD: Có hai quan hệ: SINHVIEN (Mã SV, Tên SV,..., Mã lớp) LOP( Mã lớp, Tên lớp,...) Mã lớp là khoá ngoài của quan hệ SINHVIEN.
  • 38. Bài 4. Đại số quan hệ I. Đại số quan hệ Đại số quan hệ là cơ sở của một ngôn ngữ bậc cao để thao tác trên các quan hệ. Đại số quan hệ gồm 8 phép toán cơ bản. Bằng các phép toán này, ta có thể trích dữ liệu từ một hay nhiều quan hệ để tạo ra các quan hệ mới.
  • 39. II. Các phép toán lý thuyết tập hợp -Gọi r là quan hệ trên tập thuộc tính R={A1, ..,An}. Giả thiết rằng r là tập hữu hạn các bộ. - Khái niệm khả hợp : Hai lược đồ quan hệ R1 và R2 được goị là khả hợp nếu có cùng bậc n và DOM(Ai) = DOM(Bi) (1≤i≤n) - Cho hai quan hệ R1=(A1,A2,..An) và R2=(B1,B2,..,Bn) là hai quan hệ khả hợp, ta có định nghĩa:
  • 40. 1.Phép hợp Hợp của hai quan hệ r và s khả hợp, kí hiệu là r ∪ s là tập các bộ thuộc r hoặc s hoặc thuộc cả hai quan hệ. Biểu diễn hình thức: r ∪ s = { t/ t ∈ r hoặc t ∈ s hoặc t ∈ r và s } Ví dụ : r ( A B C) s ( A B C) r ∪ s = ( A B C) ___________ __________ _________________ a1 b1 c1 a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b1 c2 a2 b2 c1 a2 b2 c2 a2 b2 c1
  • 41. 2. Phép giao Giao của hai quan hệ r và s khả hợp, kí hiệu là r ∩ s là tập các bộ thuộc cả quan hệ r và s . Biểu diễn hình thức : r ∩ s = { t/ t ∈ r và t ∈ s } Ví dụ : Với hai quan hệ ở ví dụ trên, giao của chúng là: r∩s=( A B C) a1 b1 c1
  • 42. 3. Phép trừ Hiệu của hai quan hệ r và s khả hợp, kí hiệu là r - s là tập các bộ thuộc r nhưng không thuộc s . Biểu diễn hình thức : r - s = { t/ t ∈ r và t ∉ s } Ví dụ : Cũng với ví dụ trên, hiệu của chúng là: r-s= ( A B C) a2 b1 c2 a2 b2 c1 Chú ý : phép giao của hai quan hệ có thể biểu diễn qua phép trừ: r ∩ s = r- ( r - s )
  • 43. 4. Tích Đề -Các - Gọi r là quan hệ xác định trên tập thuộc tính { A1, A2,..,An} và s là quan hệ xác định trên tập thuộc tính { B1, B2,..,Bm} . Tích Đề - Các r x s của r và s là tập ( n + m ) - bộ với n thành phần đầu có dạng một bộ thuộc r và m thành phần sau có dạng của một bộ thuộc s. - Biểu diễn hình thức : r x s = { t/ t có dạng (a1, a2, .., an, b1, b2,..,bm) trong đó ( a1, ..,an )∈ r và (b1,.. ,bm) ∈ s } - Ví dụ : r (A B C) s ( D E F) rxs=(A B C D E F) a1 b1 c1 d e f a1 b1 c1 d e f a2 b2 c2 d1 e1 f 1 a1 b1 c1 d1 e1 f1 a2 b2 c2 d e f
  • 44. 5. Phép chiếu Phép chiếu trên một quan hệ thực chất là loại bỏ đi một số thuộc tính và giữ lại những thuộc tính còn lại của quan hệ đó. Dạng tổng quát : π < ds_thuộc tính> (< tên quan hệ >)  π là kí hiệu phép chiếu. < ds_thuộc tính> : danh sách các thuộc tính được lấy ra  Nếu < ds_thuộc tính > chỉ có những thuộc tính không khoá thì phép chiếu sẽ tự bỏ đi những bộ lặp. Phép chiếu không có tính giao hoán. Nếu <ds1 > ⊆< ds2> thì
  • 45. Ví dụ : Cho quan hệ SV ( Mã SV, Họ tên, Ngày sinh, điểm) như sau : Mã Họ tên Ngày sinh Điểm SV 001 Trần Anh 23/4/86 8 002 Ngọc Bích 13/4/85 9 003 Xuân Mai 25/3/87 7 004 Hồng Vân 21/6/85 10 Thì phép chiếu πMã Sv, Điểm (SV) sẽ cho ta một quan hệ mới chỉ gồm hai thuộc tính là Mã SV và Điểm . Mã Điểm DIEM( Mã SV, Điểm ): SV 001 8 002 9 003 7 004 10
  • 46. 6. Phép chọn Phép chọn dùng để trích chọn một tập con trong một quan hệ, các bộ được trích chọn phải thoả mãn điều kiện chọn. ( Phép chọn trích ra các hàng trong quan hệ) Dạng tổng quát : σ < điều kiện > (< Tên quan hệ >)  σ là kí hiệu phép chọn. Kết quả thu được từ phép chọn là một quan hệ có danh sách thuộc tính được chỉ ra trong Tên quan hệ Điều kiện : là các biểu thức điều kiện cần thoả mãn.. Các biểu thức này được nối với nhau bằng các phép: ¬( phủ định ), ∧ (giao), ∨ (hợp)
  • 47. 7. Phép kết nối  Phép kết nối : Dùng để kết hợp hai bộ có liên quan từ hai quan hệ thành một bộ. Trước hết ta làm quen với khái niệm xếp cạnh nhau: Cho bộ d =( d1, d2,..,dm) và bộ e= (e1, e2,.., em). Phép xếp cạnh nhau được định nghĩa qua : d ∩ e = ( d1, d2,.., dm,e1, e2,..,em).
  • 48. Gọi θ là một trong các phép so sánh . Phép kết nội được định nghĩa: Phép kết nối của quan hệ r đối với thuộc tính A với quan hệ s đối với thuộc tính B được định nghĩa qua. r A θ B s = { (t ∩ u ) | t ∈ r và u ∈ s và t[A] θ  u[B] }
  • 49.  Kết quả của phép kết nối là một quan hệ Q có ( n+m) thuộc tính, mỗi bộ trong Q thoả mãn điều kiện kết nối.  Các bộ có giá trị rỗng tại thuộc tính kết nối thì không xuất hiện trong kết quả của phép kết.  Bản chất của phép kết nối là phép lấy tích Đề - Các của hai quan hệ và chọn ra các bộ thoả mãn điều kiện kết.
  • 50. Ví dụ : r(A B C ) s( C D E ) r  s = ( A B C C D E B≥ C a1 1 1 1 d1 e1 a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a1 2 2 3 d3 e3 a2 2 1 2 d2 e2 a1 2 2 1 d1 e1 a1 2 2 2 d2 e2
  • 51.  Nếu điều kiện kết nối chứa phép so sánh (=) bằng thì phép kết nối được gọi là phép kết nối bằng.  Trường hợp kết nối bằng tại thuộc tính cùng tên của hai quan hệ và một trong hai thuộc tính đó bị loại bỏ, thì phép kết nối được gọi là kết nối tự nhiên . Kí hiệu là " * ".  Biểu diễn của phép kết nối tự nhiên : r(ABC) * s(CDE) = { t[ABCDE]/ t[ABC] ∈ r và t[CDE ] ∈s} VD : với hai quan hệ r và s nêu trên thì : r(ABC) * s(CDE) = (A B C D E) a1 1 1 d1 e1 a2 2 1 d1 e1
  • 52. 8. Phép chia Gọi r là quan hệ n- ngôi và s là quan hệ m ngôi ( n > m, s ≠ ∅ ). Phép chia r ÷s là tập tất cả các ( n- m )- bộ t sao cho với mọi bộ u ∈s thì bộ t ∩ u ∈ r. Ví dụ : r(A B C D) s ( C D) r ÷s = ( A B) a b c d c d a b a b e f e f e d b c e f e d c d e d e f c a d e
  • 53. Cơ sở dữ liệu minh hoạ Cho một cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây: SV( SV#, HT, NS, QUE, HL) DT(DT#, TDT, CN, KP) SD(SV#, DT#, NTT, KM, KQ) -Quan hệ SV chứa thông tin về các sinh viên trong một lớp của một trường đại học. Trong đó: SV# : mã số sinh viên HT : Họ và tên sinh viên NS : Năm sinh của sinh viên QUE: quê quán HL : Học lực thể hiện qua điểm trung bình
  • 54. - Quan hệ DT chứa thông tin về đề tài nhà trường quản lý . Trong đó : DT# : mã số đề tài TDT : tên đề tài CN : họ và tên chủ nhiệm đề tài KP : Kinh phí cấp cho đề tài ( triệu đồng) - Quan hệ SD chứa thông tin về tình hình thực tập của các sinh viên theo các đề tài. Trong đó : NTT : nơi thực tập KM : khoảng cách từ nơi thực tập đến trường KQ : kết quả thực tập theo đề tài đã chọn . * Giả thiết là mỗi sinh viên có thể tham gia nhiều đề tài, mỗi đề tài sinh viên đó thực tập tại một địa điểm.
  • 55. SV SV# HT NS Que HL 1 Hồng Mai 22/4/1982 Hà Nội 6.8 2 Mạnh Khánh 27/6/1986 Nam Định 8.3 3 Xuân Quỳnh 17/5/1987 Hà Nội 9.5 4 Ngọc Bích 25/4/1979 Nam Định 8.6 5 Minh Tú 19/3/1986 Quảng Ninh 6.2 6 Hồng Vân 19/4/1980 Hải Phòng 9.8 7 Ngọc Anh 27/5/1982 Hà Nội 7.6 8 Mai Lan 16/8/1983 Hải Phòng 8.5 DT DT# TDT CN KP 1 Phân tích thiết kế CSDL Trần Hùng 1000000 2 Mạng máy tính Nguyễn Anh 500000 3 Kiến trúc máy tính Hồng Hạnh 1400000 4 Phần mềm A Mạnh Hùng 2300000 5 Giáo trình ABC Hoàng Hà 900000 6 Mạng Internet Ngọc Lan 1800000
  • 56. SD SV# DT# NTT KM KQ 1 4 Hà Tây 56 6.8 1 6 Hải Phòng 120 8.7 3 5 Quảng Ninh 300 9 3 4 Hà Đông 30 9.7 2 3 Hà Nội 40 9.8 1 5 Nam Định 80 9.4 7 3 Hà Nội 38 8.7 5 5 Hải Phòng 150 8.2 7 3 Thanh Hoá 240 7.9
  • 57. Yêu cầu : - Hãy viết các biểu thức đại số quan hệ biểu diễn các yêu cầu sau : 1. Cho thông tin về những sinh viên sinh trước năm 1985 có quê ở Hà Nội. 2. Cho biết các địa điểm thực tập xa trường (KM >100) của đề tài số 5. 3. Cho thông tin về các đề tài có sinh viên thực tập. 4. Cho biết mã của các đề tài không có sinh viên nào tham gia. 5. Cho danh sách các tỉnh có sinh viên đến thực tập. 6. Cho thông tin về việc thực tập tại Hải Phòng của sinh viên. 7. Cho biết mã của những đề tài có kinh phí lớn hơn 1 triệu và nhỏ hơn 2 triệu 8. Cho biết mã của sinh viên dưới 20 tuổi, thực tập khá ( có điểm kết quả thực tập >=6.5)
  • 58. III. Các phép toán quan hệ bổ sung  Các hàm kết tập: Có nhiều truy vấn mà đại số quan hệ không thể thực hiện được như: đưa ra tổng lương, tìm lương lớn nhất ,v.v..  Ta có các hàm sau:  Hàm tính trung bình cộng ( AVERAGE)  Hàm tính tổng ( SUM) Hàm tìm giá trị lớn nhất ( MAX), nhỏ nhất (MIN) Hàm đếm các bộ giá trị ( COUNT)
  • 59.  Các phép gộp nhóm: Nhóm các bộ trong một quan hệ theo một giá trị của một số các thuộc tính và sau đó áp dụng các hàm kết tập trên từng nhóm một cách độc lập.  Phép gộp nhóm được định nghĩa như sau: < các tt cơ sở để gộp nhóm>ℑ < ds các hàm kết tập > (r) Trong đó : - ℑ là kí hiệu của phép gộp nhóm - <các tt cơ sở để gộp nhóm>: là danh sách các thuộc tính của quan hệ. - < ds hàm kết tập >: là danh sách các cặp ( <hàm>< thuộc tính>.
  • 60. • Kết quả của phép gộp nhóm là một quan hệ. Ngoài các thuộc tính cơ sở để gộp nhóm, quan hệ kết quả còn có các thuộc tính tương ứng với các phần tử trong danh sách hàm kết tập. • Nếu ds các thuộc tính cơ sở để gộp nhóm là rỗng thì các hàm kết tập được áp dụng cho các giá trị thuộc tất cả các bộ trong quan hệ. Khi đó quan hệ kết quả chỉ có một bộ.
  • 61. Ví dụ : Giả sử có quan hệ NHAN_VIEN MA_NV HO_TEN NG_SINH MA_P LUONG 1 Hồng Mai 22/4/1982 P1 1000000 2 Mạnh Khánh 27/6/1978 P3 2500000 3 Xuân Quỳnh 17/5/1977 P2 1200000 4 Ngọc Bích 25/4/1979 P1 2000000 5 Minh Tú 19/3/1981 P3 1500000 6 Hồng Vân 19/4/1980 P1 1800000 7 Ngọc Anh 27/5/1982 P2 1800000 8 Mai Lan 16/8/1979 P1 1200000
  • 62. Nếu thực hiện phép gộp nhóm MA_PHONG ℑ COUNT MA_NV, AVERAGE LUONG (NHAN_VIEN) Thì quan hệ kết quả sẽ là : MA_P COUNT MA_NV AVERAGE LUONG P1 4 1500000 P2 2 2000000 P3 2 1500000 Nếu thực hiện phép gộp nhóm : ℑ COUNT MA_NV, AVERAGE LUONG (NHAN_VIEN) Thì quan hệ kết quả sẽ là : COUNT MA_NV AVERAGE LUONG 8 1666666.7
  • 63. Bài tập: Xét các CSDL gồm các lược đồ quan hệ được cho bởi các thể hiện của chúng như sau: NHAN_VIEN MA_NV HO_TEN NG_SINH GIOI_TINH MA_P LUONG 1 Trần Anh 28/3/1978 Nam P2 2000000 2 Ngọc Hà 17/4/1979 Nữ P1 1700000 3 Hồng Mai 29/6/1980 Nữ P4 2300000 4 Hoàng Hà 24/5/1980 Nam P2 1800000 5 Ngọc Lan 7/11/1979 Nữ P1 2500000 PHONG MA_P TEN_P ĐIA_CHI P1 Hành chính quản trị P302 - Nhà A P2 Nghiên cứu và PT Tầng 3 - Nhà B P3 Giám đốc Tầng 2- Nhà A P4 Kỹ thuật P205 - Nhà C
  • 64. DU_AN MA_DA TEN_DA ĐIA_ĐIEM_DA MA_P D1 Phần mềm A HÀ NỘI P4 D5 Mạng B NAM ĐỊNH P2 D20 Giáo trình điện tử HẢI PHÒNG P1 CHAM_CONG MA_NV MA_DA SO_GIO 1 D8 20 2 D4 15 3 D1 17 4 D8 24 5 D20 30 6 D1 27
  • 65. Yêu cầu : 1. Tìm tên dự án có mã là D20 2.Cho biết tên các thành phố có dự án thực hiện. 3. Cho biết tên phòng thực hiện dự án có mã là D20 4. Cho biết tên và lương của những nhân viên thực hiện dự án D8 và làm việc trên 20 giờ 5. Cho biết họ tên và lương của những nhân viên thuộc phòng " Nghiên cứu & PT" 6. Đếm số nhân viên trong công ty và tính mức lương trung bình của các nhân viên. 7. Đếm số dự án mà công ty đã thực hiện
  • 66. Bài 5. Ngôn ngữ CSDL – SQL  Để người sử dụng có thể giao tiếp được với CSDL phải có một hệ thống ngôn ngữ giao tiếp bao gồm: • Ngôn ngữ định nghĩa dữ liệu . • Ngôn ngữ thao tác dữ liệu • Ngôn ngữ truy vấn dữ liệu • Ngôn ngữ quản lý dữ liệu Mỗi hệ quản trị CSDL đều có cách cài đặt các ngôn ngữ khác nhau nhưng đều dựa trên chuẩn của ngôn ngữ truy vấn có cấu trúc SQL ( Structured- Query Language)
  • 67. I. Ngôn ngữ định nghĩa dữ liệu SQL  Là ngôn ngữ mô tả dữ liệu, cho phép người dùng định nghĩa cấu trúc CSDL, sửa đổi cấu trúc, liên kết các thành phần trong CSDL  Ngoài ra , nó còn cung cấp các khả năng khác như : định nghĩa khung nhìn, kiểm soát tính toàn vẹn dữ liệu, cấp phát quyền truy cập, …
  • 68. Quy ước : – Tên tên bảng, thuộc tính đối tượng không chứa dấu cách, không trùng tên với nhau. – Các phạm trù cú pháp bắt buộc phải điền được đặt trong cặp dấu < > – Các thành phần tuỳ chọn được viết trong cặp dấu [ ] – Mỗi câu lệnh SQL có thể được viết trên nhiều dòng và được kết thúc bằng dấu ;
  • 69. Các kiểu dữ liệu đơn giản trong SQL  Kiểu dữ liệu số: integer , float, decimal(n,p)- số thực với độ dài tối đa là n chữ số với p chữ số thập phân , number(n)- kiểu số có độ dài tối đa là n  Kiểu dữ liệu chuỗi : -varchar (n) - chuỗi có độ dài biến đổi từ 0 đến n - Char (n): xâu kí tự có độ dài cố định n ( n<=255)  Kiểu dữ liệu ngày tháng: date, time  Kiểu luận lí : boolean
  • 70. II. Các câu lệnh tạo cấu trúc bảng 1. Lệnh tạo bảng tổng quát CREATE TABLE <Tên_bảng> ( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>, …………………. <tên_ cột_n> <loại dữ_liệu_n> < kích thước n>, );
  • 71. Ví dụ : Tạo bảng SINH_VIEN có các thuộc tính: - mã sinh viên ( kiểu số có độ dài <5) - họ tên ( kiểu xâu kí tự có độ dài <25) - ngày sinh (kiểu date) - giới tính ( kiểu xâu có độ dài <3) - địa chỉ ( kiểu xâu có độ dài < 30 ) - điểm TB ( kiểu số thực có độ dài <4, trong đó có 2 chữ số sau phần thập phân)
  • 72. CREATE TABLE SINH_VIEN ( ma_sv NUMBER(5) , ho_ten VARCHAR(25), ng_sinh DATE, gioi_tinh VARCHAR (3), đia_chi VARCHAR (30), diem_tb DECIMAL (4,2), );
  • 73. 2. Lệnh tạo bảng với một số điều kiện ràng buộc CREATE TABLE <Tên_bảng> ( <tên_ cột_1> <loại dữ_liệu_1> < kích thước 1>, …………………. <tên_ cột_n> <loại dữ_liệu_n> < kích thước n>, [ CONSTRAINT < tên ràng buộc toàn vẹn>]| NULL| 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>] );
  • 74. Trong đó :  NOT NULL : chỉ rằng cột không nhận giá trị rỗng. Ngầm định là Null. Thuộc tính khoá ngầm định là Not Null.  COSNTRAINT< tên các ràng buộc toàn vẹn> : khai báo các ràng buộc toàn vẹn của CSDL.  Primary Key ( Khoá chính): Khai báo khoá chính của mảng  Unique ( Khoá ) : Khai báo các khoá khác nếu có  Foreign Key Khoá_ ngoài References Tên_ bảng : Khai báo các khoá ngoài của bảng  Check Điều_kiện_ràng_buộc : Khai báo các ràng buộc dữ liệu .
  • 75. Ví dụ : Tạo bảng SINH_VIEN có: - khoá chính là thuộc tính mã sinh viên ( kiểu số) - họ tên ( kiểu xâu kí tự có độ dài <=25) không được để trống, - ngày sinh (kiểu date) - giới tính ( kiểu xâu có độ dài <=3, mặc định là 'Nam') - mã lớp là một khoá ngoài, mã lớp thuộc bảng LOP. - điểm TB ( kiểu số thực có độ dài <=4)
  • 76. Câu lệnh : CREATE TABLE SINH_VIEN ( ma_sv NUMBER(5) PRIMARY KEY, ho_ten VARCHAR(25) NOT NULL, ng_sinh DATE, gioi_tinh VARCHAR (3) DEFAULT ' Nam', ma_lop CHAR (3) , diem_tb DECIMAL (4,2), FOREIGN KEY ma_lop REFERENCES LOP );
  • 77. Hoặc : CREATE TABLE SINH_VIEN ( ma_sv NUMBER(5) , ho_ten VARCHAR(25) NOT NULL, ng_sinh DATE, gioi_tinh VARCHAR (3) DEFAULT ' Nam', ma_lop CHAR (3) , diem_tb DECIMAL (4,2), PRIMARY KEY ( ma_sv), FOREIGN KEY ma_lop REFERENCES LOP );
  • 78. 3. Bổ sung -xoá một cột trong bảng a. Bổ sung một cột : ALTER TABLE < tên bảng> ADD <tên cột> < kiểu dữ liệu > < kích thước>; VD : Thêm cột số điện thoại vào bảng SINH_VIEN ở trên. ALTER TABLE SINH_VIEN ADD dien_thoai NUMBER(10);
  • 79. a.Xoá một cột : ALTER TABLE < tên bảng> DROP <tên cột> ; VD : Xoá cột điểm TB trong bảng SINH_VIEN ở trên. ALTER TABLE SINH_VIEN DROP diem_tb;
  • 80. 4. Xoá một bảng khỏi CSDL DROP TABLE < tên bảng>; VD : Xoá bảng SINH_VIEN trong CSDL DROP TABLE SINH_VIEN; Khi đó toàn bộ thông tin về bảng SINH_VIEN( gồm cả lược đồ và các bản ghi ) đều bị xoá, khác với lệnh DELETE FROM SINH_VIEN ; chỉ xoá các bản ghi trong bảng, vẫn giữ lại cấu trúc (lược đồ ) của bảng
  • 81. III. Các câu lệnh truy vấn 1. Truy vấn theo câu hỏi đơn giản Cấu trúc cơ sở của một biểu thức hỏi ( còn gọi là biểu thức truy vấn) SQL gồm : SELECT [ DISTINCT | ALL] {* | <cột> AS [<tên mới>],..} FROM < tên bảng> [ < bí danh >],... [WHERE < điều kiện chọn>] [GROUP BY < ds tên cột>] [HAVING <điều kiện>] [ORDER BY < ds cột> ];
  • 82. Trong đó : - Từ khoá DISTINCT : để loại bỏ sự trùng lặp ( các bộ trùng lặp chỉ giữ lại một bộ) - < biểu thức cột>: là tên của một cột hoặc của biểu thức - < tên bảng >: là tên của một bảng trong CSDL hay một khung nhìn mà ta có thể truy cập vào - GROUP BY : dùng để gộp nhóm các bộ cùng giá trị tương ứng ở các cột xuất hiện trong ds tên cột. - HAVING: dùng để lọc các nhóm thoả điều kiện - ORDER BY : quy định thứ tự trong các cột trả ra gồm : ASC ( tăng dần) và DESC ( giảm dần). Mặc định là ASC
  • 83. Ví dụ 1: Tìm tên các dự án và mã các phòng quản lý dự án tương ứng SELECT ten_da, ma_p FROM DU_AN; Kết quả tra ra : Ten_da Ma_p Phần mềm A P2 Mạng B P3 Giáo trình điện P1 tử
  • 84. Chú ý : a . Muốn hiển thị tất cả các cột trong bảng, ta có thể dùng dấu * để thay thế Ví dụ 2. Cho biết thông tin về nhân viên trong công ty . C1 : SELECT ma_nv, ho_ten, ng_sinh, gioi_tinh, ma_p, luong FROM NHAN_VIEN; C2: SELECT * FROM NHAN_VIEN ;
  • 85. b. Trong bảng kết quả, nếu muốn ta có thể đặt tên mới cho cột sau từ khoá As Ví dụ3 : Cho biết tên và lương mới của mỗi nhân viên biết họ được tăng 10% . Câu lệnh : C1: SELECT ho_ten, luong + luong*0.1 FROM NHAN_VIEN; C2: SELECT ho_ten, luong+luong*0.1 AS luong_moi FROM NHAN_VIEN;
  • 86. c. SQL dùng các phép so sánh : <= ( nhỏ hơn hoặc bằng) , >=( lớn hơn hoặc bằng) , < > ( khác) - Có thể kết hợp nhiều biểu thức logic bằng các phép AND, OR, NOT.
  • 87. Ví dụ 4:Tìm các nhân viên thuộc phòng có mã phòng là P2 và có lương >=2tr. SELECT ma_nv, ho_ten, ma_p, luong FROM NHAN_VIEN WHERE ma_p= 'P2' AND luong>=2000000;
  • 88. Ví dụ 5: Lập danh sách ( gồm mã sinh viên,họ tên, ngày sinh, giới tính) của các sinh viên nữ có học lực từ khá trở lên và các sinh viên nam học lực giỏi. SELECT SV#, HT, NS, GT FROM SV WHERE (GT= 'Nữ' AND HL>=6.5) OR ( GT= 'Nam' AND HL >=8.0 );
  • 89. d. Tìm kiếm có xử lý xâu kí tự  SQL dùng toán tử LIKE để so sánh xâu.  SQL sử dụng kí tự ' %' để thay thế cho một xâu con, dấu phân cách '_' để thay thế cho một kí tự.  VD: - A%B : xâu kí tự bất kì bắt dầu bằng chữ A và kết thúc bằng chữ B - A_B : xâu gồm 3 kí tự, có kí tự thứ hai bất kì
  • 90. Ví dụ 6: Cho biết mã và tên các dự án mà địa điểm có chứa từ UBND: SELECT ma_da, ten_da FROM DU_AN WHERE dia_diem_da LIKE '%UBND %';
  • 91. e. SQL cho phép sử dụng các giá trị NULL để chỉ sự thiếu vắng thông tin về giá trị của một bộ tại một thuộc tính. Với từ khoá IS NULL, SQL cho phép kiểm tra xem một giá trị có là NULL hay không ? Ví dụ 7: Cho biết tên và mã số dự án mà cột địa điểm có giá trị là NULL. SELECT ma_da, ten_da FROM DU_AN WHERE dia_diem_da IS NULL;
  • 92. f. Truy vấn có sắp xếp thứ tự Kết quả của câu truy vấn SQL có thể được sắp theo thứ tự tăng dần (ASC ) hoặc giảm dần (DESC) bởi khoá ORDER BY. Mặc định là tăng dần. Ví dụ 8 : Liệt kê các nhân viên nữ theo thứ tự tăng dần của lương: SELECT * FROM NHAN_VIEN WHERE GT = ' Nữ' ORDER BY luong;
  • 93.  Việc sắp thứ tự có thể được thực hiện trên nhiều thuộc tính Ví dụ 9: Hiển thị các thông tin chấm công của các dự án có mã thuộc tập D1, D2, D8 theo thứ tự tăng dần của số giờ và giảm dần của mã dự án: SELECT * FROM CHAM_CONG WHERE ma_da IN ('D1', 'D2', 'D8') ORDER BY so_gio ASC, ma_da DESC;
  • 94. g. Tìm kiếm nhờ sử dụng IN và BETWEEN Ví dụ 10: Tìm những nhân viên có lương từ 2000000 đến 3000000 , sắp xếp tên theo thứ tự tăng dần. SELECT * FROM NHAN_VIEN WHERE luong BETWEEN 2000000 AND 3000000 ORDER BY ho_ten ASC;
  • 95. 2. Các hàm thư viện SQL có 5 hàm kết tập được cài sẵn : - COUNT :đếm số giá trị - SUM : tính tổng các giá trị trong một cột - MAX : tính giá trị lớn nhất trong một cột - MIN : tính giá trị nhỏ nhất trong một cột - AVG : tính giá trị trung bình của một cột Chú ý : Các hàm sum và avg chỉ áp
  • 96. Ví dụ 1: Tìm lương cao nhất, lương thấp nhất, và trung bình cộng lương toàn cơ quan SELECT MAX (luong) AS max, MIN (luong) AS min, AVG (luong) AS tb FROM NHAN_VIEN; Kết quả câu truy vấn này trả ra như sau : max min tb 3000000 1200000 2350000
  • 97. Ví dụ 2: Cho biết số nhân viên thực hiện dự án có mã là D8 SELECT COUNT (*) FROM CHAM_CONG WHERE ma_da = 'D8'; Chú ý : - Hàm Count khi có đối số (*) có nghĩa là đếm số bản ghi thoả mãn yêu cầu mà không cần quan tâm đến bất kì cột nào .
  • 98. - Dùng từ khoá DISTINCT ngay trước tên cột được áp dụng hàm, khi cần loại bỏ các bộ trùng nhau. Ví dụ 3: Đếm số tỉnh có sinh viên theo học SELECT COUNT (DISTINCT Que) FROM SINHVIEN;
  • 99. 3.Tìm kiếm nhờ mệnh đề GROUP BY Ví dụ 1: In ra danh sách sinh viên theo từng quê của sinh viên? SELECT SV#, HT, NS FROM SV GROUP BY Que;
  • 100. 4. Tìm kiếm có sử dụng mệnh đề HAVING Mệnh đề HAVING thường sử dụng cùng mệnh đề GROUP BY. Sau HAVING là biểu thức điều kiện. Biểu thức này không tác động vào toàn bảng mà chỉ tác động vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề GROUP BY VÍ DỤ : Tìm mã số những sinh viên thực hiện ít nhất 2 đề tài: SELECT SV# FROM SD GROUP BY SV# HAVING COUNT (DT# ) >=2;
  • 101. 5. Tìm kiếm với câu hỏi phức tạp Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phép kết nối.  Phép kết nối : ĐK: Các miền tham gia kết nối phải có miền trị là sánh được với nhau. Tên của các cột khác nhau có thể được viết tường minh qua tên bảng theo cú pháp : Tên_ bảng. Tên_ cột Ví dụ : Với mỗi đề tài có sinh viên tham gia thực tập. Hãy cho biết tên đề tài, tên chủ nhiệm đề tài và kinh phí thực hiện đề tài đó.
  • 102. Câu lệnh : SELECT TDT, CN, KP FROM DT, SD WHERE SD.DT# = DT.DT#; Chú ý : Trong câu truy vấn có hơn một bảng, nếu tên cột là không duy nhất thì bắt buộc phải viết tên cột dạng tường minh.
  • 103.  Ánh xạ lồng Ví dụ 1: Tìm tên những sinh viên thực tập tại Hà Nội . SELECT HT FROM SV WHERE SV# IN (SELECT SV# FROM SD WHERE NTT= ‘Hà Nội ‘);
  • 104. SQL còn có thể tìm kiếm trên nhiều bảng nhờ mênh đề EXISTS ( tồn tại ) Ví dụ 2: Tìm những sinh viên thực hiện ít nhất một đề tài nào đó: SELECT * FROM SV WHERE EXISTS ( SELECT * FROM SD WHERE SV.SV# = SD.SV#);
  • 105.  Tìm kiếm có sử dụng lường từ ANY và ALL Ví dụ 3 : Tìm tên những đề tài mà sinh viên có mã số 5 đã thực hiện: SELECT TDT FROM DT WHERE DT# = ANY ( SELECT DT# FROM SD WHERE SV# = 5);
  • 106. Ví dụ 4 : Tìm tên sinh viên có điểm học lực cao hơn tất cả các sinh viên SELECT HT FROM SV WHERE HL >= ALL ( SELECT HL FROM SV ); Mệnh đề trên tương đương với : SELECT HT FROM SV WHERE HL = ( SELECT MAX (HL) FROM SV );
  • 107. IV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆU 1. Thêm một bộ : Dạng tổng quát : INSERT INTO Tên _ bảng ( ds_tên _cột) VALUES (các_ giá_trị ) [ câu hỏi con] Có thể bổ sung vào một tập các bản ghi là kết quả xử lý của một câu hỏi nào đó. VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng SV. INSERT INTO SVG SELECT * FROM SV
  • 108. 2. Xoá bản ghi Có thể xoá một hay nhiều bản ghi thoả mãn một điều kiện nào đó. Dạng tổng quát: DELETE [tên_bảng] [FROM { Tên_bảng / Tên_ view}] [WHERE Biểu_ thức _điều _kiện] Ví dụ : Xoá những sinh viên có điểm HL kém (HL<=3.5): DELETE FROM SV
  • 109. 3. Sửa đổi dữ liệu Sửa đổi các giá trị của các bản ghi theo một điều kiện nào đó: Dạng tổng quát : UPDATE [ tên_bảng] SET [ tên_cột = biểu_thức,...] FROM tên _ bảng WHERE Biểu _ thức _điều _kiện Ví dụ : Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5 UPDATE SV SET HL = 8.5 WHERE HT=‘ Phan Ngọc Hà’;
  • 110. 4. Tạo chỉ mục. Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các bản ghi dựa trên giá trị tăng dần của một ( hay một số) cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm kiếm thông tin trong CSDL. Dạng tổng quát : CREATE INDEX tên_bảng_chỉ_mục ON Tên_bảng ( tên _cột [ASC | DESC]); Bỏ chỉ mục thì sử dụng mệnh đề : DROP INDEX tên_chỉ_mục;
  • 111. Ví dụ : Tạo chỉ mục CMHT trên cột Ho_ten của bảng sinh viên: CREATE INDEX CMHT ON SV ( HT ASC); Ví dụ: Xoá chỉ mục CMHT ra khỏi bảng SV DROP INDEX CMHT;
  • 112. 5. Tạo View của người sử dụng Tạo ra một khung nhìn của người sử dụng : Dạng tổng quát : CREATE VIEW Tên_View (Danh_ sách_ tên _cột) AS mệnh_đề_Select ; Ví dụ : Tạo View DSSVG gồm những sinh viên giỏi bao gồm thông tin về họ tên, ngày sinh, giới tính của các sinh viên từ bảng SV. CREATE VIEW DSSVG ( Hoten, NS, GT) AS SELECT HT , NS, GT FROM SV WHERE HL >= 8.0;
  • 113. 6. SQL nhúng Có thể truy cập vào CSDL từ một ngôn ngữ lập trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ này. Một ngôn ngữ trong đó các câu hỏi được SQL được nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc của SQL được phép trong ngôn ngữ này làm thành SQL nhúng - Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:
  • 114. Ngôn ngữ chủ + SQL nhúng Tiền xử lý Ngôn ngữ chủ + Các lời gọi hàm Biên dịch Thư viện SQL ngôn ngữ chủ Chương trình ngôn ngữ chủ
  • 115. Bài 6. RÀNG BUỘC TOÀN VẸN 1. Tổng quan • Ràng buộc toàn vẹn sử dụng các luật để định nghĩa các điều kiện đảm bảo cho CSDL ở trạng thái an toàn. • Ràng buộc toàn vẹn được dùng để ngăn ngừa việc đưa dữ liệu không hợp lệ vào CSDL. Định nghĩa : Ràng buộc toàn vẹn là các điều kiện bất biến không được vi phạm trong một CSDL.
  • 116. RBTV còn được gọi là các quy tắc quản lý được áp đặt lên các đối tượng của thế giới thực .  VD : - Mỗi sinh viên có một mã sinh viên duy nhất để phân biệt với các sinh viên khác - Điểm HL của mỗi sv không được nhỏ hơn0 và lớn hơn 10. - Mỗi SV phải thuộc một lớp nào đó.
  • 117. Các hệ quản trị CSDL thường có các cơ chế tự động kiểm tra RBTV này.  Việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau : - Kiểm tra ngay khi thực hiện một thao tác cập nhật ( thêm, sửa , xoá ,…) - Kiểm tra định kỳ hay đột xuất
  • 118. 2. Các yếu tố của RBTV Khi xác định một RBTV cần chỉ rõ:  Điều kiện ( tức là nội dung) của RBTV, từ đó, xác định cách biểu diễn.  Bối cảnh xảy ra RBTV: trên một hay nhiều quan hệ và cụ thể là trên những quan hệ nào.  Mức độ ảnh hưởng của RBTV.  Hành động cần phải có khi phát hiện ra có RBTV bị vi phạm.
  • 119. 3. Điều kiện của RBTV  Điều kiện của RBTV là sự mô tả và biểu diễn hình thức và nội dung của nó.  Được biểu diễn bằng ngôn ngữ tự nhiên, thuật giải, ngôn ngữ quan hệ hoặc bằng các phụ thuộc hàm ,v.v..  VD:
  • 120. R1: Mỗi sinh viên có một mã sinh viên duy nhất không trùng với các sinh viên khác: ∀ sv1, sv2 ∈ SV, sv1 ≠ sv2 ⇒ sv1. SV# ≠ sv2. SV#  R2: Mọi sv được làm đề tài đều phải đạt loại giỏi: ∀ sd ∈ SD, ∃ sv ∈ SV : ( sv. HL >=8.0) ∧ (sd. SV# = sv. SV# )
  • 121. 4. Bối cảnh của RBTV Bối cảnh của một RBTV là tập các quan hệ mà khi thao tác trên các quan hệ đó có khả năng làm cho ràng buộc toàn vẹn bị vi phạm.  Có thể chia RBTV thành hai loại chính theo bối cảnh RBTV :
  • 122. RBTV có bối cảnh trên 1 quan hệ  RBTV có bối cảnh trên nhiều quan hệ
  • 123. 4.1. RBTV có bối cảnh 1 quan hệ  RBTV miền giá trị.  RBTV liên bộ  RBTV liên thuộc tính
  • 124. a. RBTV miền giá trị  RBTV miền giá trị qui định tập giá trị mà một thuộc tính có thể nhận.  VD:  DOM(PHAI) = {‘Nam’, ‘Nữ’}
  • 125. Ví dụ 3: Xét lược đồ quan hệ • NHANVIEN (MANV, HT, NS, GT, DC, LUONG)  Xét RBTV R2: • Nội dung: • GT của nhân viên chỉ có thể là ‘Nam’ hoặc ‘Nữ’ ∀ ∀n ∈ NHANVIEN: n.GT IN {‘Nam’,’Nữ’} • Bối cảnh: quan hệ NHANVIEN
  • 126. Bảng tầm ảnh hưởng (TAH) gồm 4 cột:  Cột 1 chứa tên các quan hệ liên quan tới RBTV.  3 cột tiếp theo là tên các thao tác : Thêm / Sửa / Xoá  Nếu RBTV cần được kiểm tra nguy cơ dẫn tới vi phạm dấu gạch chéo (x) hoặc dấu cộng (+) ;  Có thể chỉ rõ các thuộc tính nào nếu được cập nhật mới dẫn đến vi phạm bằng cách liệt kê chúng dưới dấu (x) hoặc dấu (+)  Nếu không có nguy cơ bị vi phạm thì đánh dấu trừ (-)
  • 127. • Bảng TAH của R2: R2 Thêm Xóa Sửa NHANVIE + - +(GT) N
  • 128. b. RBTV liên bộ  RBTV liên bộ là điều kiện ràng buộc giữa các bộ trên cùng một quan hệ  Ví dụ 5: Xét lược đồ quan hệ: • PHONGBAN(MAP, TENP, TP,NGNC)  Xét RBTV R4: • Nội dung: • Hai phòng khác nhau sẽ có mã phòng khác nhau ∀ ∀ p1, p2 ∈ PHONGBAN: p1 ≠ p2 ⇒ p1.MAP ≠ p2.MAP • Bối cảnh: quan hệ PHONGBAN
  • 129. • Bảng tầm ảnh hưởng: R4 Thê Xóa Sửa m PHONGBAN + - -(*)
  • 130. c. RBTV liên thuộc tính  RBTV liên thuộc tính là ràng buộc giữa các thuộc tính trong cùng một quan hệ  Ví dụ 7: Xét lược đồ quan hệ DEAN (MADA, TDA, DD, PHONG, NGBD_DK, NGKT_DK) • Xét RBTV R6: • Nội dung: • Với mọi đề án, ngày bắt đầu dự kiến (NGBD_DK) phải trước ngày kết thúc dự kiến (NGKT_DK)
  • 131. • Bối cảnh: quan hệ DEAN • Bảng tầm ảnh hưởng: R6 Thêm Xóa Sửa DEAN + - + (NGBD_D K, NGKT_DK )
  • 132. 4.2. RBTV có bối cảnh trên nhiều quan hệ  RBTV tham chiếu  RBTV liên bộ, liên quan hệ  RBTV liên thuộc tính, liên quan hệ  RBTV do thuộc tính tổng hợp  RBTV do chu trình trong lược đồ biểu diễn quan hệ
  • 133. a. RBTV tham chiếu  RBTV tham chiếu là ràng buộc quy định giá trị của thuộc tính trong một bộ của quan hệ R phải thuộc tập giá trị của thuộc tính khóa trong quan hệ S khác.  RBTV tham chiếu còn gọi là ràng buộc phụ thuộc tồn tại hay ràng buộc khóa ngoại
  • 134. Ví dụ 10 : Xét các lược đồ quan hệ  PHONGBAN (MAP, TENP, TRP, NGNC)  NHANVIEN (MANV, HT, NS, GT, LUONG) • Xét RBTV R9: • Nội dung: Mỗi trưởng phòng phải là một nhân viên trong công ty. ∀p ∈ PHONGBAN, ∃n ∈ NHANVIEN: n[MANV] = p[TRP] Hay: PHONGBAN[TRP] ⊆ NHANVIEN[MANV])
  • 135. • Bối cảnh: NHANVIEN, PHONGBAN • Bảng tầm ảnh hưởng: R9 Thêm Xóa Sửa PHONGBA + - +(TRP) N NHANVIEN - + - (*)
  • 136. b. RBTV liên bộ, liên quan hệ  RBTV liên bộ, liên quan hệ là điều kiện giữa các bộ trên nhiều quan hệ khác nhau.  Ví dụ 11 : Xét các lược đồ quan hệ PHONGBAN (MAP, TENP, TRP, NGNC) DIADIEMPHG (MAP, DIADIEM)  Xét RBTV R10:  Nội dung: • Mỗi phòng ban phải có ít nhất một địa điểm phòng ∀p ∈ PHONGBAN, ∃d ∈ DIADIEMPHG: p.MAP = d.MAP
  • 137. • Bối cảnh: PHONGBAN, DIADIEM_PHG • Bảng tầm ảnh hưởng: R10 Thêm Xóa Sửa PHONGBAN - - - DIADIEM_PH - + + (MAP) G
  • 138. c. RBTV liên thuộc tính, liên quan hệ  RBTV liên thuộc tính, liên quan hệ là điều kiện giữa các thuộc tính trên nhiều quan hệ khác nhau. Ví dụ 12 :Xét các lược đồ quan hệ DATHANG(MADH, MAKH, NGAYDH) GIAOHANG(MAGH, MADH, NGAYGH) - Xét RBTV R11: • Nội dung:Ngày giao hàng không được trước ngày đặt hàng ∀g∈GIAO_HANG, ∃!d∈DAT_HANG:d[MADH]=g[MADH] ∧
  • 139. • Bối cảnh: DATHANG, GIAOHANG • Bảng tầm ảnh hưởng: R11 Thêm Xóa Sửa DATHANG - - + (MGAYDH) GIAOHAN + - + (NGAYGH) G
  • 140. d. RBTV do thuộc tính tổng hợp  Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị của các thuộc tính khác hoặc trạng thái của CSDL.  Khi có thuộc tính tổng hợp, cần phải có RBTV để đảm bảo mối quan hệ giữa nó và nguồn mà nó được tính toán từ đó.  Ví dụ 13 :Xét các lược đồ quan hệ • PXUAT(SOPHIEU, NGAY, TT) • CTIET_PX(SOPHIEU, MAHANG, SL, DG)
  • 141. • Xét RBTV R12: • Nội dung: • Tổng trị giá của 1 phiếu xuất phải bằng tổng trị giá các chi tiết xuất. ∀px∈PXUAT, px.TT = Σ(ct ∈ CTIET_PX ∧ ct.SOPHIEU = px.SOPHIEU) ct.SL * ct.DG • Bối cảnh: PXUAT,CTIET_PX
  • 142. • Bảng tầm ảnh hưởng: R12 Thê Xóa Sửa m PXUAT -(*) + + (TT) CTIET_P + + + (SL,DG) X • (*): Ở thời điểm thêm một bộ vào PXUAT, giá trị bộ đó tại TT là trống.
  • 143. e. RBTV do có chu trình  Ví dụ 15 :Xét các lược đồ quan hệ • NHANVIEN (MANV, HT,NS ,GT, PHONG, LUONG) • DEAN (MADA, TENDA, DD, PHONG) • PHANCONG (NV#, SODA, THOIGIAN) • Xét RBTV R14: • Nội dung: Nhân viên chỉ được phân công vào các đề án do phòng mình phụ trách.
  • 144. ∀ pc ∈ PHANCONG, ∃ nvda ∈ (NHANVIEN ⋈ PHG=PHONG DEAN): (nvda.MANV = pc.NV# ∧ nvda.MADA = pc.SODA) Hay: PHANCONG[MA_NVIEN,SODA] ⊆ (NHANVIEN ∗ DEAN) [MANV,MADA]  Bối cảnh: NHANVIEN, DEAN, PHANCONG
  • 145. Bảng tầm ảnh hưởng R14 Thêm Xóa Sửa PHANCONG + - + (NV#, SODA) NHANVIEN - + -(*) DEAN - + -(*)
  • 146. Bài 7. PHỤ THUỘC DỮ LIỆU TRONG MÔ HÌNH QUAN HỆ I. Phụ thuộc hàm (Functional Dependencies : FD) 1. Định nghĩa : Cho R(U) là một lược đồ quan hệ với U = { A1, .. ,An} là tập thuộc tính. X và Y là tập con của U. Nói rằng X → Y (đọc là X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu r là một quan hệ xác định trên R (U) sao cho bất kỳ hai bộ t1, t2 ∈ r mà
  • 147.  Ví dụ : Trong quan hệ SV, mỗi thuộc tính DIACHI, NS, KETQUA đều phụ thuộc hàm (pth ) vào thuộc tính SV#. Mỗi giá trị SV# xác định duy nhất một giá trị tương ứng đối với từng thuộc tính đó. Khi đó , có thể viết : SV# → DIACHI SV# → NS SV# → KETQUA  Nếu Y ⊆X thì hiển nhiên X → Y
  • 148. 2. Hệ tiên đề cho phụ thuộc hàm một tập phụ 2.1. K/n bao đóng của thuộc hàm • Gọi F là tập tất cả các pth đối với lược đồ quan hệ R(U) và X →Y là một pth, X, Y ⊆ U. • Nói rằng X →Y được suy diễn logic từ F nếu mỗi quan hệ r trên R( U) đều thoả các pth của F thì cũng thoả X → Y. • Chẳng hạn F = { A → B, B → C} thì A →C • Tập tất cả các pth được suy diễn logic
  • 149. 2.2. Hệ tiên đề Amstrong  Năm 1974, Amstrong đưa ra hệ luật dẫn hay các tính chất của phụ thuộc hàm, gọi là hệ tiên đề Amstrong:  Cho X, Y, Z, W ⊆ U . Ta có các luật sau : A1. Luật phản xạ : Nếu Y ⊆ X thì X→ Y A2. Luật bổ sung : X → Y thì XZ → YZ
  • 150. Hệ tiên đề Amstrong được chứng minh là đúng đắn và đầy đủ thông qua 3 bổ đề sau:  Bổ đề 1 : Hệ tiên đề Astrong là đúng. Có nghĩa là, với F là một tập các pth đúng trên quan hệ r. Nếu X → Y là một pth được suy dẫn từ F nhờ hệ tiên đề Amstrong thì X→ Y là đúng trên quan hệ r
  • 151. Bổ đề 2: Từ hệ tiên đề Amstrong ta suy ra một số luật sau đây: a. Luật hợp : Nếu X → Y và X → Z thì X → YZ b. Luật tách : Nếu X → Y và Z ⊆ Y thì X→Z c. Luật tựa bắc cầu : Nếu X → Y và WY → Z thì XW → Z
  • 152.  Khái niệm bao đóng của tập các thuộc tính đối với tập các phụ thuộc hàm. Gọi F là tập các pth trên tập thuộc tính U, X ⊆U . X + là bao đóng của X (đối với F ) được định nghĩa như sau : X + = { A | X → A ∈ F+ } Nói cụ thể : X + là tập tất cả các thuộc tính A mà pth X→A có thể được suy diễn logic từ F nhờ hệ tiên đề Amstrong
  • 153.  Bổ đề 3 : X → Y suy dẫn từ hệ tiên đề Amstrong khi và chỉ khi Y ⊆ X + Như vậy : (1). X ⊆ X+ (2). f: X→Y ∈ F+ <=> Y ⊆ X+
  • 154. 2.3 Thuật toán tìm bao đóng của tập thuộc tính Thuật toán CLOSURE. Thuật toán CLOSURE. Input : Tập thuộc tính X và tập phụ thuộc hàm F Output : Bao đóng X của F CLOSURE (X,F) Begin olddep:= ∅; newdep:=olddep While newdep <> olddep do Begin olddep:= newdep For each W → Z ∈ F do if W ⊂ newdep then newdep:= newdep ∪ Z End
  • 155. VD: Cho U = ABCDEG F={ AB →C (f1) D → EG (f2) C → A (f3) BE → C (f4) BC → D (f5) CG → BD (f6) ADC → B (f7) CE → AG (f8) } Cho X= BD. Tính ( BD)+F
  • 156. Giải: X(0): = BD X(1): = BD∪ EG ( do (f2) ) X(2): = ∪ C ( do (f4) ) BDEG X(3): = ∪ { A ( do (f2) ) ∪ BDEGC C ( do (f4) ) ∪ D ( do ( f5) ) ∪ BD ( do (f6) ) ∪ AG ( do (f8)) } X(4): = BDEGCA = U => X+F = X (4)
  • 157. 3. Tập phụ thuộc hàm tương đương 3.1 Định nghĩa Hai tập pth F và G được gọi là tương đương nếu F+ = G+. Khi đó ta nói F phủ G ( hay G phủ F). Kí hiệu : F≡ G  Bổ đề 1: Mỗi tập các pth F đều được phủ bằng tập các pth G mà vế phải các pth đó bao gồm không quá một thuộc tính.  Bổ đề 2: F≡ G <=> F suy dẫn được ra G và G suy dẫn được ra F
  • 158. Ví dụ : Cho quan hệ Q (ABCDE) với: F = {A→ BC , A→ D,CD → E } G = {A→ BCE , A→ ABD, CD → E} * F suy dẫn được ra G vì : A → C, A → D => A → CD CD → E A→E => A → BCE. Tương tự, dễ dàng chứng minh : A → ABD. Vậy F suy dẫn được ra G. * Ngược lại, ta nhận thấy F ⊆ G , do đó hiển nhiên G suy dẫn được ra F.
  • 159. 3.2 Phủ tối thiểu Định nghĩa : Một tập phụ thuộc hàm F được gọi là tối thiểu nếu :  Mỗi vế phải của một phụ thuộc hàm F chỉ có một thuộc tính.  F gồm toàn những pth đầy đủ, nghĩa là không tồn tại một phụ thuộc hàm X → A thuộc F và một tập con Z của X mà : F+ = ( F - { X → A } ∪ { Z → A}) +  Không tồn tại một phụ thuộc hàm X → A thuộc F mà :
  • 160. 3.3 Thuật toán MINIMALCOVER tìm phủ tối thiểu của tập phụ thuộc hàm F Input: Tập phụ thuộc hàm F Output : G- là phủ tối thiểu của F MINIMALCOVER (G, F) G:=F Thay thế từng phụ thuộc hàm X→ { A1, A2,..,An} trong G bằng các phụ thuộc hàm X →A1, X → A2, .., X → An For each X → A trong G For each B ∈ X If ( G - { X → A }) ∪ ( X- {B})→ A) tương đương với G Then Thay X → A bằng ( X- { B}) → A trong G
  • 161. For each X → A trong G If ( G - { X → A }) tương đương với G Then Loại X → A ra khỏi G Return (G) End.
  • 162. Ví dụ 1: Cho F = { A→ B , B → A, B → C, A → C, C → A}. Tìm phủ tối thiểu G của F Giải : Tất cả các pth của F đều thoả mãn điều kiện 1 vì vế trái chỉ có một thuộc tính. Vế phải của mỗi pth chỉ có một thuộc tính nên không cần xét đk2. Xét đk 3, ta thấy : Nếu koại bỏ pth B → A và A → C ta được một tập pth G G={A→ B , B → C, A → C } ≡ F Không thể loại bỏ thêm một pth nào nữa vì tập pth còn lại sẽ không
  • 163. Ví dụ 2: Cho F = { AB→ C, A → B, B → A}. Tìm phủ tối thiểu G của F Giải : Tất cả các pth của F đều thoả mãn điều kiện 1 vì vế trái chỉ có một thuộc tính. Xét đk2: ta thấy pth là không đầy đủ vì : (F- {AB→ C} ∪{A→ C}) ≡ F Vậy loại bỏ pth AB → C và thay bằng pth A → C ta được tập pth G: G={A→ C , A→ B, B → A } ≡ F Nhận thấy, không thể loại bỏ thêm
  • 164. 4. Bài toán tìm khoá của quan hệ 4.1 Thuật toán tìm khoá dựa trên đồ thị Định nghĩa khoá được viết lại bằng pth. Cho Q là lược đồ quan hệ định nghĩa trên tập các thuộc tính U = { A1, A2, .. , An} với tập các pth F= { f1, f2, .. ,fn} xác định trên Q. K ⊆ U là khoá của R nếu thoả mãn hai điều kiện sau : (1): K → U (2): ∃ K' ⊂ K mà K' → U
  • 165. Biểu diễn lược đồ quan hệ Q(U) bằng đồ thị có hướng như sau: - Mỗi nút của đồ thị là tên của một thuộc tính thuộc Q - Cung nối hai thuộc tính A và B thể hiện cho pth A →B - Thuộc tính chỉ có các mũi tên đi ra, tức là chỉ ở vế trái của pth gọi là nút gốc - Thuộc tính mà chỉ có mũi tên đi vào, tức là chỉ nằm ở vế phải của pth gọi là nút lá. - Khoá của lược đồ quan hệ phải bao phủ tập nút gốc và không được chứa bất cứ nút lá nào của đồ thị
  • 166. Thuật toán tìm khoá: -B1: Vẽ đồ thị của lược đồ quan hệ -B2: Xác định tập các nút gốc ( G) và tập các nút lá ( L) -B3: Xuất phát từ tập các nút gốc(G), đặt K bằng G ( khởi đầu ta đặt khoá là tập các nút gốc) -B4: Dựa trên tập các pth F, tìm bao đóng của tập K ( tìm K+F) + Nếu K+F = U thì K chính là khoá . Dừng lại. + Ngược lại thì bổ sung một thuộc tính không thuộc tập nút lá (L) vào K. Khi đó K = K+1 nút không thuộc tập L.
  • 167. 4.2 Thuật toán tìm khoá dựa trên bao đóng của tập thuộc tính * Ý tưởng : Bắt đầu từ tập R vì R+ = R. Ta bớt dần các phần tử của R để nhận được tập bé nhất mà bao đóng của nó vẫn bằng R. Vào : r(R), F Ra : K ( Khoá ) B1: gán K = R B2: Lặp lại các bước sau : Loại khỏi K phần tử A mà ( K A)+ =R Nhận xét: Thuật toán trên chỉ tìm được một khoá trong sơ đồ quan hệ. Nếu cần tìm
  • 168. Ví dụ : Cho R = { ABCDEGHI} F = { AC→ B , BI → ACD, ABC → D, H → I, ACE → BCG, CG → AE}. Tìm khoá K ? Giải : B1: Gán K= R = { ABCDEGHI} B2: Lần lượt loại bỏ các phần tử khỏi K. -Loại phần tử A : ta có : {BCDEGHI}+ = R vì pth CG → AE nên A thuộc về {BCDEGHI}+ nên K ={BCDEGHI} -Loại phần tử B : ta có : {CDEGHI}+ = R vì pth CG → AE khiến A thuộc về {CDEGHI}+ và pth AC → B khiến B thuộc về {CDEGHI}+
  • 169. -Loại phần tử C : ta có : {DEGHI}+ ≠ R nên K vẫn là {CDEGHI} -Loại phần tử D : ta có : {CEGHI}+ = R vì CG → AE, AC → B, ABC → D nên D có trong {CEGHI}+ . Nên K ={CEGHI} -Loại phần tử E : ta có : {CGHI}+ = R vì CG → AE khiến E thuộc về {CGHI}+ nên K ={CGHI} -Loại phần tử H : ta có : {CGI}+ ≠ R nên K vẫn là {CGHI} -Loại phần tử I : ta có : {CGH}+ = R vì H → I, khiến I thuộc về {CGH}+ nên K ={CGH}
  • 170. Bài 8. THIẾT KẾ SCDL MỨC QUAN NIỆM  Trên thực tế, một ứng dụng có thể đựơc phân tích. thiết kế thành nhiều lược đồ CSDL khác nhau. Để đánh giá việc thiết kế một lược đồ CSDL, người ta dựa trên các tiêu chuẩn về sự trùng lặp thông tin, chi phí kiểm tra và các ràng buộc toàn vẹn...  Vậy để tránh sự dư thừa thông tin, ta cần chuẩn hoá tất cả các lược đồ trong quá trình thiết kế.
  • 171. 1. Phép tách các lược đồ quan hệ - ĐN: Phép tách các lược đồ quan hệ R = { A1, A2, .. An} là việc thay thế lược đồ quan hệ R bằng tập các lược đồ { R1, R2, .., Rk}, trong đó Ri ⊂ R, i= 1,..,k và R = R1∪ R2 ∪ ... ∪ Rk Không đòi hỏi các Ri phải là phân biệt - Mục đích : Loại bỏ các dị thường dữ liệu
  • 172. Ví dụ : Cho lược đồ quan hệ người cung cấp : S(MCTY, ĐC, MH, GIA) với tập pth : MCTY → ĐC MCTY, MH → GIA Có thể được tách thành 2 lược đồ khác là : S1(MCTY, ĐC) và S2 ( MCTY, MH, GIA) như vậy sẽ không mất công lưu địa
  • 173. Kết nối không mất mát thông tin - Nếu R là một lược đồ quan hệ được tách thành các lược đồ con R1, R2, .., Rk và D là một tập các phụ thuộc dữ liệu. Nói rằng phép tách là tách - kết nối không mất mát thông tin đối với D nếu với mỗi quan hệ r trên R thoả D: r = ΠR1(r) * Π R2 (r) * ... * Π Rk(r) tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của nó trên
  • 174. Kiểm tra phép kết nối không mất mát thông tin Input: R ={ A1, A2, .., An} tập các phụ thuộc hàm và phép tách p =(R1, R2, .., Rk) Output: Phép tách có phải là không mất mát thông tin hay không ? Phương pháp : Thiết lập một bảng với n cột k hàng.; cột thứ j tương ứng với thuộc tính Aj; hàng thứ i tương ứng với lược đồ Ri. Tại ô (i,j) điền kí hiệu aj nếu Aj ∈ Ri, nếu
  • 175. - Xét các pth: +Xét ( X→ Y ) ∈ F , xét các hàng và nếu có giá trị bằng nhau trên thuộc tính X thì làm bằng các giá trị của chúng trên Y. Khi làm bằng trên Y, nếu một trong hai giá trị là aj thì ưu tiên làm bằng aj, nếu không làm bằng một trong các kí hiệu bij. +Tiếp tục với các pth khác ( kể cả việc lặp lại các pth đã được áp dụng) cho đến khi không còn áp dụng được nữa. - Xem xét kq: Nếu xuất hiện một hàng gồm toàn kí hiệu a1, a2, .. , an thì phép
  • 176. VD1: Quan hÖ ng­êi cung cÊp: R(MCTY, ĐC, MH, GIA) ®­îc t¸ch thµnh 2 quan hÖ: R1(MCTY, ĐC) vµ R2(MCTY, MH,GIA) víi c¸c phô thuéc hµm: MCTY →ĐC MCTY,MH →GIA Kiểm tra xem phép tách trên có mất mát thông tin hay không ?
  • 177. B¶ng ban ®Çu ®­îc thiÕt lËp nh­ sau: 1 2 3 4 MCTY §C MH GIA 1 R1 a1 a2 b13 b14 R2 a1 b22 a3 a3 2
  • 178. ¸p dông phô thuéc hµm M CTY →ĐC cho 2 hµng cña b¶ng. Ta nhËn thÊy 2 hµng b»ng nhau trªn cét tªn (®Òu lµ a1) nªn ë cét §C chóng ®­îc lµm b»ng vµ b»ng a2. Khi ®ã ta thÊy b¶ng kÕt qu¶ lµ: Tªn §Þa S¶n Gi¸ chØ phÈm R1 a1 a2 b13 b14 R2 a1 a2 a3 a3 Cã hµng thø 2 cã c¸c gi¸ trÞ toµn lµ a, do ®ã phÐp t¸ch lµ T¸ch - KÕt nèi kh«ng mÊt m¸t th«ng tin.
  • 179. Bµ i tËp : B1. Cho l­îc ®å quan hÖ R={A, B, C, D} vµ tËp phô thuéc hµm F={A→B, AC →D} PhÐp t¸ch quan hÖ R thµnh 2 quan hÖ R1={AB} vµ R2={ACD} cã tæn thÊt th«ng tin kh«ng? V× sao? B2. Cho lược đồ quan hệ với các thuộc tính A, B, C, D, E, F và tập phụ thuộc hàm F= { AB → C, C → D, ABD → E, F → A} Kiểm tra tính mất mát thông tin của phép tách R thành : (R) = ( BC, AC, ABDE, ABDF) B3. Dùng kĩ thuật bảng kiểm tra tính tổn thất của các phép tách sau : R= < U, F>, U = ABCDE ; F = { A →C, B →C , C→D , DE →C , CE→A} p = ( AD, AB, BE , CDE)
  • 180. 2. Một số khái niệm * Thuộc tính khoá và không khoá - Cho một lược đồ quan hệ R trên tập thuộc tính U ={ A1, .., An}. Thuộc tính A∈ U được gọi là thuộc tính khoá ( nguyên thuỷ hay cơ bản) nếu A là một thành phần thuộc một khoá nào đó của R, ngược lại A được gọi là thuộc tính không khoá (phi nguyên thuỷ hoặc thứ cấp). -VD : Cho lược đồ R trên tập thuộc tính u= { A, B, C, D } với các pth AB→ C , B → D , BC→ A . Ta thấy AB và BC
  • 181. * Phụ thuộc hàm đầy đủ Cho lược đồ quan hệ R(U) trên tập thuộc tính U = { A1, ... ,Ak}. X và Y là hai tập thuộc tính khác nhau X ⊆ U và Y ⊆ U. Y là phụ thuộc hàm đầy đủ vào X nếu Y là pth vào X nhưng không pth vào bất kì tập con thực sự nào của X
  • 182.  Phụ thuộc bắc cầu Cho một lược đồ quan hệ R(U); X là một tập con các thuộc tính X⊆ U, A là một thuộc tính thuộc U. A được gọi là phụ thuộc bắc cầu vào X trên R nếu tồn tại một tập con Y của R sao cho X → Y, Y→ A nhưng Y → X với A ∉ XY.
  • 183. 3. Các dạng chuẩn của lược đồ quan hệ - Quan hệ được chuẩn hoá là quan hệ trong đó mỗi miền của một thuộc tính chỉ chứa các giá trị nguyên tố ( tức là không phân nhỏ được nữa) - Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ không chuẩn hoá. - Mét quan hÖ ®­îc chuÈn ho¸ cã thÓ thµnh mét hoÆc nhiÒu quan hÖ chuÈn ho¸ kh¸c vµ kh«ng lµm mÊt m¸t th«ng tin.
  • 184. C¸ c d ¹ ng c huÈn: - D¹ng kh«ng chuÈn - D¹ng chuÈn thø nhÊt (1NF: First Normal Form) - D¹ng chuÈn thø hai (2NF) - D¹ng chuÈn thø ba (3NF) - D¹ng chuÈn Boye – Codd (BCNF)
  • 185. 3.1. D¹ng chuÈn thø nhÊt: Mét l­îc ®å quan hÖ R ®­îc gäi lµ ë d¹ng chuÈn mét (1NF) nÕu vµ chØ nÕu toµn bé c¸c miÒn cã mÆt trong R ®Òu chØ chøa c¸c gi¸ trÞ nguyªn tè. VD: Cho bảng quan hệ GD ( Ten_GV, MON_GD) Ten_GV Mon_GD Ten_GV Mon_GD Lan PASCAL, NM CSDN Hà C, VISUAL BASIC, TK WEP Các giá trị ở thuộc tính Mon_GD chưa là giá trị nguyên tố nên bảng trên chưa ở dạng chuẩn 1. Để đưa lược đồ trên về dạng chuẩn 1 ta tách thuộc tính kép thành các thuộc tính đơn như sau :
  • 186. Bảng GD ở dạng chuẩn 1: Ten_GV Mon_GD Lan PASCAL Lan NM CSDN Hà C Hà VISUAL BASIC Hà TK WEP
  • 187. 3.2. D¹ng chuÈn thø 2: L­îc ®å quan hÖ R ë d¹ng chuÈn 2 (2NF) nÕu:  R ë d¹ng chuÈn mét  Mọi thuéc tÝnh kh«ng kho¸ cña R lµ phô thuéc hµm ®Çy ®ñ vµo kho¸ chÝnh. VD:Cho quan hÖ: SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM ) M«n thi MSSV Tªn Tuæi §Þa §iÓm chØ 3 11 Lan 20 HN 8 3 12 Ha 21 HP 6 4 11 Lan 20 HN 7 4 12 Ha 21 HP 6 5 11 Lan 20 HN 7 5 13 Tu 22 HT 2
  • 188. Khoá chính của quan hệ trên là (Monthi , MSSV).Ta thấy các thuộc tính không khoá: ten, tuoi , diachi không phụ thuộc đầy đủ vào khoá chính (chỉ phụ thuộc vào MSSV). Do đó, vi phạm 2NF. Để lược đồ ở dạng chuẩn 2, ta tách thành 2 quan hệ : SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ THIXONG (MONTHI, MSSV, DIEM) Hai quan hệ trên đã ở 2NF vì mọi thuộc tính không khoá đều đã phụ thuộc hàm đầy đủ vào khoá chính
  • 189. 3.3 Dạng chuẩn thứ 3 ( 3NF) Lược đồ quan hệ R ở dạng chuẩn thứ 3 ( 3NF) nếu :  R ở dạng chuẩn 2 Mỗi thuộc tính không khoá là không phụ thuộc hàm bắc cầu vào khoá chính. - VD1 : Cho lược đồ quan hệ R ( SAIP) với các phụ thuộc hàm : SI→ P và S → A. R không ở 3NF. Vì có A là một thuộc tính không khoá, phụ thuộc bắc cầu vào khoá chính: SI→ S , S →A và S →SI. - VD2: Lược đồ quan hệ R ( CSZ) với các phụ thuộc hàm: CS → Z, Z → C. Trong lược đồ này, mọi thuộc tính đều là thuộc tính khoá. Do vậy R ở 3 NF
  • 190. 3.4 Dạng chuẩn Boye-Codd ( R ở dạng chuẩn Boye-Codd ( BCNF) Lược đồ quan hệ BCNF) nếu với mọi : X → A thoả trên R , A ∉ X thì X là một khoá của R. - VD :Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở BCNF mà là ở 3NF vì rằng Z → C nhưng Z không phải là một khoá của R. - Định lý : Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F là ở BCNF thì nó là ở 3NF. - Nhận xét : Trong CSDL, các lược đồ quan hệ ở dạng chuẩn 1, 2, 3 vẫn tồn tại sự dư thừa thông tin. Để tối thiểu sự dư thừa thông tin thì các bảng phải ở dạng chuẩn BCNF
  • 191. 4. Chuẩn hoá bảng Chuẩn hoá bảng là cách đưa một bảng chưa chuẩn hoá về dạng chuẩn 3NF hoặc BCNF mà không làm mất mát thông tin. Có hai phương pháp để chuẩn hoá lược đồ quan hệ :  Phương pháp phân rã : Tách một lược đồ quan hệ thành nhiều quan hệ khác thỏa mãn các dạng chuẩn.  Phương pháp tổng hợp : Gom các thuộc tính thành từng nhóm tạo thành quan hệ thoả mãn các dạng chuẩn.
  • 192. 4.1. Đưa một bảng chưa chuẩn hoá về dạng chuẩn hoá  Tách các nhóm thuộc tính lặp thành một bảng, khoá của bảng là khoá của bảng ban đầu và thuộc tính định danh của nhóm lặp.  Những thuộc tính còn lại lập thành một bảng với khoá của bảng là khoá của bảng ban đầu.  Quá trình tách chỉ dừng lại khi ta đã nhận được các bảng đã chuẩn hoá ( không còn thuộc tính lặp)  VD : Quan hệ đơn hàng: DONHANG ( SoĐ,MaH , TenH, SL, MAK, TenK,Tel) DONHANG1 (SoĐ, MaH, TenH, SL) DONHANG2 (SoĐ, MaK, TenK, Tel)
  • 193. 4.2. Đưa bảng ở 1NF về 2NF  Tách các thuộc tính phụ thuộc vào một phần của khoá thành một bảng, bảng này có khoá là thuộc tính gây ra sự phụ thuộc.  Các thuộc tính còn lại là một bảng với khoá của bảng là khoá của bảng ban đầu.  VD : Quan hệ ; SVTHI ( MONTHI, MSSV, TEN, TUOI, DIACHI, DIEM ) ở 1NF nhưng chưa ở 2NF. Để quan hệ ở 2NF, ta tách thành 2 quan hệ : SINHVIEN (MSSV, TEN, TUOI, DIACHI) vµ THIXONG (MONTHI, MSSV, DIEM)
  • 194. 4.3. Phép tách một lược đồ quan hệ thành 3NF Phép tách một lược đồ quan hệ R với tập pth F tối thiểu , không làm mất mát thông tin trên R, bảo toàn các pth sao cho mỗi lược đồ con đều ở 3NF: - B1 : Gom tất cả các thuộc tính của R không liên quan đên một pth nào của F, hoặc vế trái, hoặc vế phải , cho vào một lược đồ. - B2 : Nếu có một phụ thuộc hàm nào của F mà liên quan tới tất cả các thuộc tính của R thì kết quả ra chính là R. - B3 : Ngoài ra, phép tách đưa ra các lược đồ gồm các thuộc tính XA cho pth X → A; nếu X → A1, X → A2, ... , X→ An thì thay thế tập thuộc tính XA1A2...An cho XAi ( 1<= i<= n). Quá trình tiếp tục đến khi tất cả các lược đồ đều đã ở 3NF
  • 195. Ví dụ : Cho lược đồ quan hệ R ( CTHRSG) với tập pth tối thiểu : C → T , HR → C , HT → R , CS → G và HS → R. Thuật toán trên cho ta kết quả của phép tách là tập lược đồ gồm 5 lược đồ con ở 3NF là : R1 (CT) (ứng với pth C → T) R2 (HRC) (ứng với pth HR → C) R3 ( HTR) (ứng với pth HT → R) R4 ( CSG) (ứng với pth CS → G) R5 (HSR) (ứng với pth HS → R)
  • 196. 4.3. Phép tách một lược đồ quan hệ thành BCNF Phép tách một lược đồ quan hệ R với tập pth F, không làm mất mát thông tin sao cho mỗi lược đồ con đều ở BCNF. Phương pháp : Lặp liên tiếp. Tại mỗi bước phép tách p là bảo đảm không mất mát thông tin đối với F. -Bước đầu : p chỉ bao gồm R -Các bước tiếp : Nếu S là một lược đồ thuộc p, S chưa BCNF, chọn X → A là pth thoả trên S, trong đó X không chứa khoá của S, A∉ X. Thay thế S trong p bởi S1 và S2 với : S1 = XA, S2 = S - A Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở dạng chuẩn BCNF.
  • 197. VD: Cho lược đồ R(CTHRSG) với tập pth : C → T, HR → C, HT → R, CS → G, HS → R Khoá của R là HS. Ta lần lượt xét các pth vi phạm điều kiện BCNF. - Xét C → T : vi phạm BCNF vì C không chứa khoá, dùng thuật toán trên để tách thành : R1 ( CT ) và R2( CHRSG). Sau đó cần tính F+ và chiếu xuống R1 và R2, kiểm tra ta thấy R1 đã ở BCNF, R2 thì chưa. Ta tách tiếp R2. Phép tách cuối cùng được : R1(CT), R2 ( CSG), R3 ( CHR), R4 ( HSR) Quá trình tách có thể được biểu diến qua sơ đồ :
  • 198. R(CTHRSG) C → T, HR → C, HT → R, Khoá =HS CS → G, HS → R R1(CT) R2(CHRSG) HR→C, HT →R, Khoá =C Khoá =HS CS →G, HS →R C→T HR→C, R21(CSG) R22(CHRS) HC →R, Khoá =CS Khoá =HS HS →R CS →G R221(HRC) R222(HSR) Khoá =HR,HC Khoá =HS HR→C, HC →R HS →R
  • 199. BTVN: B1. Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U = ABCDEHG và tập phụ thuộc hàm F={DE→ G, E→ A, H→ C, CG→ H, DG→ EA, D→ B} a. Xác định khoá của lược đồ quan hệ trên. b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ trên. B2. Xác định dạng chuẩn cao nhất của lược đồ quan hệ với các thuộc tính ABCDEF và tập phụ thuộc hàm {AB→C,C→B,ABD→E,F→A} B3. Cho W= < R,F> R = { A, B, C, D} F= { B → D, A → C, C → ABD}. Hỏi W có là 2NF, 3NF không ?
  • 200. B4. Xác định dạng chuẩn cao nhất của lược đồ quan hệ sau: H=(U,F); U=ABCD; F={CD→B,A →C,B→ACD} B5. Cho lược đồ R=(BOISQD) và F={S→D,I→B, IS→Q,B→O} a. Chứng tỏ rằng phép tách: R=(SD,IB, ISQ,BO) Là phép tách không mất mát thông tin. b. Chứng tỏ phép tách trên là ở dạng 3NF.
  • 201. BÀI 9. NGÔN NGỮ TÂN TỪ I. Logic toán và ứng dụng của nó vào CSDL. ĐN1 : Biểu thức logic là một phát biểu mà giá trị của nó có thể đúng hoặc sai. Biểu thức logic có giá trị luôn luôn đúng ( hoặc sai ) được gọi là hằng đúng hoặc hàng sai. 1. Một số khái niệm : - Hàm: là một ánh xạ từ một miền giá trị vào tập hợp gồm hai giá trị hoặc đúng hoặc sai, thường kí hiệu là f,g,h… - Tân từ : Là một biểu thức được xây dựng
  • 202. - ĐN2 : Tân từ một ngôi được định nghĩa trên 1 tập X và một biến x có giá trị chạy trên các phần tử của X. Với mỗi giá trị của x, tân từ P(x) là một mệnh đề logic, tức là nó có giá trị hoặc là đúng hoặc là sai. VD: X là một tập hợp những người có tên như sau : X={ Hoa , Lan, Tuấn, Dũng, T.Anh,…} Với tân từ NỮ (x) được xác dịnh như : “ x là người nữ”. Khi đó mệnh đề : NỮ ( Hoa) : cho kết quả là đúng. NỮ ( Tuấn ) : Cho kết quả là sai .
  • 203. ĐN3: Tân từ n ngôi được định nghĩa trên các tập X1, X2,…Xn và n biến x1, x2, …, xn lấy giá trị trên các tập Xi tương ứng. Với mỗi ai∈ Xi, xi = ai , tân từ n ngôi là một mệnh đề. Kí hiệu : P ( x1, x2, …, xn) VD: CHA ( x1, x2 ) : “ x1 là cha của x2”
  • 204. - ĐN4: Từ đựợc định nghĩa một cách truy hồi như sau : i. Từ là một hằng hay một biến ii. f (t1,t2,…,tn) là một hàm n ngôi thì f là một từ. - ĐN5: Công thức : i. Công thức nguyên tố là một tân từ n ngôi P(t1,t2,.., tn) , trong đó t1, t2,.., tn là các từ. ii. Nếu F1, F2, .. ,Fn là các công thức thì các biểu thức sau: F1 v F2 , F1 Λ F2 , F1 => f2, ¬ F1 cũng là các công thức. iii. Nếu F1 là công thức thì ∀x: F1, ∃x: F1 cũng là các công thức.
  • 205. - ĐN6: - Một công thức được gọi là “đóng” nếu mọi biến của nó đều có kèm với lượng từ. - Một công thức được gọi là “mở” nếu tồn tại một biến không có kèm với lượng từ. Biến này gọi là biến tự do.
  • 206. 2. Diễn giải và mô hình. a. Diễn giải của một công thức: - Một diễn giải của một CT gồm 4 phần : * Miền giá trị của các biến công thức, KH là tập M. * Việc sử dụng công thức: hằng , hàm , tân từ. * Ý nghĩa của công thức * Xác định một quan hệ n ngôi trên tập Mn
  • 207. VD: Cho M = {Tùng, Minh , Hưng, Long, Đoàn, Tuấn} và một CT C có dạng như sau : ∀x ∀ y (∃z (P(x,y) v P(y,z) => Q (x,z) ) Tập diễn giải của công thức có thể là : - M : miền giá trị của các biến x, y, z - Các tân từ : P: CHA ; Q: ONG - Ý nghĩa : * CHA (x, y): x có cha là y * ONG (x, y): x có ông là y. - Các quan hệ 2 ngôi trên M2 : CHA = {(Tùng, Minh), (Long, Đoàn), (Đoàn, Tuấn),(Minh, Long)} ONG = {(Tùng, Long ), (Minh, Đoàn), (Long, Tuấn) }
  • 208. II. Ứng dụng logic toán trong CSDL 1. Dẫn nhập CSDL : mô hình hoá thông tin gồm các sự kiện đựơc liên kết hay biểu diễn một tình trạng của thế giới thực. Chú ý : i. Câu hỏi đóng tương ứng với CT đóng. Câu trả lời là có hiệu lực đúng hoặc sai. VD: Tùng có cha là Minh? CHA ( Tùng, Minh)? Con của Long là ai? ∃x CON (Minh, x) ? ii. Câu hỏi mở tương ứng với một CT
  • 209. 2. Ngôn ngữ tân từ có biến là bộ -n Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n thoả các quy tắc sau : a. Biến: là một bộ của quan hệ b. Từ : là hằng, biến, hay biểu thức có dạng s[c] trong đó : s là biến, c là tập các thuộc tính ( gọi là từ chiếu) c. Các biểu thức: - R s : với R là một quan hệ; s là biến bộ-n được gọi là từ - t1 θ a, t1 θ t2: ở đây, t1, t2 là các từ chiếu, θ là toán tử so sánh, a là một hằng. ĐN7: Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n đựơc biểu diễn như sau :
  • 210. 2. Ngôn ngữ tân từ có biến là miền giá trị Một câu hỏi trong ngôn ngữ tân từ có biến là bộ -n thoả các quy tắc sau : a. Từ : là hằng hoặc biến. b. Công thức nguyên tố: i. Q (t1, t2,..,tn) : với Q là một quan hệ; ti là các từ ii. t1 θ a1, t2 θ a2: ở đây, ti là các từ ,θ là phép toán c. Trong 1 CSDL, câu hỏi bằng ngôn ngữ tân từ có dạng : { ( x1, x2,…, xk) | F ( x1, x2, …, xk) } Ở đây xi (i= 1,2,..,k) là các biến tự do của F và F không có biến tự do nào khác.
  • 211. VD: Xét cơ sở dữ liệu Thực tập gồm 3 quan hệ sau đây: SV( SV#, HT, NS, QUE, HL) DT(DT#, TDT, CN, KP) SD(SV#, DT#, NTT, KM, KQ) Q1: Cho danh sách các sinh viên có quê Hà Nội và có điểm học lực >=8.0? - Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau: { r[HT] | SV r Λ r[QUE=‘Hà Nội’] Λ r[HL]>=8.0} Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau:
  • 212. Q2: Cho biết tên các sinh viên nam quê Hải Phòng có điểm học lực >8? - Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau: { r[HT] | SV r Λ r[GT]=‘Nam’ Λ r[QUE] = ‘Hải Phòng’ Λ r[HL]>=8} - Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau: {n | ∃x ∃t ∃z ( SV (n, x, y, ‘Nam’,’Hải Phòng’, z) Λ z > 8}
  • 213. Q3: Cho danh sách các sinh viên có điểm thực tập =10? - Diễn tả bằng ngôn ngữ tân từ có biến là bộ như sau: { r[HT] | ∃p ( SV q Λ SD p Λ q[SV#]=pSV[#] Λ p[KQ]=9.0} - Và bằng ngôn ngữ tân từ có biến là miền giá trị như sau: {y | ∃z ∃t ∃w ∃a ∃b ∃c ( SV (x, y, z, t, w) Λ SD(x, a, b, c, 10)}
  • 214. BTVN: Cho quan hệ Thực tập như trên, hãy viết các câu truy vấn sau bằng ngôn ngữ tân từ có biến là bộ -n và có biến là miền giá trị ? 1. Cho thông tin về những sinh viên sinh trước năm 1985 có quê ở Hà Nội? 2. Cho biết các địa điểm thực tập xa trường (KM >100) của đề tài số 5? 3. Cho biết mã của những đề tài có kinh phí lớn hơn 1 triệu và nhỏ hơn 2 triệu? 4. Cho biết mã của sinh viên dưới 20 tuổi, thực tập khá ( có điểm kết quả thực tập >=6.5)
  • 215. Bài 9. Tối ưu hoá câu hỏi Nói chung, các ngôn ngữ bậc cao ( ngôn ngữ con dữ liệu ) đòi hỏi thực hiện trong máy đều rất tốn kém thời gian. Do vậy, trước khi thực hiện các câu hỏi thuộc các ngôn ngữ đó cần thiết phải biến đổi hợp lý để giảm thời gian tính toán. Việc làm đó gọi là "tối ưu hoá ". Ví dụ : Thực hiện câu truy vấn : Cho biết các thông tin cá nhân và việc thực tập của những sinh viên có điểm thực tập >=8. Ta nên chọn ra những sv có điểm thực tập >=8 trong quan hệ SD rồi mới đem kết nối với quan hệ SV để lấy ra nhứng thông tin các nhân của họ .
  • 216. I. Các chiến lược tối ưu tổng quát 1. Thực hiện phép chọn sớm như có thể Biến đổi câu hỏi để đưa phép chọn vào thực hiện trước nhằm làm giảm bớt kích cỡ của kết quả trung gian và do vậy chi phí phải trả giá cho việc truy nhập bộ nhớ thứ cấp cũng như lưu trữ của bộ nhớ chính sẽ nhỏ đi. 2. Tổ hợp những phép chọn xác định với phép tích Đề - Các thành phép kết nối. Nếu kết quả của tích Đề - Các R x S là đối số của phép chọn và phép chọn liên quan tới các phép so sánh giữa các thuộc tính của R và S thì thay phép tích Đề - Các bằng phép kết nối.
  • 217. 3. Tổ hợp dãy các phép tính một ngôi như các phép chọn và phép chiếu. Một dãy các phép một ngôi ( như phép chọn hoặc phép chiếu) mà kết quả của chúng phụ thuộc vào các bộ của một quan hệ độc lập thì có thể nhóm các phép đó lại. 4. Tìm các biểu thức con chung trong một biểu thức Nếu kết quả của một biểu thức con chung ( biểu thức xuất hiện hơn một lần) là một quan hệ không lớn và nó có thể được đọc từ bộ nhớ thứ cấp với ít thời gian hơn thì nên tính toán trước biểu thức đó chỉ một lần.
  • 218. 5. Xử lý các tệp trước Đối với các tệp số, có hai vấn đề quan trọng cần được xử lý trước là sắp xếp trước các tệp và thiết lập các tệp chỉ số. 6. Đánh giá trước khi thực hiện tính toán . Cần tính toán chi phí thực hiện các phép tính để có được trình tự thực hiện các phép tính một cách tốt nhất.
  • 219. II. Biểu thức tương đương Hai biểu thức E1 và E2 gọi là tương đương ( viết tắt là ( E1 ≡ E 2 ) nếu chúng biểu diễn cùng một ánh xạ, nghĩa là nếu thay thế cùng các quan hệ cho tên các lược đồ tương ứng ở hai biểu thức cho ra cùng một kết quả. III. Các quy tắc liên quan tới phép kết nối và phép tích Đề- Các L1. Quy tắc giao hoán của phép kết nối và phép tích Đề-Các Nếu E1 và E2 là hai biểu thức quan hệ, F là điều kiện trên các thuộc tính của E1 và E2 thì : E1  E2 F ≡ E2  E1 F E1 * E2 ≡ E2 * E1 E1 x E2 ≡ E2 x E1
  • 220. L2. Quy tắc kết hợp của phép kết nối và phép tích Đề- Các Nếu E1, E2 và E3 là các biểu thức quan hệ, F1, F2 là điều kiện thì : (E1  E2 )  E3 ≡ E1  (E2  E3 ) F1 F2 F1 F2 (E1 * E2) * E3 ≡ E1 *( E2 * E3 ) (E1 x E2) x E3 ≡ E1 x ( E2 x E3 )