Professional Documents
Culture Documents
1 • Tổng quan
3 • Khung nhìn
5 • Trigger
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)
• 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
• 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.
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
Ví dụ
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
Ví dụ
EMPLOYEE Dep1v3
thay đổi thay đổi
Ví dụ
Ví dụ
Ví dụ
Ví dụ
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
Đị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)
• 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
Ý 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.
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
Cú pháp
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í
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
Xử lý lỗi với lệnh TRY ... CATCH
Phát sinh lỗi với lệnh RAISERROR
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ị.
Ý 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
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
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
Ví dụ 1
Ví dụ 2
Ví dụ 3
Ví dụ 4