Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
467,81 KB
Nội dung
Các kháiniệmcơbảncủa DB2: Cácràngbuộc
Introduction
Giới thiệu
Phần này của bài viết mô tả sự khác biệt trong cấu trúc của DB2 và các quy trình SQL của
solidDB.
Không NULL
Duy nhất
Khóa chính
Khóa ngoại
Kiểm tra bảng
Còn có một loại ràngbuộc nữa được biết đến, là ràngbuộc thông tin. Không giống như năm loại
ràng buộc được liệt kê ở trên, ràngbuộc thông tin không được người quản trị cơ sở dữ liệu chú
trọng, nhưng nó có thể được sử dụng trong trình biên dịch SQL để cải thiện hiệu suất truy vấn.
Bài viết này chỉ tập trung vào các loại ràngbuộc trong danh sách trên.
Bạn có thể xác định được một hoặc nhiều ràngbuộccủa DB2 khi tạo một bảng mới, hoặc về sau
bạn có thể xác định một số ràngbuộc khi thay đổi bảng. Các câu lệnh CREATE TABLE rất phức
tạp. Trong thực tế, nó phức tạp đến nỗi người ta chỉ sử dụng một phần nhỏ củacác tùy chọn khi
định nghĩa ràngbuộc hạn chế, nhưng bản thân tùy chọn tỏ ra khá phức tạp khi hiện trong sơ đồ
cú pháp, như trong hình 1.
Hình 1. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các câu cho phép
xác định cácràngbuộc
Việc quản lý cácràngbuộccó thể đơn giản và thuận tiện hơn khi thực hiện thông qua Trung tâm
điều khiển của DB2.
Các định nghĩa ràngbuộc gắn với cáccơ sở dữ liệu mà chúng áp dụng, và chúng được lưu trữ
trong danh mục cơ sở dữ liệu, như trong Bảng 1. Bạncó thể truy vấn danh mục cơ sở dữ liệu để
lấy và kiểm tra thông tin này. Bạncó thể thực hiện điều này trực tiếp qua dòng lệnh (nhớ là trước
hết phải thiết lập kết nối cơ sở dữ liệu), hoặc, bạn cũng có thể thấy việc truy cập một số thông tin
này thuận tiện hơn khi thông qua Trung tâm điều khiển của DB2.
Các ràngbuộc mà bạn tạo ra được quản lí như bất kỳ đối tượng khác trong cơ sở dữ liệu. Chúng
được đặt tên, có lược đồ liên quan (tạo ID), và trong một số trường hợp có thể bị xóa.
Hình 2. Một phần của cú pháp của câu lệnh CREATE TABLE, hiển thị các mệnh đề được
sử dụng khi xác định cácràngbuộc (tiếp)
Bảng 1 là các thông tin về ràngbuộc trong danh mục cơ sở dữ liệu. Để chạy thành công, các truy
vấn trên danh mục này phải có kết nối tới cơ sở dữ liệu.
Bảng 1. Các thông tin về ràngbuộc trong danh mục cơ sở dữ liệu
Khung nhìn danh mục
Cột của khung
nhìn
Mô tả Ví dụ truy vấn
SYSCAT.CHECKS
Chứa một hàng cho t
ừng
ràng buộc kiểm tra bảng
db2 chọn constname,
tabname, văn bản khung
nhìn syscat.checks
SYSCAT.COLCHECKS
Chứa một hàng cho t
ừng
cột được tham chiếu bởi
ràng buộc kiểm tra bảng
db2 chọn constname,
tabname, colname, cách sử
dụng từ khung nhìn
syscat.colchecks
SYSCAT.COLUMNS
NULLS
Cho biết một cột có thể
là null (Y) hay không
null (N)
db2 ch
ọn tabname, colname,
giá trị rỗng từ khung nhìn
syscat.columns mà
tabschema = 'DELSVT và
null =' N '
SYSCAT.CONSTDEP
Chứa một hàng cho t
ừng
phụ thuộc củaràng bu
ộc
vào một số đối tượng
khác
db2 chọn constname,
tabname, btype, bname từ
syscat.constdep
SYSCAT.INDEXES
Chứa một hàng cho t
ừng
chỉ mục.
db2 chọn tabname,
uniquerule, made_unique,
system_required từ
syscat.indexes, mà
tabschema = 'DELSVT'
SYSCAT.KEYCOLUSE
Chứa một hàng cho t
ừng
cột tham gia vào khóa
được xác định bởi khóa
chính, duy nhất, hoặc
bởi ràngbuộccủa khoá
ngoài
db2 chọn constname,
tabname, colname, colseq t
ừ
syscat.keycoluse
SYSCAT.REFERENCES
Chứa một hàng cho t
ừng
ràng buộc tham chiếu
db2 chọn constname,
tabname, refkeyname,
reftabname, colcount,
deleterule, updaterule từ
syscat.references
SYSCAT.TABCONST
Chứa một hàng cho t
ừng
khóa duy nhất (U), khóa
chính (P), khóa ngoài
(F), hoặc ràngbuộc
kiểm tra bảng (K)
db2 chọn constname,
tabname, type từ
syscat.tabconst
SYSCAT.TABLES CHA
Số lượng bảng cha của
bảng này (số lượng của
các ràngbuộc tham
chiếu mà trong đó bảng
này là phụ thuộc)
db2 "chọn tabname, bảng
cha từ syscat.tables mà số
cha > 0"
SYSCAT.TABLES CON
Số lượng bảng phụ
thuộc của bảng này (số
lượng ràngbuộc tham
chiếu trong đó bảng này
là bảng cha)
db2 "chọn tabname, bảng
con từ syscat.tables mà số
con > 0"
SYSCAT.TABLES SELFREFS
Số lượng cácràngbuộc
tham chiếu tự tham
chiếu cho bảng này (số
lượng củaràngbuộc
tham chiếu mà trong đó
bảng này là bảng cha và
là bảng phụ thuộc)
db2 "chọn tabname, selfrefs
từ syscat.tables mà selfrefs
> 0"
SYSCAT.TABLES KEYUNIQUE
Số lượng ràngbuộc duy
nhất (trừ khóa chính)
được xác định trên bảng
này
db2 "chọn tabname,
keyunique từ syscat.tables
mà keyunique > 0"
SYSCAT.TABLES CHECKCOUNT
Số lượng ràngbuộc
kiểm tra được xác định
trên bảng này
db2 "chọn tabname,
checkcount từ syscat.tables
mà checkcount > 0"
Về đầu trang
"Không thể không có giá trị !" - Ràngbuộc NOT NULL
Ràng buộc NOT NULL ngăn chặn các giá trị null thêm vào cột. Điều này đảm bảo rằng cột có giá
trị có ý nghĩa đối với mỗi hàng trong bảng. Ví dụ, định nghĩa EMPLOYEE trong cơ sở dữ liệu
SAMPLE có LASTNAME VARCHAR(15) NOT NULL, đảm bảo rằng mỗi hàng chứa họ của một nhân
viên.
Để xác định xem một cột có thể là null hay không, bạncó thể tham chiếu ngôn ngữ định nghĩa
dữ liệu (DDL) cho bảng (mà bạncó thể tạo ra bằng cách gọi tiện ích db2look). Bạncó thể sử
dụng Trung tâm điều khiển của DB2, như trong hình 3 và hình 4.
Hình 3. Khung nhìn của bảng trong Trung tâm Điều khiển
Trung tâm điều khiển của DB2 cho phép bạn truy cập thuận tiện các đối tượng cơ sở dữ liệu như
các bảng. Hình 3 cho thấy các bảng người dùng trong cơ sở dữ liệu SAMPLE. Chúng xuất hiện
trong khung nội dung khi Tables được chọn trong cây đối tượng. Nếu bạn chọn bảng STAFF,
bạn có thể mở cửa sổ Alter Table để xem định nghĩa của bảng, bao gồm các thuộc tính cột được
thể hiện trong hình 4.
Hình 4. Màn hình Alter Table ở Trung tâm Điều khiển
Hoặc bạncó thể truy vấn danh mục cơ sở dữ liệu, như trong Liệt kê 1.
Liệt kê 1. Truy vấn các danh mục cơ sở dữ liệu để xác định xem cột bảng nào có thể là null.
db2 select tabname, colname, nulls
from syscat.columns
where tabschema = 'DELSVT' and nulls = 'N'
Về đầu trang
"Chỉ xuất hiện một lần" – Ràngbuộc unique
Ràng buộc unique ngăn một giá trị xuất hiện nhiều lần trong một cột cụ thể trong bảng. Nó cũng
không cho phép một bộ các giá trị xuất hiện nhiều lần trong tập hợp các cột. Các cột được tham
chiếu trong ràngbuộc unique phải được định nghĩa là NOT NULL. Ràngbuộc unique có thể
được xác định trong câu lệnh CREATE TABLE nhờ mệnh đề UNIQUE (Hình 1 và Hình 2), hay
trong câu lệnh ALTER TABLE, như trong Liệt kê 2.
Liệt kê 2 cho thấy cách để tạo ra ràngbuộc unique. Bảng ORG_TEMP trùng với bảng ORG
trong cơ sở dữ liệu SAMPLE, ngoại trừ cột LOCATION trong ORG_TEMP là không null, và
cột LOCATION có thể córàngbuộc unique được xác định trên nó.
Liệt kê 2. Tạo ràngbuộc unique
db2 create table org_temp (
deptnumb smallint not null,
deptname varchar(14),
manager smallint,
division varchar(10),
location varchar(13) not
null)
db2 alter table org_temp add
unique (location)
db2 insert into org_temp
values (10, 'Head Office', 160, 'Corporate', 'New
York')
DB20000I The SQL command completed successfully.
db2 insert into org_temp
values (15, 'New England', 50, 'Eastern', 'New
York')
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0803N One or more values in the INSERT statement, UPDATE statement, or
foreign key update caused by a DELETE statement are not valid because the
primary key, unique constraint or unique index identified by "1" constrains
table "DELSVT.ORG_TEMP" from having duplicate values for the index key.
SQLSTATE=23505
Các tên củaràngbuộc
Nếu bạn không chỉ định tên cho một ràngbuộc khi nó được tạo ra, thì DB2 gán cho nó tên dựa
trên các dấu thời gian khi tạo ra ràng buộc, chẳng hạn như SQL100419222516560.
Ràng buộc unique giúp đảm bảo toàn vẹn dữ liệu bằng cách ngăn sự trùng lặp không chủ ý.
Trong ví dụ này, ràngbuộc unique ngăn cản việc chèn bản ghi thứ hai muốn xác định New York
là địa điểm chi nhánh của tổ chức. Ràngbuộc unique được tăng hiệu lực thông qua chỉ mục duy
nhất.
Về đầu trang
"Ta là số một!" - Ràngbuộc khoá chính
Ràng buộc khoá chính đảm bảo rằng tất cả các giá trị trong cột hoặc bộ các cột tạo nên khóa
chính cho bảng là duy nhất. Khóa chính được sử dụng để xác định các hàng cụ thể trong bảng.
Một bảng không thể có nhiều hơn một khóa chính, nhưng nó có thể có một số khóa duy nhất.
Ràng buộc khoá chính là trường hợp đặc biệt củaràngbuộc unique, và nó được tăng hiệu lực
thông qua chỉ mục chính.
Các cột được tham chiếu trong ràngbuộc khoá chính phải được định nghĩa là NOT NULL. Ràng
buộc khoá chính có thể được xác định trong câu lệnh CREATE TABLE bằng cách sử dụng mệnh
đề PRIMARY KEY (Xem Hình 1 và Hình 2), hay trong câu lệnh ALTER TABLE như trong Liệt
kê 3.
Liệt kê 3 cho thấy cách để tạo ra ràngbuộc khoá chính. Cột ID trong bảng STAFF không được
rỗng, và nó có thể córàngbuộc khoá chính xác định trên nó.
Liệt kê 3. Tạo ràngbuộc khoá chính
db2 alter table staff
add primary key
(id)
Ngoài ra, bạncó thể sử dụng Trung tâm điều khiển của DB2 để xác định ràngbuộc khoá chính
trên bảng, như được thể hiện trong hình 5 và hình 6. Cửa sổ Alter Table cung cấp cách thuận tiện
để định nghĩa ràngbuộc khoá chính trên bảng. Hãy chọn thẻ Keys, rồi nhấp vào Add Primary.
Hình 5. Cửa sổ Alter Table
Cửa sổ định nghĩa khóa chính (Define Primary Key) xuất hiện, như trên hình 6.
[...]... Bài viết này đã khám phá các loại ràngbuộc mà DB2 dùng trên các hệ điều hành Linux, UNIX, và Windows, bao gồm ràngbuộc NOT NULL, ràngbuộc duy nhất, ràngbuộc khoá chính, ràngbuộc khoá ngoài (tham chiếu) và ràngbuộc kiểm tra bảng DB2 sử dụng ràngbuộc để tăng hiệu lực các quy tắc nghiệp vụ đối với dữ liệu và để giúp bảo vệ tính toàn vẹn của cơ sở dữ liệu Bạn cũng đã học được cách sử dụng cả dòng lệnh... kiểm tra hiện tại Bạn không thể tạo ra ràngbuộc kiểm tra bảng nếu hàng hiện tại trong bảng chứa các giá trị trái với ràngbuộc mới, như trong hình 9 Bạncó thể thêm hoặc sửa đổi được ràngbuộc sau khi các giá trị không tương thích được cập nhật một cách thích hợp Hình 9 Lỗi được trả về nếu ràngbuộc kiểm tra bảng mới không tương thích với các giá trị hiện tại trong bảng Trì hoãn kiểm tra dữ liệu Câu lệnh... số giá trị của khóa chính của bảng cha Điều này phù hợp với những gì đã được nói đến Nếu một bản ghi mới muốn chèn vào bảng PROJECT, thì bản ghi đó phải có tham chiếu (thông qua các mối quan hệ khóa ngoài-khóa chính) đến bản ghi đang tồn tại trong bảng EMPLOYEE Quy tắc cập nhật củaràngbuộc tham chiếu là một giá trị cập nhật của khóa ngoài phải phù hợp với một số giá trị của khóa chính của bảng cha,... 000010 của khóa chính có thể bị xóa khỏi bảng EMPLOYEE khi bảng PROJECT xóa-kết nối có giá trị phù hợp với khóa ngoài Về đầu trang "Kiểm tra và lại kiểm tra" - Ràngbuộc kiểm tra bảng Ràngbuộc kiểm tra bảng tăng hiệu lực cácràngbuộc đã xác định trên dữ liệu vừa được thêm vào bảng Ví dụ: ràngbuộc kiểm tra bảng có thể đảm bảo rằng số máy lẻ của điện thoại cho nhân viên là dài bốn chữ số bất cứ khi... Định nghĩa của bảng mới phản ánh định nghĩa của bảng EMPLOYEE Việc kiểm tra tính toàn vẹn được bật lên, với các hàng trái với cácràngbuộc kiểm tra đang được ghi vào bảng ngoại lệ Các truy vấn cho các bảng này xác nhận rằng hàng đang được nói đến bây giờ chỉ tồn tại trong bảng ngoại lệ Liệt kê 7 Sử dụng câu lệnh SET INTEGRITY để trì hoãn việc kiểm tra cácràngbuộc db2 update employee set phoneno = '123'... khi định nghĩa ràngbuộc tham chiếu Bảng 2 Các lựa chọn của tham chiếu ràngbuộc Nếu mệnh đề này được xác định khi Và đây là kết quả ràngbuộc tham chiếu được tạo ra RESTRICT or NO ACTION Không hàng nào bị xóa SET NULL Từng cột có thể rỗng của khóa ngoài được đặt về NULL Hoạt động xóa được truyền đến phần phụ thuộc của CASCADE bảng cha Các phần phụ thuộc được coi là xóa-kết nối tới bảng cha Liệt kê... trỏ vào bảng cha cho ràngbuộc tham chiếu này Cú pháp để xác định ràngbuộc khoá ngoài bao gồm câu luật, tại đó bạncó thể ra lệnh cho DB2 cách mà bạn muốn cập nhật hoặc xóa các hoạt động được xử lý theo bối cảnh có toàn vẹn tham chiếu (xem Hình 1) Hoạt động chèn vào được xử lý theo cách thức chuẩn mà bạn không kiểm soát cách thức đó Nguyên tắc chèn củaràngbuộc tham chiếu là giá trị chèn của khóa... đặt bảng trong tình trạng chờ kiểm tra Điều này cho phép thực hiện câu lệnh ALTER TABLE bằng cách xác định ràngbuộc kiểm tra mới để tiến hành mà không phải kiểm tra các dữ liệu hiện có trong bảng Cácràngbuộc kiểm tra bảng có thể được bật hoặc tắt bằng cách sử dụng câu lệnh SET INTEGRITY Điều này có thể hữu ích, chẳng hạn khi ta tối ưu hóa hiệu năng trong các hoạt động tải dữ liệu lớn với một bảng... cột Available Nhấp vào nút > để di chuyển các tên từ danh sách cột Available vào cột Selected Lưu ý rằngcác cột được lựa chọn không được rỗng Về đầu trang "Tất cả đều liên quan" - Ràngbuộc khoá ngoài Ràngbuộc khoá ngoài đôi khi được coi là ràngbuộc tham chiếu Tính toàn vẹn tham chiếu được xác định là trạng thái của cơ sở dữ liệu thỏa mãn giá trị của tất cả các khóa ngoài là hợp lệ Vậy khoá ngoài... bốn chữ số Ngoài ra, bạncó thể sử dụng Trung tâm điều khiển của DB2 để xác định ràngbuộc kiểm tra bảng, như trong hình 7 Hình 7 Cửa sổ Alter Table cung cấp cách thuận tiện để định nghĩa ràngbuộc kiểm tra bảng trên cột Nhấp vào nút Add để xác định ràngbuộc mới, và cửa sổ Add Check Constraint mở ra Hoặc nhấp vào nút Change để thay đổi ràngbuộc đang tồn tại mà bạn đã chọn từ danh sách, như trong hình . Các khái niệm cơ bản của DB2: Các ràng buộc
Introduction
Giới thiệu
Phần này của bài viết mô tả sự khác biệt trong cấu trúc của DB2 và các quy. tra" - Ràng buộc kiểm tra bảng
Ràng buộc kiểm tra bảng tăng hiệu lực các ràng buộc đã xác định trên dữ liệu vừa được thêm vào
bảng. Ví dụ: ràng buộc kiểm