1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 3 Thiết kế bảng

47 302 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 2,86 MB

Nội dung

 Giá trị NULL dùng để chỉ các giá trị chưa biết, không thể dùng được, hay sẽ được bổ sung sau..  Mặc định các cột hay kiểu dữ liệu của người dùng thường không có gía trị NULL...  Tạo

Trang 1

Chương 3

1

Trang 2

 Nhận biết được các đối tượng

trong 1 CSDL của SQL Server

 Chọn kiểu dữ liệu SQL Server thích

hợp cho yêu cầu lưu trữ dữ liệu, và

tạo kiểu dữ liệu theo nhu cầu

Trang 5

Mở Folder chưa đối tương cần xem

Trang 7

 Giá trị NULL dùng để chỉ các giá trị chưa biết, không thể dùng được, hay sẽ được bổ sung sau Nó khác với giá trị rỗng (empty) hay zero Hai giá trị null không được xem

là bằng nhau Khi so sánh hai giá trị null, hay 1 giá trị null với 1 giá trị khác thì kết quả trả về sẽ là unknown.

 Ví dụ: số phone của khách hàng hiện tại chưa có, nhưng

có thể sẽ được bổ sung này Số phone sẽ có giá trị là

null.

 Để kiểm tra giá trị null trong lệnh truy vấn, phải dùng toán tử IS NULL hay IS NOT NULL trong mệnh đề

WHERE.

 Mặc định các cột hay kiểu dữ liệu của người dùng

thường không có gía trị NULL.

7

Trang 8

 Tạo kiểu dữ liệu người dùng là để bảo đảm tính thống nhất của dữ liệu ( data

consistency) khi m à nhiều bảng phải lưu

trữ cùng 1 loại dữ liệu trong 1 cột

 Kiểu dữ liệu của người dùng được tạo dựa

vào các kiểu dữ liệu hệ thống.

 Chỉ có tác dụng trong CSDL mà nó được

tạo ra ngoại trừ trường hợp nó được tạo ra trong CSDL hệ thống model

8

Trang 10

Dùng Enterprise Manager để tạo

Nhấp phải tại folder

User Defined Data Type ,

chọn lệnh

New User Defined Data Type

Trang 11

 Bảng là một đối tượng của CSDL được

dùng để lưu trữ dữ liệu

 Dữ liệu trong bảng được tổ chức thành các

hàng (rows) và cột (columns)

 Mỗi hàng trong bảng biểu diễn một bản ghi

(record) duy nhất Mỗi cột biểu diễn một thuộc tính (attribute).

 Tên cột trong 1 bảng không được trùng nhau

nhưng cho phép tên cột có thể trùng nhau trong

những bảng khác nhau của cùng 1 CSDL.

 SQL Server cho phép:

 Tối đa 2 triệu bảng trong 1 CSDL.

 Tối đa 1024 cột trong 1 bảng

 Tối đa 8060 bytes trong 1 hàng

11

Trang 12

 Phải có quyền tạo và thay đổi cấu

trúc bảng, nếu không sẽ sinh ra lỗi

 Tên bảng phải là từ định danh hợp lệ

 Với phiên bản SQL Server 6.5 hoặc

các phiên bản trước nữa thì sẽ không thay đổi được kiểu dữ liệu cột hoặc

thêm cột cho một bảng dữ liệu

12

continued

Trang 13

 Không thể thay đổi dữ liệu cột hoặc

huỷ cột mà có tham chiếu chỉ mục

 Không thể xóa 1 bảng nếu có bất kỳ phụ thuộc giữa bảng đó với các đối

tượng khác của SQL Server

13

continued

Trang 16

Cú pháp:

column_name AS computed_column_expression

Là một cột ảo không được lưu trữ vật lý trong

bảng Nó được tính toán dựa vào các cột khác

trong cùng bảng thông qua 1 biểu thức

Ví dụ : cost AS price * qty.

Có thể được dùng trong mệnh đề SELECT,

WHERE, hay ORDER BY

Không thể dùng trong lệnh INSERT hay UPDATE

Có thể được dùng như giá trị khóa trong chỉ

mục hay 1 phần của các ràng buộc PRIMARY

KEY hay UNIQUE nếu gía trị của nó được định

nghĩa bởi 1 biêu thức xác định và kiểu dữ liệu của giá trị trả về hợp lệ.

Ví dụ: Cột tính toán a+b c ó thể được dùng làm chỉ mục

nhưng a+DATEPART(dd, GETDATE()) kh ông thể dùng làm chỉ mục

16

Trang 17

CREATE TABLE cthoadon

( sohd int NOT NULL,

MaHang char(4) NOT NULL,

SoLuong int NOT NULL,

DonGia money,

ThanhTien AS SoLuong*DonGia

)

17

Trang 18

 Tạo giá trị gia tăng duy nhất cho 1 cột, và cột này thường được dùng khoá chính cho bảng Giá trị được gán thường là các kiểu

dữ liệu sau: tinyint, smallint, int, bigint,

decimal(p,0), hay numeric(p,0).

 Trong mỗi bảng chỉ cho phép 1 cột là

identity mà thôi.

tiếp.

 Giá trị mặc định thường là (1,1).

18

Trang 19

CREATE TABLE jobs

(

job_id smallint IDENTITY(1,1) ,

job_desc varchar(50) NOT NULL

)

19

Trang 20

Để bảo đảm chất lượng (quality)

của dữ liệu trong 1 CSDL.

Domain integrity (bảo toàn miền)

Entity integrity (bảo toàn thực thể)

Referential integrity (bảo toàn tham chiếu)

User-defined integrity (bảo toàn do

người dùng quy định)

20

Trang 21

 Ví dụ: trường phone phải có dạng ‘0914-071569’

 Dãy giá trị cho phép :

 Ví dụ: trường tuổi chỉ trong khoảng 1-100, trường

lương trong khoảng từ 0-10.000.000

21

Trang 22

Entity integrity — xác định mỗi hàng như 1 thực thể

duy nhất trong bảng

Referential integrity — bảo toàn mối quan hệ giữa

hai bảng, bảo đảm các giá trị khoá được thống nhất giữa các bảng có quan hệ nhau Không có tham chiếu khi không tồn tại giá trị khoá trong bảng chính, và nếu giá trị khoá thay đổi thì tất cả các tham chiếu đến nó cũng thay đổi thống nhất theo Khi áp dụng quy luật bảo toàn tham chiếu, người dùng không thể:

 Thêm các bản ghi vào bảng được quan hệ (related table) nếu không có bản ghi tương ứng trong bảng chính (primary table).

 Thay đổi giá trị trong bảng chính làm cho các bản ghi trong bảng được quan hệ bị mất mối liên kết ( orphaned record)

 Xoá các bản ghi trong bảng chính nếu tồn tại 1 số bản ghi

trong bảng được quan hệ.

22

Trang 23

 SQL server 2000 hỗ trợ các loại constraint sau :

 Các ràng buộc dùng để bảo đảm các giá trị

của dữ liệu không vi phạm quy luật bảo toàn

Trang 24

 C ú pháp: DEFAULT constant_expression

 Default dùng để xác định giá trị “sẵn trước” được gán cho 1 cột khi thêm 1 bản ghi mới vào bảng.

 DEFAULT có thể áp dụng cho bất kỳ cột nào trong bảng ngoại trừ cột có kiểu timestamp

hay có thuộc tính IDENTITY.

chuỗi ký tự, hàm hệ thống, hay giá trị NULL.

24

Trang 25

CREATE TABLE jobs

(

job_id smallint IDENTITY(1,1) ,

job_desc varchar(50) NOT NULL

DEFAULT 'New Position - title not

formalized yet'

)

25

Trang 26

< column_constraint > ::=

[ CONSTRAINT constraint_name ]

    { [ NULL | NOT NULL ]

        | [ { PRIMARY KEY | UNIQUE }     ]

Trang 27

 Là loại ràng buộc để thực thi quy luật bảo toàn thực thể cho 1 cột hay 1 nhóm cột thông qua 1 chỉ mục (index)

 Mỗi bảng chỉ có thể có duy nhất 1 ràng buộc

primary key nhưng có thể có nhiều ràng

Trang 28

 Ràng buộc UNIQUE được dùng cho các cột không phải là primary key

ràng buộc unique.

KEY nhưng nó cho phép 1 hàng được

quyền có giá trị NULL

unique nhưng chỉ có 1 ràng buộc primary key mà thôi.

28

Trang 29

CREATE TABLE jobs

(

job_id smallint PRIMARY KEY

job_desc varchar(50) NOT NULL

DEFAULT 'New Position - title not

formalized yet' )

29

Trang 30

(telephone directory) trong đó dữ liệu được sắp xếp bởi tên thuê bao

30

Trang 31

Chỉ mục nonclustered: là chỉ mục có cấu trúc riêng biệt độc lập với thứ tự vật lý

của bảng dữ liệu.

Thứ tự vật lý của chỉ mục nonclustered không trùng với thứ tự các bản ghi trong bảng dữ liệu

Tương tự như chỉ mục trong textbook

chỉ mục nonclustered để chỉ mục

nonclustered không cần phải tạo lại.

mục nonclustered

31

Trang 32

 Quan hệ chỉ có thể được tạo ra giữa các bảng trong cùng 1 CSDL và trên cùng 1

có thể tham chiếu đến 253 bảng khác nhau

32

Trang 33

[FOREIGN KEY ]

REFERENCES ref_table [ ( ref_column ) ]

[ ON DELETE { CASCADE | NO ACTION } ]

ON UPDATE { CASCADE | NO ACTION } ]

  

33

Trang 34

 ON DELETE {CASCADE | NO ACTION}

 Xác định hành động cần phải thực hiện cho 1 hàng trong bảng đang tạo nếu hàng đó có

quan hệ tham chiếu và hàng tham chiếu bị

xoá khỏi bảng chính Mặc định là NO ACTION

 CASCADE: dùng để xác định là hàng sẽ bị xoá khỏi bảng tham chiếu nếu hàng đó bị xoz1 khỏi bảng chính

 NO ACTION: SQL Server sẽ đưa ra thông báo lỗi và việc xoá hàng trên bảng chính sẽ bị từ chối.

34

Trang 35

CREATE TABLE Employee

( EmpID int primary key NOT NULL,

LastName varchar(20) NOT NULL,

FirstName varchar(10) NOT NULL,

job_id smallint NOT NULL DEFAULT 1

REFERENCES jobs(job_id)

)

35

Trang 36

CONSTRAINT constraint_name CHECK (check_logic)

Check_logic: biểu thức với các

toán tử số học, toán tử quan hệ

'[0-9][0-9][0-9][0-9]')

50000)

('Berkeley', 'Boston', 'Chicago', ' Dallas‘))

36

Trang 37

 C ó th ể tạo ràng buộc theo 2 mức :

        { ( column [ ASC | DESC ] [ , n ] ) } ]

    | FOREIGN KEY [ ( column [ , n ] ) ]

      EFERENCES ref_table [ ( ref_column [ , n ] ) ]

        [ ON DELETE { CASCADE | NO ACTION } ]

        [ ON UPDATE { CASCADE | NO ACTION } ]

        [ NOT FOR REPLICATION ]

    | CHECK [ NOT FOR REPLICATION ]

        ( search_conditions )

    }

37

Trang 38

 Tạo 1 ràng buộc khoá chính ở mức

bảng

CREATE TABLE cthoadon

( sohd int NOT NULL,

MaHang char(4) NOT NULL,

SoLuong int NOT NULL,

Trang 39

 Để kiểm tra xem bảng đã được tạo

hay chưa?

sp_help table_name

 Để kiểm tra xem kiểu dữ liệu của

người dùng đã được tạo hay chưa?

sp_help datatype_name

39

Trang 40

Không thể sửa đổi một cột nếu:

 Nó là 1 cột tính toán hay được dùng

để định nghĩa cột tính toán

 Nó được dùng làm chỉ mục

 Được dùng trong các ràng buộc

(constraint) loại check hay unique

 Nó được dùng làm khoá chính hay

khoá ngoại

40

Trang 41

 Để sửa đổi cấu trúc 1 cột:

ALTER TABLE table_name

NULL]

ALTER TABLE table_name

ADD { [ < column_definition > ]

 |  column_name AS computed_column_expression } [ , n ]

ALTER TABLE table_name

DROP COLUMN column_name

41

Trang 42

 Thêm cột address vào bảng Employee

Alter table Employee

Add column address varchar(30)

42

Trang 44

 [WITH CHECK | WITH NOCHECK] được dùng để xác định xem dữ liệu đang có trong bảng có bị kiểm tra hay không khi 1 ràng buộc mới vừa được thêm vào hay khi 1 ràng buộc cũ hoạt động trở lại.

nó vi phạm ràng buộc, vì vậy để tránh việc kiểm tra dữ liệu và cho phép thêm ràng buộc này  dùng tuỳ chọn WITH NOCHECK

CREATE TABLE doc_exd ( column_a INT)

INSERT INTO doc_exd VALUES (-1)

ALTER TABLE doc_exd WITH NOCHECK

ADD CONSTRAINT exd_check

CHECK (column_a > 1)

44

Trang 45

 { CHECK | NOCHECK } CONSTRAINT

        { ALL | constraint_name [ , n ] }

Để cho phép ràng buộc constraint_name

được hoạt động (enabled) hay bị cấm

(disabled)

Tuỳ chọn này chỉ dùng cho các ràng buộc FOREIGN KEY và CHECK

45

Trang 46

Tạo bảng

CREATE TABLE cnst_example

(id INT NOT NULL, name VARCHAR(10) NOT

NULL,

salary MONEY NOT NULL CONSTRAINT

salary_cap CHECK (salary < 100000) )

Báo lỗi khi thêm bản ghi mới vi phạm ràng

buộc

INSERT INTO cnst_example VALUES (3,"Pat

Jones",105000)  bị báo lỗi

Cấm ràng buộc hoạt động

ALTER TABLE cnst_example

NOCHECK CONSTRAINT salary_cap

Lệnh thêm bản ghi mới thành công

INSERT INTO cnst_example VALUES (3,"Pat

Jones",105000)

Cho ràng buộc hoạt động trở lại

ALTER TABLE cnst_example

CHECK CONSTRAINT salary_cap 46

Ngày đăng: 12/05/2014, 12:08

HÌNH ẢNH LIÊN QUAN

Bảng thông qua 1 biểu thức. - Chương 3 Thiết kế bảng
Bảng th ông qua 1 biểu thức (Trang 16)

TỪ KHÓA LIÊN QUAN

w