Professional Documents
Culture Documents
CSDLNC
CSDLNC
// DROP VIEW
DROP VIEW view_name;
Trigger: Một "SQL trigger" là một đối tượng cơ sở dữ liệu liên quan đến một bảng
và tự động thực hiện một tập hợp các câu lệnh SQL khi một sự kiện cụ thể xảy ra trên
bảng đó. Trigger được sử dụng để áp dụng các quy tắc kinh doanh, duy trì tính toàn
vẹn dữ liệu và tự động hóa một số hành động trong cơ sở dữ liệu.
Trigger work: Các "SQL trigger" được định nghĩa bằng các câu lệnh SQL và liên
quan đến một bảng cụ thể. Khi sự kiện trigger được xác định (ví dụ, INSERT,
UPDATE, DELETE) xảy ra trên bảng đó, mã trigger liên quan sẽ tự động được thực
hiện. Mã trigger có thể bao gồm các câu lệnh SQL có thể thay đổi dữ liệu trong cùng
hoặc các bảng khác, áp dụng ràng buộc, hoặc thực hiện các hành động khác. Các
trigger được thực hiện trong phạm vi giao dịch, và chúng có thể được định nghĩa để
thực hiện trước hoặc sau sự kiện trigger.
Benifits: Các lợi ích của việc sử dụng SQL trigger bao gồm:
1. Tính toàn vẹn dữ liệu: Trigger cho phép bạn áp dụng các quy tắc và ràng buộc kinh
doanh phức tạp tại cấp độ cơ sở dữ liệu, đảm bảo rằng dữ liệu luôn duy trì tính nhất
quán và chính xác.
2. Tự động hóa: Trigger có thể tự động hóa các nhiệm vụ lặp lại hoặc phức tạp bằng
cách thực hiện các hành động được xác định trước mỗi khi xảy ra một sự kiện cụ thể.
Điều này giảm thiểu cần thiết phải can thiệp thủ công và tăng cường hiệu suất.
3. Hệ thống theo dõi: Trigger có thể được sử dụng để theo dõi các thay đổi được thực
hiện trên dữ liệu, chẳng hạn như ghi lại sự thay đổi trong một bảng kiểm tra. Điều này
hỗ trợ trong việc kiểm tra và duy trì một lịch sử của các thay đổi dữ liệu.
4. Kiểm tra dữ liệu: Trigger có thể thực hiện các kiểm tra xác nhận dữ liệu bổ sung,
cập nhật hoặc xóa trước khi chúng được thực hiện, đảm bảo chỉ có dữ liệu hợp lệ và
tuân thủ được lưu trữ trong cơ sở dữ liệu.
CREATE TRIGGER tên_trigger ON tên_bảng
FOR {DELETE, INSERT, UPDATE}
AS
câu_lệnh_sql
-- Tạo trigger sau mỗi INSERT, UPDATE, DELETE trên bảng Products
CREATE TRIGGER tr_ProductsChanges
ON Products
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
-- Kiểm tra loại thay đổi (INSERT, UPDATE, DELETE)
DECLARE @ChangeType VARCHAR(10);
IF EXISTS (SELECT * FROM INSERTED) AND EXISTS (SELECT * FROM
DELETED)
SET @ChangeType = 'UPDATE';
ELSE IF EXISTS (SELECT * FROM INSERTED)
SET @ChangeType = 'INSERT';
ELSE
SET @ChangeType = 'DELETE';
END;
/* cập nhật hàng trong kho sau khi đặt hàng hoặc cập nhật */
CREATE TRIGGER trg_DatHang ON tbl_DatHang AFTER INSERT AS
BEGIN
UPDATE tbl_KhoHang
SET SoLuongTon = SoLuongTon - (
SELECT SoLuongDat
FROM inserted
WHERE MaHang = tbl_KhoHang.MaHang
)
FROM tbl_KhoHang
JOIN inserted ON tbl_KhoHang.MaHang = inserted.MaHang
END
GO
/* cập nhật hàng trong kho sau khi cập nhật đặt hàng */
CREATE TRIGGER trg_CapNhatDatHang on tbl_DatHang after update AS
BEGIN
UPDATE tbl_KhoHang SET SoLuongTon = SoLuongTon -
(SELECT SoLuongDat FROM inserted WHERE MaHang =
tbl_KhoHang.MaHang) +
(SELECT SoLuongDat FROM deleted WHERE MaHang =
tbl_KhoHang.MaHang)
FROM tbl_KhoHang
JOIN deleted ON tbl_KhoHang.MaHang = deleted.MaHang
end
GO
/* cập nhật hàng trong kho sau khi hủy đặt hàng */
create TRIGGER trg_HuyDatHang ON tbl_DatHang FOR DELETE AS
BEGIN
UPDATE tbl_KhoHang
SET SoLuongTon = SoLuongTon + (SELECT SoLuongDat FROM deleted
WHERE MaHang = tbl_KhoHang.MaHang)
FROM tbl_KhoHang
JOIN deleted ON tbl_KhoHang.MaHang = deleted.MaHang
END
//
Function: có 2 loại function Buitlt-in function + Userdefined functions
-- Tạo hàm
CREATE FUNCTION CalculateSum(@num1 INT, @num2 INT)
RETURNS INT
AS
BEGIN
DECLARE @result INT;
SET @result = @num1 + @num2;
RETURN @result;
END;
-- Sử dụng hàm
DECLARE @result INT;
SET @result = dbo.CalculateSum(3, 5);
-- In kết quả
PRINT 'Sum: ' + CAST(@result AS VARCHAR);
CREATE FUNCTION fuNhanvien
( @nhanvien_id INT )
RETURNS VARCHAR(50)
AS
BEGIN
RETURN @nhanvien_name;
END;
USE [test]
GO
SELECT dbo.fuNhanvien(8);
GO
// Objects
Trong ngôn ngữ SQL (Structured Query Language), thuật ngữ "objects" thường
được sử dụng để chỉ các đối tượng cơ sở dữ liệu. Các đối tượng này bao gồm
bảng, view, index, stored procedure, function, trigger, và nhiều thành phần khác
liên quan đến quản lý và tổ chức dữ liệu trong cơ sở dữ liệu.
2. View: Là một bảng ảo được tạo từ kết quả của một truy vấn SQL. Nó không lưu trữ
dữ liệu mà chỉ là một cách thuận tiện để xem và truy cập dữ liệu từ nhiều bảng hoặc
theo điều kiện cụ thể.
3. Index: Là một cấu trúc dữ liệu giúp tăng tốc độ truy vấn bằng cách tạo ra một danh
sách được sắp xếp hoặc thứ tự từ một hoặc nhiều cột.
4. Stored Procedure: Là một tập hợp các câu lệnh SQL được đặt tên và lưu trữ trong
cơ sở dữ liệu để thực hiện một công việc cụ thể.
5. Function: Là một khối lệnh SQL có thể nhận tham số đầu vào, thực hiện một loạt
các câu lệnh, và trả về một giá trị.
6. Trigger: Là một đối tượng được kích hoạt tự động khi một sự kiện cụ thể xảy ra
trong cơ sở dữ liệu, thường được sử dụng để thực hiện các hành động tự động hoặc
kiểm soát dữ liệu.
Các đối tượng này đóng vai trò quan trọng trong quản lý và tương tác với dữ liệu
trong hệ thống cơ sở dữ liệu.
1. Mô hình quan hệ
2. Mô hình erd
Ưu điểm của CSDL:
1. Phân quyền người dùng: CSDL có quy mô người dùng và quản trị viên, giúp quản
lý quyền truy cập và nhiệm vụ một cách linh hoạt.
2. Thông tin người dùng: Thông tin của người dùng và quản trị viên được lưu trữ
trong bảng `informations_users` và `informations_admins`, giúp quản lý thông tin cá
nhân một cách riêng biệt.
3. Quản lý tài khoản: Bảng `accounts` giúp theo dõi và quản lý quyền của người dùng
và quản trị viên, cung cấp một cơ sở để xác định vai trò của từng tài khoản.
4. Quản lý sản phẩm và danh mục: Bảng `products` và `categories` giúp tổ chức và
phân loại sản phẩm một cách có tổ chức.
5. Quản lý đơn hàng: Bảng `orders` và `order_details` giúp theo dõi thông tin đơn
hàng và chi tiết đơn hàng một cách hiệu quả.
1. Thiếu mối quan hệ giữa `admins` và `users`: Mặc dù có bảng `accounts` để quản lý
quyền, nhưng không có mối quan hệ trực tiếp giữa `admins` và `users`. Điều này có
thể tạo khó khăn khi muốn thêm các quản trị viên hoặc người dùng mới.
2. Không có bảng `carts` cho người dùng: Dữ liệu giỏ hàng của người dùng được lưu
trong bảng `carts`, nhưng không có mối quan hệ với người dùng (`users`). Có thể xem
xét việc thêm một khóa ngoại để kết nối giỏ hàng với người dùng.
4. Không có hệ thống theo dõi lịch sử: Không có bảng hoặc cơ chế nào để theo dõi
lịch sử thay đổi trong dữ liệu, điều này có thể khiến cho việc quản lý và theo dõi sự
thay đổi trở nên khó khăn.
Lưu ý rằng đánh giá ưu điểm và nhược điểm phụ thuộc vào yêu cầu cụ thể của ứng
dụng và sự phức tạp của nó. Đôi khi, cấu trúc cơ sở dữ liệu có thể phải được điều
chỉnh tùy thuộc vào các yêu cầu và yếu tố cụ thể của ứng dụng.
7. Tính Toàn Vẹn Các Ràng Buộc Về Thông Tin Người Dùng:
- `informations_admins` và `informations_users` đặt ra ràng buộc thông tin cá nhân
của người dùng và quản trị viên, giúp đảm bảo tính toàn vẹn và liên kết với bảng
chính.
Đối với mỗi bảng, ràng buộc này đảm bảo rằng dữ liệu trong cơ sở dữ liệu là tính toàn
vẹn, chính xác và có liên kết chặt chẽ giữa các phần khác nhau của hệ thống.
2. Cloud:
- Public Cloud (Đám mây công cộng): Sử dụng dịch vụ của các nhà cung cấp đám
mây như Amazon Web Services (AWS), Microsoft Azure, hoặc Google Cloud
Platform.
- Ưu điểm: Linh hoạt, mở rộng dễ dàng, chi phí linh hoạt theo nhu cầu sử dụng.
- Nhược điểm: Tùy thuộc vào mạng internet, có thể phát sinh chi phí dựa trên sử
dụng.
- Private Cloud (Đám mây riêng): Môi trường đám mây được triển khai và quản lý
riêng biệt cho tổ chức.
- Ưu điểm: Kiểm soát cao hơn so với đám mây công cộng, cung cấp tính linh hoạt
và mở rộng.
- Nhược điểm: Chi phí triển khai và duy trì cao.
- Hybrid Cloud (Đám mây lai): Kết hợp giữa cơ sở dữ liệu trên đám mây và cơ sở
dữ liệu truyền thống.
- Ưu điểm: Kết hợp lợi ích của cả hai mô hình, độ linh hoạt cao.
- Nhược điểm: Quản lý độ phức tạp, đòi hỏi kỹ năng quản lý từ các nhóm IT.
4. Edge Computing:
- Đặt server gần nơi mà dữ liệu được tạo ra để giảm độ trễ và tăng hiệu suất.
- Ưu điểm: Giảm độ trễ, tăng hiệu suất cho ứng dụng có độ phức tạp cao.
- Nhược điểm: Yêu cầu việc quản lý phức tạp hơn tại các địa điểm phân tán.
Lựa chọn về nơi đặt server cơ sở dữ liệu phụ thuộc vào một loạt các yếu tố kỹ
thuật, kinh tế, và chiến lược doanh nghiệp
// Cơ sở phân tán
Chức năng:
1. Khả năng làm việc độc lập
2. Xử lý truy vấn phân tán
3. Xử lý giao dịch phân
4. Giao dịch minh