Bài 2 Các đối tượng trong CSDL


Cùng tìm hiểu và cách tạo ra các đối tượng chính trong SQL: Database, Table, View ... 


Khái niệm về cơ sở dữ liệu

  • • Database dùng để
    • Chứa các bảng, bảng ảo, thủ tục nội,…
    • Mỗi database có một danh sách các người dùng
      • Người dùng phải có quyền truy cập database
      • Có thể phân nhóm người dùng để cấp quyền
      • Tử phiên bản SQL Server 2000 hỗ trợ Application Role
  • Các database hệ thống Master, Model, Tempdb, msdb
  • Các database ví dụ AdventureWorks, AdventureWorkDWs

Các tập tin vật lý lưu trữ cơ sở dữ liệu

  • • Một database bao gồm tối thiểu hai file
    • .mdf: lưu trữ các đối tượng trong database như table, view, …
      • Có thể bổ sung thêm các tập tin lưu trữ khác
      • Tổ chức tốt các tập tin lưu trữ giúp tăng tốc độ xử lý
    • .ldf: lưu trữ quá trình cập nhật/thay đổi dữ liệu
      • Hỗ trợ phục hồi dữ liệu
      • Hỗ trợ backup/restore dữ liệu
  • Các thông số về kích thước
    • Initial size
    • File growth
    • Maximum file size

Tạo database

USE master
GO
--Nếu đã tồn tại database QLBanHang rồi thì xóa đi và tạo mới
IF EXISTS (SELECT *  FROM MASTER.sys.DATABASES WHERE NAME=N'QLBanHang')
    --Xóa Database
    DROP DATABASE QLBanHang
GO
--Tạo database mới
CREATE DATABASE QLBanHang

Khái niệm về bảng

  • Bảng dùng để lưu trữ các thông tin của một đối tượng trong thực tế
    • Gồm có các dòng và các cột
    • Bảng trong CSDL thường có khoá chính (primary key)
    • Các bảng thường liên hệ với nhau bằng các mối quan hệ
    • Bảng được tạo trong các Schema (mặc định là schema dbo)
  • Bảng có thể có các ràng buộc (constraint), trigger

Các thuộc tính của bảng

  • Tên bảng
  • Tên cột
  • Kiểu dữ liệu
    • Độ dài dữ liệu
    • Số ký số lưu trữ
    • Số số lẻ lưu trữ
  • Thuộc tính trên cột
    • Allow null
    • Identity
    • Default value

Tạo cấu trúc bảng đơn giản

CREATE TABLE Tên_schema.Tên_bảng
(
Tên_cột1 Kiểu_dữ_liệu [NOT NULL] ,
Tên_cột2 Kiểu_dữ_liệu [NOT NULL] [, ...]
)

Ví dụ tạo bảng

CREATE TABLE vattu
(
    mavtu CHAR(4),
    tenvtu nvarchar(100) NOT NULL,
    dvtinh    nvarchar(10),
    phantram REAL,
    --Tạo khóa chính
    CONSTRAINT pk_vattu PRIMARY KEY(mavtu)
)

Khái niệm về bảng ảo

  • Được xây dựng từ câu truy vấn SELECT để hiển thị dữ liệu từ một hay nhiều bảng
    • Tập hợp dữ liệu, thể hiện cùng một dữ liệu nhưng theo nhiều cách khác nhau
    • Làm việc tương tự như một bảng nhưng không lưu trữ dữ liệu
    • Cho phép thêm/xoá/sửa
    • Bảo mật dữ liệu, bảo mật nội dung câu truy vấn dữ liệu
  • Một số hạn chế trong câu lệnh SELECT
    • Order By
    • Compute
    • Compute By

Tạo mới bảng ảo bằng CREATE VIEW

CREATE VIEW Tên_bảng_ảo
[(Tên_các_cột)]
[WITH ENCRYPTION]
AS Câu_lệnh_SELECT
[WITH CHECK OPTION]

Ví dụ tạo bảng ảo

CREATE VIEW vw_Vattu AS
SELECT * FROM vattu

Xem và cập nhật dữ liệu bảng ảo

  • Làm việc như một bảng thông thường sử dụng câu SELECT để xem dữ liệu Select * From vw_DonDH
  • Sử dụng INSERT/UPDATE để cập nhật dữ liệu
    • Chỉ có thể cập nhật vào một bảng
    • Để INSERT dữ liệu vào bảng, bảng ảo phải thỏa mãn các yêu cầu về khóa, ràng buộc khóa ngọai, các cột NOT NULL, các cột tính toán, order by, group by, distinct
  • Sử dụng Delete để xoá dữ liệu: bảng ảo tạo từ hai hay nhiều bảng không thể xoá
  • Có thể xây dựng các trigger trên bảng ảo

Cập nhật dữ liệu qua bảng ảo sử dụng trigger INSTEAD OF

  • Bảng ảo có nhiều hạn chế khi thực hiện cập nhật dữ liệu
    • Group By, Order By, Distinct
    • Thiếu cột khoá
    • Ràng buộc toàn vẹn
  • SQL Server cung cấp loại trigger INSTEAD OF
    • Cơ chế tương tự như trigger thông thường
    • Mở rộng khả năng cập nhật, tính toán dữ liệu, đặc biệt với bảng ảo
    • Xem thêm phần TRIGGER

Chia sẽ bài viết :


Bài viết liên quan