You are on page 1of 43

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

QUẢN TRỊ THÀNH PHẦN SQLSERVER


NỘI DUNG
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

1 • Tổng quan

2 • Bảng lưu trữ

3 • Khung nhìn

4 • Thủ tục lưu trữ (hàm)

5 • Trigger

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.1. TỔNG QUAN VỀ CÁC THÀNH PHẦN CƠ SỞ DỮ LIỆU

 Các thành phần cơ sở dữ liệu


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu


Thành phần cấp hệ thống (system level)

Thành phần cấp người dùng (user level)
 Tra cứu thông tin về các thành phần cơ sở
dữ liệu

Công cụ SSMS

Khung nhìn hệ thống (system views)

Thủ tục hệ thống (system stored procedure)

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


CÁC LOẠI THÀNH PHẦN
CƠ SỞ DỮ LIỆU
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

TYPE TYPE DESCRITION


FN SQL_SCALAR_FUNCTION
IT INTERNAL_TABLE
P SQL_STORED_PROCEDURE
PK PRIMARY_KEY_CONSTRAINT
S SYSTEM_TABLE
SQ SERVICE_QUEUE
TR SQL_TRIGGER
U USER_TABLE
UQ UNIQUE_CONSTRAINT
V VIEW
Ths. Trịnh Hoàng Nam, namth@buh.edu.vn
4.1. BẢNG (TABLE)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Bảng dữ liệu (nhắc lại)

• Bảng biểu diễn quan hệ và các bộ dữ liệu của nó


• Bảng được lưu trữ vật lý trong tập tin dữ liệu chính với
các đơn vị lưu trữ là extent và page
• Bảng gồm các thành phần
• Thuộc tính
• Miền giá trị
• Ràng buộc toàn vẹn

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.1. BẢNG (TABLE)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Các thao tác trên bảng

• Các thao tác liên quan tới cấu trúc của bảng
• CREATE
• ALTER
• DROP
• Các thao tác liên quan tới dữ liệu trong bảng
• INSERT
• UPDATE
• DELETE
• SELECT

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Phát biểu vấn đề

• Mỗi nhân viên có cả trăm thông tin cá nhân ứng với từng đó thuộc
tính của bảng EMPLOYEE. Tuy nhiên, không phải bất kỳ ai, bất kỳ
ứng dụng nào cũng có thể/có nhu cầu sử dụng tất cả thông tin đó.
• Làm thế nào để giới hạn nội dung thông tin cho từng nhóm
người dùng hay ứng dụng dựa trên chức năng, nhiệm vụ riêng
biệt?

Ý tưởng
• Tạo các khung nhìn (view) khác nhau theo nhu cầu của từng nhóm
người dùng hay ứng dụng sử dụng dữ liệu.

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Khung nhìn hệ thống (system view)


• SQLServer tự tạo một số khung nhìn hệ thống dùng để
tra cứu thông tin về các đối tượng lưu trữ
• sys.indexes • sys.events
• sys.tables • sys.procedures
• sys.views • sys.triggers

Khung nhìn người dùng (user view)


• Người dùng tự quản lý khung nhìn của mình bằng các câu lệnh
• CREATE VIEW
• ALTER VIEW
• DROP VIEW
Ths. Trịnh Hoàng Nam, namth@buh.edu.vn
4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Bảng
• Định nghĩa bởi câu lệnh CREATE TABLE
• Dữ liệu trong bảng được lưu trữ vật lý
• Tồn tại mãi mãi cho đến khi có yêu cầu thay đổi

Khung nhìn
• Định nghĩa bởi biểu thức giống như câu truy vấn
• Dữ liệu trong khung nhìn không được lưu trữ vật lý
• Có thể truy vấn, thậm chí là thay đổi

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Cú pháp tạo khung nhìn


CREATE VIEW <view-name> AS <view-definition>
trong đó <view-definition> là câu truy vấn SQL

Ví dụ

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Khung nhìn có khả năng cập nhật


• Hiển nhiên, thay đổi trên bảng sử dụng trong câu truy vấn tạo khung
nhìn (bảng cơ sở) sẽ làm thay đổi bản thân khung nhìn đó
• Thậm chí, sự thay đổi trên khung nhìn (trong vài trường hợp) cũng
dẫn tới sự thay đổi tương tự trên bảng cơ sở

Ví dụ
• Giả sử EmployeeOnDep1 là khung nhìn với bảng cơ sở là Employee
• Xóa khung nhìn bằng lệnh DROP VIEW EmployeeOnDep1
• Xóa định nghĩa tạo khung nhìn; không ảnh hưởng tới bảng cơ sở
• Xóa bảng Employee bằng lệnh DROP TABLE Employee
• Xóa lược đồ và thể hiện của bảng Employee
• Khung nhìn EmployeeOnDep1 trở nên không sử dụng được

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ

EMPLOYEE Dep1v3
thay đổi thay đổi

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Dấu hiệu nhận biết khung nhìn cập nhật


• Không sử dụng từ khóa DISTINCT trong mệnh đề
SELECT
• Các thuộc tính trong mệnh đề SELECT đủ để khi một
bộ được thêm vào khung nhìn, một bộ tương ứng sẽ
được thêm vào bảng cơ sở
• Sử dụng một bảng cơ sở với một thể hiện duy nhất
trong mệnh đề FROM
• Không sử dụng câu truy vấn lồng liên quan tới bảng cơ
sở trong mệnh đề WHERE

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ

ĐIỀU GÌ XẢY RA VỚI BỘ MỚI THÊM VÀO 10001???

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.2. KHUNG NHÌN (VIEW)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ

ĐIỀU GÌ XẢY RA VỚI CÂU LỆNH SAU ĐÂY?

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.3. CHỈ MỤC (INDEX)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Phát biểu vấn đề


• Khi bảng có kích thước rất (rất) lớn, sẽ rất tốn kém khi phải duyệt
qua tất cả các dữ liệu trong bảng để tìm kiếm một vài giá trị cần thiết.
• Làm thế nào để tìm kiếm và hiển thị vài giá trị từ một bảng có
kích thước rất (rất lớn)?

Ví dụ
• Trong hơn 100,000 nhân viên của tập đoàn XYZ, chỉ có khoảng 10
nhân viên sinh ra tại tỉnh Hà Giang. Làm thế nào để tìm ra họ?
SELECT * FROM EMPLOYEE WHERE PoB = ‘HA GIANG’
QUÁ TỐN KÉM, PHẢI DÙNG CÁCH KHÁC?
Ths. Trịnh Hoàng Nam, namth@buh.edu.vn
4.3. CHỈ MỤC (INDEX)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ý tưởng
• Dữ liệu của bảng được lưu trữ trong nhiều trang, khi một dữ liệu
được yêu cầu, toàn bộ trang chứa nó sẽ được nạp vào bộ nhớ.
• Như vậy, sẽ tốt hơn nếu như tất cả dữ liệu được yêu cầu nằm tập
trung trong một (vài) trang nào đó.
• Nói cách khác, với ví dụ trên, chúng ta có thể:
• Sử dụng 63 hộp lưu trữ (đại diện cho 63 địa phương), trong mỗi hộp là vị
trí của dữ liệu nhân viên có nơi sinh là địa phương tương ứng
• Sử dụng cây nhị phân tìm kiếm có tất cả 63 nút, mỗi nút đại diện bởi một
địa phương và chứa vị trí của dữ liệu có nơi sinh tương ứng

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.3. CHỈ MỤC (INDEX)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Định nghĩa
• Chỉ mục là một cấu trúc dữ liệu dùng để tăng tốc độ truy cập dữ liệu
trong bảng dựa trên giá trị của một (số) thuộc tính cho trước
• Chỉ mục được thể hiện bởi cây nhị phân tìm kiếm với các cặp giá trị
(key, positions), trong đó positions là những vị trí trong quan hệ có
giá trị tương ứng với khóa key

Cú pháp
CREATE INDEX IDX_EMPLOYEE_POB ON EMPLOYEE(POB)

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.3. CHỈ MỤC (INDEX)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Chỉ mục trên khóa của quan hệ

• Truy vấn liên quan tới khóa thường được sử dụng; do đó, chỉ mục
trên khóa trở nên rất hữu dụng.
• Chỉ mục trên khóa giúp xác định duy nhất một vị trí chứa giá trị cần
tìm; do đó, giúp tăng tốc độ xử lý truy vấn

Các ngoại lệ khi tạo chỉ mục


• Chỉ mục được tạo trên thuộc tính ‘gần như là khóa’; chỉ mục giúp xác
định một vài vị trí cho mỗi giá trị của thuộc tính
• Chỉ mục được tạo trên thuộc tính ‘phân nhóm’; chỉ mục giúp xác định
các vị trí ứng với mỗi giá trị đại diện cho nhóm.

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.3. CHỈ MỤC (INDEX)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Chú ý khi sử dụng chỉ mục


• Chỉ mục được tạo trên một thuộc tính của quan hệ nhằm
tăng tốc độ truy xuất dữ liệu liên quan đến thuộc tính đó.
• Mỗi khi giá trị tại thuộc tính đó bị thay đổi (thêm mới,
chỉnh sửa, xóa), toàn bộ chỉ mục sẽ được xác định lại
• Do đó, hạn chế sử dụng chỉ mục, chỉ sử dụng chỉ mục khi
thật sự cần thiết.

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Phát biểu vấn đề


• Cùng một thao tác liệt kê tất cả các nhân viên cùng các dự án mà họ
tham gia với từng mã số đơn vị cho trước.
• Thao tác trên cần lần lượt thực hiện cho từng mã số đơn vị (5 script
với mã số đơn vị khác nhau).
• Làm thế nào để giải quyết vấn đề trên với chỉ một đoạn script
duy nhất?

Ý tưởng
• Xây dựng một ‘đoạn chương trình’ có tên gọi, nhận mã số đơn vị
như là dữ liệu đầu vào và thực hiện thao tác như yêu cầu.

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Giải pháp: sử dụng thủ tục lưu trữ

 SP là một tập các câu lệnh T-SQL thực hiện một nhiệm
vụ cụ thể, được đặt tên, lưu trữ trong CSDL dưới dạng đã
biên dịch
 SP cung cấp một phương pháp hữu ích cho việc thực thi
lặp lại cùng một nhiệm vụ

Giúp tái sử dụng code
 Sử dụng lời gọi SP mỗi khi thực thi

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Ví dụ: Đổi tên dự án


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Cú pháp
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Hai loại tham số


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu


Tham số đầu vào
 Tham số bắt buộc
 Bắt buộc phải truyền giá trị cho tham số này
 Tham số tùy chọn:
 Đã được gán giá trị mặc định.
 Nếu không truyền giá trị trong lời gọi thủ tục. Tham số sẽ nhận giá trị mặc
định.

Tham số đầu ra
 Sử dụng đề lấy kết quả trả về từ thủ tục
 Khai báo bằng từ khóa OUTPUT
 Hai cách truyền giá trị cho tham số

Truyền theo tên

Truyền theo vị trí

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 SP sử dụng một tham số đầu ra và một


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

tham số đầu vào

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Lời gọi thủ tục truyền tham số theo vị trí


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

 Lời gọi thủ tục truyền tham số theo tên

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Giá trị trả về của thủ tục


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu


Sử dụng tham số OUTPUT để trả về giá trị bất kỳ

Sử dụng hàm RETURN để trả về giá trị số nguyên

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Kiểm tra tính hợp lệ và tạo thông báo lỗi


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu


Xử lý lỗi với lệnh TRY ... CATCH

Phát sinh lỗi với lệnh RAISERROR

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)

 Xem nội dung SP lưu trữ trong CSDL


Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

sp_helptext [tên thủ tục]


 Chỉnh sửa nội dung SP
alter procedure ...
 Xóa SP
drop procedure ...

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.4. THỦ TỤC LƯU TRỮ
(STORE PROCEDURE - SP)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Bài tập 1

• Cài đặt thủ tục sp_RichestEmployee hiển thị thông tin chi tiết
về (các) nhân viên có lương cao nhất trong đơn vị với mã số
đơn vị là tham số đầu vào.

Bài tập 2

• Cài đặt thủ tục sp_BestEmployee hiển thị thông tin chi tiết về
(các) nhân viên có tổng số giờ làm cao nhất trong mỗi đơn
vị.

Bài tập 3
• Cài đặt thủ tục sp_CheckSalary kiểm tra lương của nhân
viên (với mã số nhân viên là tham số đầu vào) luôn thấp
hơn lương của trưởng đơn vị.

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Phát biểu vấn đề


 Làm thế nào để kiểm soát dữ liệu (gửi cảnh báo mỗi khi bị thay đổi)
 Làm thế nào để đảm bảo dữ liệu luôn đúng đắn khi mà ràng buộc
toàn vẹn không đáp ứng được, ví dụ:
 Nhân viên phải từ 18 tuổi trở lên
 Lương của nhân viên phải thấp hơn lương của trưởng phòng
 Thời gian tham gia dự án của nhân viên không vượt quá 40 giờ

Ý tưởng
• Sử dụng trigger để tự động thực hiện việc kiểm soát / kiểm tra sự
thay đổi của dữ liệu

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Trigger
 Một loại stored procedure đặc biệt ở trạng thái sẵn sàng, được kích
hoạt bởi câu lệnh thay đổi dữ liệu trên bảng hoặc khung nhìn

Các thành phần của trigger


• Tên trigger
• Bảng (khung nhìn) liên kết với trigger
• Thời điểm kích hoạt (FOR / AFTER / INSTEAD OF)
• Hành động kích hoạt (INSERT / UPDATE / DELETE)
• Các thao tác được thực hiện sau khi kích hoạt

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Câu lệnh tạo trigger


CREATE [ OR ALTER ] TRIGGER [schema_name.]trigger_name

ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ]
CHÚ Ý:
 Trigger ghi dòng dữ liệu mới (thêm mới, thay đổi) vào bảng Inserted
trong bộ nhớ cache
 Trigger ghi dòng dữ liệu cũ (bị xóa, thay đổi) vào bảng Deleted trong
bộ nhớ cache
Ths. Trịnh Hoàng Nam, namth@buh.edu.vn
4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Điều kiện áp dụng


 Cài đặt ràng buộc toàn vẹn
 Kiểm soát sự thay đổi dữ liệu trong bảng
 Kiểm tra dữ liệu nhập phù hợp với mối quan hệ giữa các
bảng
 Định nghĩa thông báo lỗi
 So sánh trạng thái trước và sau khi hiệu chỉnh

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ 1

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ 2

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ 3

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn


4.5. BẨY LỖI (TRIGGER)
Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu

Ví dụ 4

Ths. Trịnh Hoàng Nam, namth@buh.edu.vn

You might also like