CaiDat SQLServer

Go down

CaiDat SQLServer Empty CaiDat SQLServer

Post  vothithuong on Sat Mar 19, 2011 4:26 pm

Hướng dẫn thực hành môn QTCSDL

Mục đích:
- Ôn lại việc tạo bảng, khai báo các ràng buộc khóa chính, khóa ngoại.
- Thực hiện tạo Default
- Thực hiện khai báo ràng buộc toàn vẹn (RBTV) trên miền giá trị sử dụng Rule và Check Constraint
- Bài tập thực hành: QLSV (các mục 1,2,3.1  3.9)

Hướng dẫn:
- Đọc file QLSV.pdf, xem qua các RBTV sẽ phải cài đặt.
- Xác định kiểu dữ liệu cho các thuộc tính trong bảng dựa vào các RBTV.
- Thực hiện tạo các bảng, sử dụng SQL Query Analyzer

CREATE TABLE CHUONGTRINH (
MaCT char(3) NOT NULL ,
TenCT nvarchar(30) NOT NULL
)

- Thực hiện khai báo khóa chính

ALTER TABLE CHUONGTRINH
ADD CONSTRAINT PK_CHUONGTRINH PRIMARY KEY(MaCT)

- Thực hiện khai báo khóa ngoại

ALTER TABLE GIANGKHOA ADD
CONSTRAINT FK_GIANGKHOA_CHUONGTRINH FOREIGN KEY
(MACT) REFERENCES CHUONGTRINH(MaCT)

1. Thực hiện tạo default (giá trị mặc định)
o Tạo default ngay khi tạo bảng
Khai báo ngay trong script tạo bảng :
create table T (
col1 int,
col2 int default 1
)
Ví dụ :
drop table T
go
create table T (
col1 int,
col2 int default 1
)
go
insert into T(col1) values (2)
go
select * from T


o Tạo default sau khi tạo bảng
B1: tạo default

CREATE DEFAULT def_SttLop AS 0

B2: Gắn default vào một thuộc tính của bảng. Khi thực hiện bắt buộc default phải được tạo trước.

SP_BINDEFAULT ‘def_SttLop’, ‘Lop.SoThuTuLop’
/* Khi do: insert Lop(KhoaHoc,Khoa,ChuongTrinh) values(1,1,1)
tương đương với
insert Lop(KhoaHoc,Khoa,ChuongTrinh,SoThuTuLop)
values (1,1,1,0)
Gia tri mac dinh SoThuTuLop la 0
*/

- Gỡ bỏ default khỏi thuộc tính của bảng.
SP_UNBINDEFAULT 'Lop.SoThuTuLop'

- Hủy default. Khi dùng bắt buộc default phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP DEFAULT def_SttLop

2. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị
sử dụng check constraint

ALTER TABLE CHUONGTRINH
ADD Constraint c_MaCT CHECK (MaCT IN ('CT1','CT2'))

- Gỡ bỏ check constraint
ALTER TABLE ChuongTrinh
DROP CONSTRAINT c_MaCT

3. Thực hiện khai báo ràng buộc toàn vẹn miền giá trị sử dụng rule
B1: Tạo rule

CREATE RULE r_MACT
AS @MaCT IN ('CT1','CT2')

B2: Gắn rule vào một thuộc tính của bảng. Khi thực hiện bắt buộc rule phải được tạo trước.

SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'

Để thực hiện đồng thời B1 và B2. Thêm GO vào giữa.

CREATE RULE r_MACT
AS @MaCT in ('CT1','CT2')
GO
SP_BINDRULE 'r_MaCT', 'ChuongTrinh.MaCT'

- Gỡ bỏ rule khỏi thuộc tính của bảng.
SP_UNBINDRULE 'ChuongTrinh.MaCT'

- Hủy rule.
Khi dùng bắt buộc rule phải được gỡ bỏ khỏi tất cả các thuộc tính của bảng mà nó đã được gắn vào.
DROP RULE r_MACT
4. So sánh việc dùng rule và check constraint
o Constraint gắn đặc thù với một thuộc tính cụ thể của một bảng
o Rule có thể áp dụng cho nhiều thuộc tính của nhiều bảng khác nhau có cùng RBTV về miền giá trị  Sử dụng Rule khi có nhiều RBTV về miền giá trị giống nhau trong CSDL.
CREATE RULE r_SoTietToiDa
AS @SoTiet <= 120
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_LT'
GO
SP_BINDRULE 'r_SoTietToiDa', 'GiangKhoa.SoTiet_TH'


- Thực hiện khai báo các RBTV từ 3.1  3.9 tương tự. Một số hướng dẫn:
o 3.7: Sử dụng các hàm CEILING, FLOOR(làm tròn nguyên), hàm ROUND (làm tròn thực), toán tử % (modulo), hàm CAST (ép kiểu)
o 3.9: Sử dụng hàm getdate (lấy ngày hiện hành), hàm year (lấy năm từ một ngày).

- Khi gặp các vấn đề mới, các lỗi không rõ nguyên nhân, sử dụng SQL Server Books Online (nhấn Shift-F1 trong SQL Query Analyzer) để tìm hiểu ví dụ như:
o Tìm các hàm toán học (để làm tròn): Đánh “Mathematical Function” trong Index hay Search (tương tự cho “DateTime function”)
o Xem cú pháp CreateRule, Check Constraint, …
o Xem sử dụng Rule, Check Constraint thông qua Enterprise Manager: Đánh “Wizard” trong Search.

Bài tập ở nhà:
- Thực hiện RBTV miền giá trị sử dụng Rule và CheckConstraint trên bài Quản lý hàng hóa.
- Tìm hiểu cách sử dụng rule, check constraint, default thông qua SQL Enterprise Manager 200x.

Default



Check Constraint


Rule


vothithuong
vothithuong

Posts : 21
Join date : 2011-03-19

http://vothuong.forumvi.com

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum