Các khái niệm cơ bản của DB2: Giới thiệu về các kiểu dữ liệu có cấu trúc và các bảng được định kiểu - Pdf 20

Các khái niệm cơ bản của DB2: Giới thiệu về các kiểu dữ liệu có cấu trúc và
các bảng được định kiểu
Roman Melnyk, Phát triển thông tin DB2
Tóm tắt: Kiểu dữ liệu có cấu trúc là kiểu dữ liệu do người dùng định nghĩa với
các yếu tố không phải là nhỏ nhất, đúng hơn, chúng có thể bị phân chia và có thể
hoặc được sử dụng một cách riêng rẽ hoặc như là một dữ liệu đơn, khi thích hợp.
Bài viết này giới thiệu cho bạn khái niệm của các kiểu dữ liệu có cấu trúc và chỉ
cho bạn biết, bằng một ví dụ đang hoạt động, cách để xây dựng và chạy với các
kiểu dữ liệu có cấu trúc, phân cấp kiểu dữ liệu và các bảng được định kiểu.
Cơ sở dữ liệu vạn năng DB2 của IBM (DB2 Universal Database - DB2 UDB) cho
các hệ điều hành Linux, UNIX và Windows cho phép dùng các kiểu dữ liệu có cấu
trúc. Kiểu dữ liệu có cấu trúc là dạng dữ liệu do người dùng định nghĩa có chứa
một chuỗi các thuộc tính, mỗi thuộc tính trong các thuộc tính đó có một kiểu dữ
liệu. Mỗi thuộc tính là đặc tính giúp mô tả thể hiện của kiểu. Ví dụ: Nếu chúng ta
định nghĩa một kiểu có cấu trúc có tên là address_t, thì thành phố có thể là một
trong những thuộc tính của kiểu dữ liệu có cấu trúc. Các kiểu dữ liệu có cấu trúc
giúp dễ sử dụng dữ liệu, chẳng hạn như địa chỉ, hoặc là một đơn vị dữ liệu đơn,
hoặc là các mục dữ liệu riêng biệt, mà không cần phải lưu giữ mỗi dữ liệu của các
dữ liệu (hoặc các thuộc tính) này trong một cột riêng biệt.
Thường xảy ra nhất là các kiểu dữ liệu có cấu trúc được lưu trữ trong cơ sở dữ
liệu:
 Như là các giá trị trong một hoặc nhiều cột, được định nghĩa bằng cách sử
dụng các kiểu dữ liệu có cấu trúc như là các kiểu dữ liệu của chúng. (Xem
Liệt kê 1 và Liệt kê 2.)
 Như là các hàng trong một bảng (bảng được định kiểu) có các cột được
định nghĩa bởi các thuộc tính của các kiểu dữ liệu có cấu trúc. Trong trường
hợp này, bảng được tạo ra bằng kiểu dữ liệu có cấu trúc, và bạn không xác
định riêng cho cột trong định nghĩa bảng. (Xem Liệt kê 3.)
Các kiểu dữ liệu có cấu trúc
Kiểu dữ liệu có cấu trúc có thể được sử dụng như là kiểu cho một cột trong bảng
thông thường (Liệt kê 1 và 2), kiểu cho toàn bộ bảng (hoặc khung nhìn), hoặc như

kiểu dữ liệu có cấu trúc, phương thức trả về giá trị của thuộc tính cho thể
hiện đó.
Để gọi phương thức trình biến đổi hoặc quan sát trên một thể hiện của kiểu dữ liệu
có cấu trúc, bạn hãy sử dụng toán tử hai dấu chấm ( ) (Liệt kê 1, 2, và 3). Bảng được định kiểu
Một bảng được định kiểu là bảng được xác định với kiểu dữ liệu có cấu trúc do
người dùng định nghĩa. Các bảng được định kiểu lưu giữ các thể hiện của các kiểu
dữ liệu có cấu trúc theo hàng, trong đó mỗi thuộc tính của kiểu dữ liệu được lưu
trữ trong một cột riêng biệt, trong thực tế, tên và kiểu dữ liệu của các thuộc tính
của các dữ liệu có cấu trúc trở thành tên và kiểu dữ liệu của các cột của bảng được
định kiểu. Tương tự như các kiểu dữ liệu có cấu trúc, các bảng được định kiểu có
thể là một phần của hệ thống bảng, bao gồm một bảng gốc đơn, các siêu bảng và
các bảng con.
Bạn hãy sử dụng câu lệnh CREATE TABLE để tạo ra một bảng được định kiểu,
và sử dụng câu lệnh DROP để xóa bảng được định kiểu. Một bảng được định kiểu
đang bị xóa không thể có bất kỳ bảng con nào. Bạn cũng có thể xóa toàn bộ hệ
thống phân cấp bảng bằng cách chỉ định các từ khoá HIERARCHY trong câu lệnh
DROP (DROP TABLE HIERARCHY <root-table-name>). Ví dụ chi tiết
Đối với ví dụ này, ta sẽ sử dụng cơ sở dữ liệu SAMPLE đi kèm với DB2 UDB. Ví
dụ của chúng tôi yêu cầu kết nối cơ sở dữ liệu để bắt đầu, và chỉ vậy, và đối với ví
dụ này, cơ sở dữ liệu SAMPLE sẽ làm việc khá tốt.
Chúng ta sẽ tạo ra bảng có tên là CLIENTS với bốn cột. CLIENT_ID là cột định
tên do hệ thống tạo ra; CLIENT_LNAME và CLIENT_FNAME chứa tương ứng
họ và tên mới của khách; và ADDRESS là cột của kiểu dữ liệu có cấu trúc của
kiểu Address_t. (qui ước thường dùng là đặt tên cho kiểu dữ liệu cấu trúc với hậu

định hàm cụ thể sẽ được sử dụng để biến đổi một giá trị thành giá trị của kiểu dữ
liệu được xây dựng sẵn biểu diễn kiểu dữ liệu có cấu trúc. Mệnh đề WITH
FUNCTION xác định hàm biến đổi chức năng (trường hợp này là
ADDRESS_TRANSFORM).
Bây giờ chúng ta đã sẵn sàng để chèn một số giá trị vào bảng CLIENTS. Mệnh đề
VALUES của câu lệnh INSERT bao gồm lệnh gọi đến address_t (), nó gọi trình
kiến thiết cho kiểu dữ liệu có cấu trúc address_t để tạo ra một thể hiện của kiểu dữ
liệu này với tất cả các thuộc tính được thiết lập giá trị rỗng. Toán tử hai dấu chấm
gọi ra các phương thức biết đổi để thiết lập giá trị cho mỗi thuộc tính địa chỉ.
Truy vấn tiếp theo xác định cột ADDRESS trong bảng CLIENTS lấy ra thông tin
địa chỉ như là địa chỉ gửi thư được kết nối.

Liệt kê 1. Sử dụng kiểu dữ liệu có cấu trúc như là kiểu dữ liệu cho cột trong
một bảng thông thường

connect to sample
create type
address_t as (street varchar(12), city varchar(12), province varchar(12),
postal_code char(6)) mode db2sql

create
table
clients (client_id integer generated always as identity,
client_lname varchar(12), client_fname varchar(12), address address_t)

create
function

(Liệt kê 2).

Liệt kê 2. Cập nhật cá thể của kiểu dữ liệu có cấu trúc trong cột của một bảng
thông thường

connect to sample
select client_id, client_lname, address city as city from
clients

CLIENT_ID CLIENT_LNAME CITY

21 Nicholson Toronto

1 record(s) selected.
update
clients set address city = 'Oakville' where client_id = 21

select client_id, client_lname, address city as city from
clients

CLIENT_ID CLIENT_LNAME CITY

21 Nicholson Oakville


kiến thiết đối với kiểu dữ liệu có cấu trúc address_t để tạo một thể hiện hiện của
kiểu dữ liệu này với tất cả các thuộc tính được đặt các giá trị là rỗng . Toán tử hai
dấu chấm gọi ra phương thức biến đổi để thiết lập giá trị cho từng thuộc tính địa
chỉ. Mệnh đề VALUES cũng bao gồm một hàm lấy giá trị đối với các giá trị do
người sử dụng quy định của cột OID, bởi vì giá trị phải được lấy cho kiểu
REFERENCE của bảng đích. Theo mặc định, tên của hàm lấy giá trị giống với tên
kiểu dữ liệu có cấu trúc (trong trường hợp này các kiểu dữ liệu tương ứng là
Engineer_t và Salesperson_t,).
Việc thực hiện truy vấn trong ba bảng trong hệ thống phân cấp này chứng tỏ rằng
các bảng con ENGINEER và SALESPERSON đã kế thừa các cột trong siêu bảng
của chúng (EMP), bao gồm cả cột trình định tên đối tượng (OID).

Liệt kê 3. Hệ thống phân cấp bảng được định kiểu, chứng minh tính kế thừa

connect to sample
create type
emp_t as (empno integer, lname varchar(12), fname varchar(12),
deptno char(4), salary decimal(7,2), address address_t) ref using integer mode
db2sql

create
type salesperson_t under emp_t as (commission decimal(7,2)) mode db2sql

create type
engineer_t under
emp_t as (perf_bonus decimal(7,2),
recog_award decimal(7,2)) mode db2sql

select
* from
emp

OID EMPNO LNAME FNAME DEPTNO SALARY
ADDRESS

1 42 Kidman Jennifer Z004 65000.00 7 Dorval Rd, Mark
2 69 Theron Maggie C012 49000.00 7 River St, Ottaw

2 record(s) selected. select oid, empno, lname, deptno, salary, perf_bonus, recog_award, address from
engineer

OID EMPNO LNAME DEPTNO SALARY PERF_BONUS
RECOG_AWARD ADDRESS

1 42 Kidman Z004 65000.00 4000.00 2000.00 7 Dorva

1 record(s) selected. select oid, empno, lname, deptno, salary, commission, address from
salesperson

OID EMPNO LNAME DEPTNO SALARY COMMISSION
ADDRESS


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status