Ở bài trước bạn đã hiểu cách tạo database rồi, vậy thì trong bài này mình sẽ nói đến một thành phần khá hay trong SQL Server đó là schema. Nội dung bài sẽ giải thích Schema là gì, tại sao nên sử dụng Schema? Cách tạo và quản lý schema trong SQL Server.
1. Schema là gì?
Schema là một khái niệm mới được đưa vào SQL Server từ phiên bản 2005, nó là một namespace dùng để gom nhóm các table có chung một đặc điểm nào đó đễ dễ dàng quản lý. Nếu bạn không sử dụng schema trong CSDL thì nó sẽ lấy schema mặc định là dbo
.
Ví dụ trong lược đồ CSDL của bạn có hai loại table chính như sau:
- Các table về tin tức -> mình sẽ tạo schema tên là
news
gồm những table liên quan đến tin tức - Các table hệ thống -> mình sẽ tạo schema tên là
sys
gồm những table liên quan đến hệ thống
Trong một database thì tên của schema là duy nhất, luôn được chỉ định với cú pháp: server.database.schema.object
.
Bài viết này được đăng tại [kiso.vn]
Ưu điểm: Khi bạn phân nhóm các table lại thì sẽ rất dễ dàng quản lý, và bạn có thể phân quyền quản lý từng schema cho từng user khác nhau, đây chính là điểm mạnh của schema.
2. Cách tạo Schema với lệnh Create Schema
SQL Server cung cấp đầy đủ công cụ giao diện đồ họa đến công cụ dòng lệnh nên bạn có hai cách để tạo schema:
- Cách thứ nhất là sử dụng công cụ SSMS.
- Cách thứ hai là sử dụng lệnh Create Schema.
Sử dụng SSMS thì bạn click chuột phải vào database và chọn Create schema, còn trong bài này mình sẽ hướng dẫn sử dụng tạo bằng dòng lệnh CREATE SCHEMA.
Như ở ví dụ trên, bây giờ mình sẽ tạo hai schema tên là news
và sys
.
CREATE SCHEMA news; CREATE SCHEMA sys;
3. Cách xóa Schema với lệnh DROP SCHEMA
Sau khi tạo schema xong nếu bạn không dùng tới thì hãy sử dụng lệnh DROP SCHEMA nhé.
DROP SCHEMA news; DROP SCHEMA sys;
4. Phân quyền cho schema
Giả sử bạn muốn user thehalfheart
có quyền quản lý cho schema news
thì chỉ cần sử dụng lệnh GRANT, còn xóa quyền thì dùng lệnh DENY.
Cấp quyền:
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: news TO thehalfheart
Xóa quyền:
DENY SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: news TO thehalfheart;
Như vậy việc phân nhóm như thế này giúp lược đồ cơ sở dữ liệu của bạn trông chuyên nghiệp hơn, dễ dàng phân quyền và bảo mật hơn.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Schema là gì?2. Cách tạo Schema với lệnh Create...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Schema là gì?2. Cách tạo Schema với lệnh Create Schema3. Cách xóa Schema với lệnh DROP SCHEMA4. Phân quyền cho schema 1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Schema là gì?2. Cách tạo Schema với lệnh Create Schema3. Cách xóa Schema với lệnh DROP SCHEMA4. Phân quyền cho schema V. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Schema là gì?2. Cách tạo Schema với lệnh Create Schema3. Cách xóa Schema với lệnh DROP SCHEMA4. Phân quyền cho schema V. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Schema là gì?2. Cách tạo Schema với lệnh Create Schema3. Cách xóa Schema với lệnh DROP SCHEMA4. Phân quyền cho schema III. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập...