Hệ quản trị cơ sở dữ liệuMột hệ quản trị cơ sở dữ liệu Database Management System, viết tắt là DBMS là một tập hợp các chương trình cho phép người dùng định nghĩa, tạo lập, bảo trì các
Trang 1Cơ sở dữ liệu
Cung cấp những kiến thức cơ bản về nguyên lý tổ chức và khai
Cung cấp và rèn cho sinh viên khả năng thiết kế (logic) một hệ
Thực hành cài đặt các ràng buộc toàn vẹn và tối −u hóa biểu thức
tìm kiếm trên SQL Server
Trang 2Tµi liÖu tham kh¶o
Trang 34 §ç Trung TuÊn, C¬ së d÷ liÖu quan hÖ, NXB Gi¸o dôc,
1998
Tµi liÖu tham kh¶o
5 Date C.J., “An introduction to database systems”, seventh editi on,
Trang 4Management ", Second Edition, Addison Wesley Longman Lim ited
Trang 5(operational data) của một tổ chức
nhiều người dùng với các mục đích khác nhau
Tại sao cần đến các hệ CSDL
HÖ qu¶n trÞ c¬ së d÷ liÖu lµ g×?
Trang 6Phần mềm cho phép người dùng giao
tiếp với CSDL, cung cấp môi trường
thuận lợi và hiệu quả để tìm kiếm và
lưu trữ thông tin của CSDL
Mục đích : sự tách biệt quan niệm về
CSDL của nhiều người sử dụng với
những chi tiết biểu diễn về vật lý của
Trang 8Độc lập dữ liệu mức vật lý
Lược đồ trong
Trang 10Enterprise Database – wide-area
network (hundreds or thousands of
Trang 12Hồ Cẩm Hà - ĐH Sư phạm Hà nội 12
Workgroup database with local area network
Trang 13Hồ Cẩm Hà - ĐH Sư phạm Hà nội 13
An enterprise
data
warehouse
Trang 14Hồ Cẩm Hà - ĐH Sư phạm Hà nội 14
CASE Tools – computer-aided software engineering
Repository – centralized storehouse of metadata
Database Management System (DBMS) – software
for managing the database
Database – storehouse of the data
Application Programs – software using the data
User Interface – text and graphical displays to users
Data Administrators – personnel responsible for
maintaining the database
System Developers – personnel responsible for
designing databases and software
Trang 15End Users – people whoẩuse - theưapplications 15databases
Trang 206 Hệ quản trị cơ sở dữ liệu
Một hệ quản trị cơ sở dữ liệu ( Database Management System, viết tắt là DBMS) là một tập hợp các chương trình cho phép
người dùng định nghĩa, tạo lập, bảo trì các CSDL và cung cấp
các truy cập có điều khiển đến các CSDL này
(c)Các kiểm soát, các điều khiển đối với việc truy cập vào CSDL
Trang 216.Database Management System
resources like an operating system manages hardware resources
Trang 22Ngôn ngữ định nghĩa dữ liệu (DDL):
Cho phép người dùng định nghĩa CSDL: cho phép
người dùng đặc tả các kiểu và các cấu trúc dữ liệu,
đặc tả các ràng buộc trên các dữ liệu lưu trữ trong CSDL.
Cấu trúc lưu trữ và các phương pháp truy cập của hệ CSDL
xác định
Trang 23Ngôn ngữ thao tác dữ liệu (DML)
Tìm kiếm thông tin lưu trữ trong CSDL;
Chèn thêm thông tin mới vào CSDL;
Xoá bỏ thông tin khỏi CSDL;
Sửa đổi thông tin được lưu trữ trong CSDL.
Tính thủ tục/phi thủ tục (procedure/nonprocedure)
Trang 24Các kiểm soát, các điều khiển đối với việc
liệu
Trang 25ChÊt l−îng DBMS
VÒ c¬ b¶n hÖ qu¶n trÞ CSDL cung cÊp c¸c ph−¬ng tiÖn nªu
Trang 26Vài nét về quá trình phát triển DBMSs
1960: Một trong những hệ quản trị đầu tiên là IMS (Information
Management System) của hãng IBM (mô hình dữ liệu phân cấp)
đời đánh dấu sự xuất hiện đầu tiên của một hệ quản trị CSDL dựa
của hãng IBM mang tên System-R ra đời Từ những năm 1980
Từ những năm 1990, bắt đầu xây dựng DBMS kiểu hướng đối
Trang 27Evolution of DB Systems
Flat files - 1960s - 1980s Hierarchical – 1970s - 1990s Network – 1970s - 1990s
Relational – 1980s - present Object-oriented – 1990s - present Object-relational – 1990s - present Data warehousing – 1980s -
present Web-enabled C–m 1990s phạ present 28
ồ ẩ Hà - ĐH Sư - m Hà ộiH
Trang 28(6) Cung cÊp c¸c dÞch vô b¶n quyÒn
ẩ Hà - ạ Hà iHồ m
ĐH ư ph
Trang 29C¸c chøc n¨ng cña mét hÖ qu¶n trÞ
CSDL ( tiÕp )
Trang 30KiÕn tróc cña mét hÖ qu¶n trÞ CSDL
Trình ứng dụng Truy vấn Lược đồ cơ sở
dữ liệu
DBMS
Bộ tiền xử lí ngôn ngữ thao tác dữ liệu
Bộ xử lí truy vấn Chương trình
dịch ngôn ngữ khai báo dữ liệu
Mã chương trình Bộ quản lí cơ sở
dữ liệu
Bộ quản lí từ điển
Phương thức truy cập
Bộ đệm của hệ thống
Trang 31Trình kiểm tra
tính toàn vẹn
Trình quản lý quyền truy cập
Trình xử lý câu lệnh
Trình quản lý các giao tác
Trình tối ưu hóa câu hỏi
Trang 32Hoạt động của một chương trình ứng dụng
thông qua các thành phần của DBMS
Vựng đệm 1àm việc của chương trỡnh ứng dụng A
10 Chươngứng dụng A trỡnh a Lược(External đồ ngoài
việc của hệ quản trị cơ sơ
Trang 33S¬ l−îc vÒ c¸c kiÕn tróc hÖ qu¶n trÞ
CSDL ®a ng−êi dïng
H×nh 1.11 KiÕn tróc hÖ xö lý tõ xa (teleprocessing)
Trang 34LAN Trạm làm việc 3 Cỏc tệp được gửi về trạm làm việc
File-server Cơ sở dữ liệu
Hình 1.12 Kiến trúc tệp-máy chủ (file - server)
QTCSDL cần đến Tuy nhiên các ứng dụng và hệ QTCSDLchạy trên mỗi trạm làm việc (workstation) và yêu cầu các
ồ Cẩm Hà - H S phạHàĐ
ư m
Trang 35Dữ liệu được chọn gửi về mỏy khỏch
Máy chủ Cơ sở dữ liệu(với DBMS)
C ác tiến trình tương tác với nhau tạo nên hệ thống: tiến trình máy khách yêu cầu cung
cấp tài nguyên nào đó và tiến trình máy chủ cung cấp tài nguyên đó Hai tiến trình này
không nhất thiết phải nằm trên cùng một máy tính.
Trang 36Kiến trúc máy khách-máy chủ (client - server)
Khả năng truy cập rộng rãi đến các CSDL.
Nâng cao khả năng thực hiện: nếu tiến trình server và các tiến trình client ở trên các máy tính khác nhau thì các CPU khác nhau có thể cùng chạy song song, mỗi CPU thực hiện tiến trình của nó.
Chi phí cho phần cứng có thể được giảm do chỉ cần server có cấu hình đủ mạnh để
lưu trữ và quản trị cơ sở dữ liệu.
Chi phí cho truyền thông được giảm do một phần trong các thao tác của ứng dụng
được giải quyết trên client, truyền thông trên mạng chỉ gồm: yêu cầu về truy cập cơ
sở dữ liệu của client gửi đến server và dữ liệu kết quả từ server gửi cho client.
Nâng cao được khả năng đảm bảo tính nhất quán của dữ liệu Server có thể kiểm
soát được tính toàn vẹn bởi các ràng buộc này được định nghĩa và kiểm tra chỉ tại
đó.
Kiến trúc này phù hợp với việc xây dựng các hệ thống có tính mở.
Trang 37Vai trß cña con ng−êi trong hÖ CSDL
Trang 38Tãm t¾t ch−¬ng 1
Kh¸i niÖm CSDL, hÖ qu¶n trÞ CSDL
Trang 39Xin cảm ơn !
CƠ SỞ DỮ LIỆU QUAN HỆ
Trang 41Như vậy quan hệ r là một tập hợp các n_bộ có dạng
Trang 42Hồ Cẩm Hà Chương 2
Ví dụ
Trang 43Hồ Cẩm Hà Chương 2
Lược đồ quan hệ (Relation scheme)
R = <Ω , F >
F là tập các điều kiện giữa các thuộc tính(ràng buộc toàn vẹn)
Trang 44Hồ Cẩm Hà Chương 2
Với lược đồ quan hệ R, theo thời gian, nhiều quan hệ có cấu trúc và ràng buộc toàn vẹn được mô tả bởi lược đồ này Mỗi quan hệ như vậy còn được gọi là một thể hiện của lược đồ R.
ký hiệu r(R)
ký hiệu t[X], t[Ai] với X ⊆ Ω
Trang 45Hồ Cẩm Hà Chương 2
Các tính chất đặc trưng của một quan hệ
Một quan hệ có một tên phân biệt với tên các quan hệ khácMỗi ô trong bảng (quan hệ) chứa một giá trị nguyên tố
Mỗi thuộc tính trong 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
Trang 46Các bộ trong quan hệ là phân biệt, nghĩa là không có hai
bộ giống hệt nhau trong một quan hệ
Thứ tự các bộ không quan trọng về mặt lý thuyết
Trang 47Hồ Cẩm Hà Chương 2
Ví dụ
Trang 49Hồ Cẩm Hà Chương 2
Khóa của quan hệ
h
này sao cho mọi tập con thực sự của nó không là siêu khóa
Trang 50Hồ Cẩm Hà Chương 2
Khóa dự tuyển (candidate key)
Khóa chính (primary key)
thuộc tính khóa, thuộc tính không khóa
Khóa ngoài của một lược đồ quan hệ là một tập hợp gồm một hay nhiều thuộc tính là khóa của một lược đồ quan hệ khác
Trang 51Hồ Cẩm Hà Chương 2
Trang 53Các thao tác cập nhật dữ liệu trên
Phép thêm bộ (Insert)
INSERT <NHAN-VIEN; “Nguyễn Hương”, ”Lan”, “943775”,
INSERT <NHAN-VIEN; “Nguyễn Hương”, ”Lan”, “943775”,
Trang 54Các thao tác cập nhật dữ liệu trên
Trang 55Các thao tác cập nhật dữ liệu trên
Phép sửa đổi (Update)
MODIFY <NHAN-VIEN; MSNV=”123456”; LUONG = 4000>
Trang 56Tãm t¾t ch−¬ng 2
lược đồ quan hệ (cấu trúc của quan hệ và các ràng buộc)
quan hệ là một bảng với tất cả các bộ đang tồn tại trong đó, bảng này là một thể hiện của lược đồ quan hệ.
siêu khóa là một tập thuộc tính xác định các bộ một cách duy nhất trong quan hệ.
khóa dự tuyển là các siêu khóa nhỏ nhất.
bộ.
hệ có vai trò làm khóa dự tuyển trong một quan hệ khác.
Ràng buộc toàn vẹn: thực thể, tham chiếu, ngữ nghĩa
Trang 57Xin cảm ơn !
Trang 58C h−¬ng 3
Ngôn ngữ thao tác dữ liệu
Trang 59ngữ bậc cao được sử dụng để thao tác trên các quan hệ.
hợp và đặc trưng)
Phép hợp: r ∪s = {t t∈r hoặc t∈s}
Trang 65Khái niệm ” xếp cạnh nhau ”:
Cho bộ p =( p1, p2 , , pn ) và bộ q =( q1, q2 , , qm ) Xếp cạnh nhau của p và q :
Trang 66r ⋈ Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]}
Trường hợp θ là “=” gọi là kết nối bằng
kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s )
Trang 67kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s )
Ví dụ
NHA_CUNG_CAP * CUNG_UNG
Các phép toán đặc biệt trên quan hệ
Phép kết nối nửa (semi join)
Trang 68r ⊲F s = ΠA(r ⋈ F s )
Ví du
CUNG_UNG ⊲ F SAN_PHAM
với F là điều kiện:
(CUNG_UNG.MA_SP = SAN_PHAM.MA_SP) AND (SOLUONG>1500).
Các phép toán đặc biệt trên quan hệ
Phép kết nối ngoài trái (left outer join)
Trang 69kết nối ngoài phải (right outer join)
(Đọc tài liệu)
Trang 71< các thuộc tính cơ sở để gộp nhóm> f <danh sách hàm kết tập> ( r)
Trang 72không phải là một đại lượng vô hướng kể cả khi nó chỉ gồm
bỏ khỏi nhóm khi thực hiện một hàm kết tập
khác
Dùng các biểu thức đại số quan hệ
biểu diễn câu hỏi
Câu
hỏi 1
Tìm tên của dự án có mã số D4
Trang 73hỏi 2 ΠTEN_DA(σ(MA_DA=”D4” )(DU_AN))
Cho biết họ tên và lương của những nhân viên làm việc ở phòng “Nghiên cứu và phát triển”.
ΠHOTEN, LUONG (NHAN_VIEN*
(ΠMA-DV (σ(TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG))))
Dùng các biểu thức đại số quan hệ
biểu diễn câu hỏi
Câu
hỏi 3
Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã
số dự án, đồng thời cho biết họ tên, ngày sinh của trưởng phòng quản lý
Trang 74dự án này.
KQTG ← ( ΠMA-DA, MA-DV( σ (DIA-DIEM-DA=”TT Khí tượng thủy văn HN’ )(DU_AN))
KETQUA ← ΠMA-DA,HO-TEN, NG-SINH(NHAN_VIEN⋈ MA-NV=MA-TP (PHONG*KQTG))
Dùng các biểu thức đại số quan hệ
biểu diễn câu hỏi
Câu
hỏi 4
Tìm tên những nhân viên làm việc cho tất cả các dự án do phòng có mã
Trang 75số P4 quản lý.
ΠHO-TEN(( ΠMANV,MA-DA(CHAM_CONG)÷
Π MA-DA ( σ (MA-DV=P4) (DU_AN)))*NHAN_VIEN).
Dùng các biểu thức đại số quan hệ
biểu diễn câu hỏi
Câu
hỏi 5
Tìm mã số những dự án có sự tham gia của một người là lãnh đạo phòng trực tiếp quản lý dự án này.
Trang 76KQTG ← ΠMA-DA,MA-DV(DU_AN) * ΠMA-DV, MA-TP(PHONG)
KETQUA ← KQTG ⋈ ((KQTG.MA-DA=CHAM_CONG.MA-DA) AND (KQTG.MA-TP=CHAM_CONG.MA-NV))
Trang 77liệu quan hệ.
Cơ sở toán học của phép tính quan hệ là logic tân từ cấp một
Có hai loại: ngôn ngữ tân từ biến bộ và ngôn ngữ tân từ biếnmiền
(Tuple relational calculus)
Một câu hỏi đơn giản trong ngôn ngữ tân từ
Trang 78biến bộ có dạng
{ t ĐK( t ) }
(Tuple relational calculus)
{ t NHÂN_VIÊN ( t ) AND t LUONG > 1700 000}
Trang 79{t.HO_TEN, t.MA_DANHÂN_VIÊN(t) AND t.LUONG > 1700 000}
Một cách tổng quát, một biểu thức của phép tính biến bộ có
Trang 80{ti.A1, tj.A2,…, tk.An ĐK (t1, t2,…, tn, tn+1, tn+2, …, tn+m)}
Công thức của phép tính biến bộ được tạo nên từ các công thức nguyên
tố Một công thức nguyên tố thuộc một trong những dạng sau:
Trang 81(1) r(t) nói một cách khác đó là phát biểu (t ∈ r).
(2) ti.A θ tj.B
(3) ti.A θ c
Mỗi công thức nguyên tố sẽ nhận một trong hai giá trị TRUE
và FALSE đối với một tổ hợp các bộ (giá trị chân lý)
Các công thức nguyên tố tạo nên công thức của phép tính bộtheo các luật:
Trang 82(L1) Mỗi công thức nguyên tố là một công thức
(L2) F, F1, F2 là công thức thì (F1 AND F2), (F1 OR F2), NOT(F) là công thức (L3) F là một công thức thì ( ∃ t )(F) với t là một biến bộ cũng là một công thức (L4) F là một công thức thì ( ∀ t)(F) với t là một biến bộ cũng là một công thức
Ví dụ Câu
hỏi 1
Trang 84{t.HO_TEN, t.LUONG ∃u
Ví dụ Câu
hỏi 3
Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy
Trang 85cho biết mã số dự án, đồng thời cho biết họ tên trưởng phòn g
quản lý dự án này
Ví dụ Câu
hỏi 4
Trang 86Tìm tên những nhân viên làm việc cho tất cả các dự
án do phòng có mã số P4 quản lý
Trang 87Tìm mã số của những dự án có sự tham gia của một người làlãnh đạo của phòng trực tiếp quản lý dự án này.
Luật chuyển đổi công thức tương đương
liên quan đến các lượng từ
Trang 88(∀x) (P(x) AND Q(x)) ≡ (∃ x))(NOT(P(x)) OR NOT(Q(x)))
Trang 89Tìm tên của dự án có mã số D4
{tenX ∃ diadiemX ∃ ma_dvX
(DU_AN(“D4”,tenX, diadiemX, ma_dvX))}
Trang 90Cho biết họ tên và lương của những nhân viên thuộc phòng
“Nghiên cứu và phát triển”
(PHONG (ma_dvX, “Nghiên cứu và phát triển”, ma_tpX) ANDNHAN_VIEN(ma_nvX,ho_tenX,ngay_sinhX,gioi_tinhX,ma_dvX,luongX))}
Trang 91Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết
mã số dự án, đồng thời cho biết họ tên trưởng phòng quản lý dự án
này
{ma_daX, ho_tenX
∃ ten_daX ∃ ma_dvX ∃ ten_phongX ∃ ma_tpX ∃ ngay_sinhX ∃ gioi_tinhX ∃ luongX ( DU_AN (ma_daX, ten_daX, “TT khí tượng thủy văn HN”, ma_dvX) AND
PHONG (ma_dvX, ten_phongX, ma_tpX) AND
NHAN_VIEN (ma_tpX, ho_tenX, ngay_sinhX, gioi_tinhX, ma_dvX, luongX)) }
Trang 92Khả năng biểu thị câu hỏi của đại số quan hệ và ngôn ngữ
Một ngôn ngữ hỏi L (của mô hình quan hệ) được gọi là đầy
đủ nếu với L, chúng ta có thể biểu diễn được bất cứ một câu
Tính đầy đủ trở thành một tiêu chuẩn quyết định để so sánhkhả năng biểu diễn câu hỏi của các ngôn ngữ hỏi bậc cao
Trang 93SQL đang được xem là ngôn ngữ chuẩn của các hệ cơ sở
dữ liệu quan hệ
Ngôn ngữ SQL gồm nhiều phần Nó cho phép định nghĩa dữliệu (gồm DDL), cho phép cập nhật và tìm kiếm dữ liệu
(gồm DML)
cung cấp các khả năng khác như: định nghĩa khung nhìn
(view), kiểm soát tính toàn vẹn dữ liệu, cấp phát quyền truycập, điều khiển các giao tác, thao tác dữ liệu nhúng
SQL
Trang 94Phần thao tác dữ liệu sẽ có đông đảo người dùng hơn, do chúng ta xem xét phần này trước phần định nghĩa dữ liệu của SQL.
SELECT
Trang 97NGÔN NGỮ SQL
Cho biết họ tên của mỗi nhân viên và lương mới của mỗi
người nếu lương họ được tăng 10%
FROM nhan_vien
Trong bảng kết quả, nếu muốn có thể đặt tên cho cột thứ
ba, chẳng hạn cột thứ ba được đặt tên là luong_moi, với câu lệnh sau
Trang 98NGÔN NGỮ SQL
Cho biết danh sách nhân viên có lương trên 2 300 000,
với mỗi nhân viên như vậy các thông tin đưa ra gồm: mã nhân viên, họ tên, mã đơn vị và lương.
SELECT manv, ho_ten, ma_dv, luong
WHERE luong > 2 300 000
41
Trang 100NGÔN NGỮ SQL
Có thể tìm biết tên và mã các dự án mà địa điểm có chứa từ
‘UBND’ bằng câu sau:
SELECT ma_da, ten_da, dia_diem_da
WHERE dia_diem_da LIKE ‘%UBND%’
43
Trang 103NGÔN NGỮ SQL
Câu hỏi: “Có bao nhiêu nhân viên lương cao hơn 3 000 000 ?”
có thể viết như sau:
SELECT COUNT(*) AS vip
WHERE luong > 3000 000
46
Trang 108NGÔN NGỮ SQL
Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’ Chúng ta có thể dùng truy vấn sau:
nhan_vien) AS hieuFROM nhan_vien
FROM nhan_vien);
51
Trang 109NGÔN NGỮ SQL
cùng
52
Trang 110NGÔN NGỮ SQL
53
Trang 113NGÔN NGỮ SQL
Điều kiện chọn (lọc) trong câu HAVING luôn
chứa ít nhất một hàm gộp, nếu không thì điều kiện này có thể chuyển vào câu WHERE.
Nên nhớ rằng hàm gộp không được dùng trong câu WHERE
56
Trang 114NGÔN NGỮ SQL
Trường hợp câu truy vấn có cả câu WHERE và câu HAVING (dĩ nhiên có cả câu GROUP BY), thì trước tiên điều kiện chọn ở câu WHERE được áp
dụng các bộ thỏa điều kiện này được tạo thành các nhóm do câu GROUP
BY Tiếp theo, câu HAVING loại đi những nhóm không thỏa điều kiện đặt sau từ HAVING Các nhóm còn lại được câu SELECT sử dụng để tạo ra các bộ là kết quả của câu truy vấn.
Trang 116Các truy vấn lồng nhau
Trang 117Các truy vấn lồng nhau
cùng
60
NGÔN NGỮ SQL
Trang 118Các truy vấn lồng nhau
61
NGÔN NGỮ SQL
Trang 119Các truy vấn lồng nhau
Trang 120Các truy vấn lồng nhau
Trang 121Các truy vấn lồng nhau
SELECT ho_ten
FROM nhan_vien
WHERE luong > SOME
(SELECT luong FROM nhan_vien
WHERE ma_dv IN
(SELECT ma_dv FROM phong
WHERE ten_phong = ‘Kỹ thuật’) 64
);