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 pps

18 509 0
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 pps

Đ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

Các khái niệm DB2: Giới thiệu kiểu liệu có cấu trúc bảng định kiểu Roman Melnyk, Phát triển thông tin DB2 Tóm tắt: Kiểu liệu có cấu trúc kiểu liệu người dùng định nghĩa với yếu tố khơng phải nhỏ nhất, hơn, chúng bị phân chia sử dụng cách riêng rẽ liệu đơn, thích hợp Bài viết giới thiệu cho bạn khái niệm kiểu liệu có cấu trúc cho bạn biết, ví dụ hoạt động, cách để xây dựng chạy với kiểu liệu có cấu trúc, phân cấp kiểu liệu bảng định kiểu Cơ sở liệu vạn DB2 IBM (DB2 Universal Database - DB2 UDB) cho hệ điều hành Linux, UNIX Windows cho phép dùng kiểu liệu có cấu trúc Kiểu liệu có cấu trúc dạng liệu người dùng định nghĩa có chứa chuỗi thuộc tính, thuộc tính thuộc tính có kiểu liệu Mỗi thuộc tính đặc tính giúp mơ tả thể kiểu Ví dụ: Nếu định nghĩa kiểu có cấu trúc có tên address_t, thành phố thuộc tính kiểu liệu có cấu trúc Các kiểu liệu có cấu trúc giúp dễ sử dụng liệu, chẳng hạn địa chỉ, đơn vị liệu đơn, mục liệu riêng biệt, mà không cần phải lưu giữ liệu liệu (hoặc thuộc tính) cột riêng biệt Thường xảy kiểu liệu có cấu trúc lưu trữ sở liệu:  Như giá trị nhiều cột, định nghĩa cách sử dụng kiểu liệu có cấu trúc kiểu liệu chúng (Xem Liệt kê Liệt kê 2.)  Như hàng bảng (bảng định kiểu) có cột định nghĩa thuộc tính kiểu liệu có cấu trúc Trong trường hợp này, bảng tạo kiểu liệu có cấu trúc, bạn không xác định riêng cho cột định nghĩa bảng (Xem Liệt kê 3.) Các kiểu liệu có cấu trúc Kiểu liệu có cấu trúc sử dụng kiểu cho cột bảng thơng thường (Liệt kê 2), kiểu cho tồn bảng (hoặc khung nhìn), thuộc tính kiểu liệu có cấu trúc khác (Liệt kê 3) Khi sử dụng làm kiểu cho bảng, bảng biết bảng định kiểu (Liệt kê 3) Bạn tạo bảng với cột có kiểu liệu cấu trúc với cách mà bạn tạo bảng cách sử dụng kiểu liệu có sẵn DB2 Trong hai trường hợp, bạn phải định kiểu liệu cho cột bảng Nếu cột cột kiểu liệu có cấu trúc, bạn xác định tên kiểu liệu cấu trúc làm kiểu liệu (Liệt kê 1) Các kiểu liệu có cấu trúc có hành vi gọi tính kế thừa Một kiểu liệu có cấu trúc có kiểu liệu con, kiểu liệu có cấu trúc khác sử dụng lại tất thuộc tính chứa thuộc tính cụ thể Kiểu liệu mà kiểu liệu thừa kế thuộc tính gọi siêu kiểu Một phân cấp kiểu tập kiểu liệu dựa siêu kiểu; siêu kiểu ưu việt hệ thống phân cấp gọi kiểu gốc hệ thống phân cấp Hãy sử dụng câu lệnh CREATE TYPE để tạo kiểu liệu có cấu trúc, sử dụng câu lệnh DROP để xóa kiểu liệu có cấu trúc Khi bạn tạo kiểu liệu có cấu trúc, DB2 tự động tạo hàm kiến thiết kiểu liệu tạo hai trình biến đổi trình quan sát thuộc tính kiểu liệu Bạn sử dụng hàm kiến thiết phương thức trình biến đổi để tạo thể kiểu liệu có cấu trúc sau bạn chèn các thể vào cột bảng  Chức trình kiến thiết có tên với kiểu liệu có cấu trúc gắn với Hàm kiến thiết khơng có tham số trả thể kiểu liệu với tất thuộc tính đặt giá trị rỗng  Phương thức trình biến đổi tồn thuộc tính kiểu liệu có cấu trúc Khi bạn gọi phương thức trình biết đổi thể kiểu liệu có cấu trúc xác định giá trị cho thuộc tính liên quan nó, phương thức trả thể với thuộc tính cập nhật với giá trị  Phương thức trình quan sát tồn cho thuộc tính kiểu liệu có cấu trúc Khi bạn gọi phương thức trình quan sát thể kiểu liệu có cấu trúc, phương thức trả giá trị thuộc tính cho thể Để gọi phương thức trình biến đổi quan sát thể kiểu liệu có cấu trúc, bạn sử dụng toán tử hai dấu chấm ( ) (Liệt kê 1, 2, 3) Bảng định kiểu Một bảng định kiểu bảng xác định với kiểu liệu có cấu trúc người dùng định nghĩa Các bảng định kiểu lưu giữ thể kiểu liệu có cấu trúc theo hàng, thuộc tính kiểu liệu lưu trữ cột riêng biệt, thực tế, tên kiểu liệu thuộc tính liệu có cấu trúc trở thành tên kiểu liệu cột bảng định kiểu Tương tự kiểu liệu có cấu trúc, bảng định kiểu phần hệ thống bảng, bao gồm bảng gốc đơn, siêu bảng bảng Bạn sử dụng câu lệnh CREATE TABLE để tạo bảng định kiểu, sử dụng câu lệnh DROP để xóa bảng định kiểu Một bảng định kiểu bị xóa khơng thể có bảng Bạn xóa tồn hệ thống phân cấp bảng cách định từ khoá HIERARCHY câu lệnh DROP (DROP TABLE HIERARCHY ) Ví dụ chi tiết Đối với ví dụ này, ta sử dụng sở liệu SAMPLE kèm với DB2 UDB Ví dụ chúng tơi u cầu kết nối sở liệu để bắt đầu, vậy, ví dụ này, sở liệu SAMPLE làm việc tốt Chúng ta tạo bảng có tên CLIENTS với bốn cột CLIENT_ID cột định tên hệ thống tạo ra; CLIENT_LNAME CLIENT_FNAME chứa tương ứng họ tên khách; ADDRESS cột kiểu liệu có cấu trúc kiểu Address_t (qui ước thường dùng đặt tên cho kiểu liệu cấu trúc với hậu tố '_t ' để định tên chúng kiểu liệu có cấu trúc cách rõ ràng.) Chúng ta cần phải tạo kiểu liệu có cấu trúc trước tạo bảng CLIENTS (Liệt kê 1) Chúng ta sử dụng hình thức đơn giản câu lệnh CREATE TYPE, cách xác định bốn thuộc tính (đường, thành phố, tỉnh mã bưu điện - postal_code) câu MODE DB2_SQL yêu cầu Để lấy liệu có cấu trúc từ bảng, phải có số cách để chuyển đổi kiểu thành giá trị vô hướng đơn mà kiểu nó, thân kiểu dựa liệu DB2 xây dựng sẵn Để thực việc chuyển đổi này, trước tiên phải tạo hàm biến đổi FROM SQL sau kết hợp hàm biến đổi với nhóm biến đổi Trước tiên, tạo hàm biến đổi vơ hướng có tên ADDRESS_TRANSFORM, cách sử dụng câu lệnh CREATE FUNCTION (SQL vô hướng, bảng hay dịng) Trong ví dụ này, xác định tham số đầu vào có tên addr kiểu Address_t Chúng ta xác định hàm trả VARCHAR (42), đủ lớn để chứa thuộc tính địa nối vào Thân hàm SQL bao gồm câu lệnh RETURN, thuộc tính địa thể kiểu liệu có cấu trúc Address_t tìm thơng qua phương thức quan sát chúng (được xác định toán tử ' ') nối với (bởi tốn tử '||' ) thành chuỗi đơn để hình thành địa gửi thư Trước sử dụng hàm biến đổi này, phải sử dụng câu lệnh CREATE TRANSFORM để kết hợp hàm biến đổi ADDRESS_TRANSFORM với tên nhóm kiểu liệu Câu lệnh CREATE TRANSFORM cho phép dùng hàm có hàm biến đổi Nếu bạn không xác định tên nhóm bạn chạy ứng dụng tham chiếu đến kiểu liệu có cấu trúc, DB2 sử dụng tên nhóm có tên DB2_PROGRAM giả định tên nhóm xác định cho kiểu liệu có cấu trúc Nếu DB2_PROGRAM chưa xác định cho kiểu liệu có cấu trúc, bạn tạo nhóm cho kiểu liệu có cấu trúc bạn Chúng đưa câu lệnh CREATE TRANSFORM, xác định kiểu liệu có cấu trúc Address_t tên nhóm DB2_PROGRAM Câu lệnh FROM SQL xác định hàm cụ thể sử dụng để biến đổi giá trị thành giá trị kiểu liệu xây dựng sẵn biểu diễn kiểu liệu có cấu trúc Mệnh đề WITH FUNCTION xác định hàm biến đổi chức (trường hợp ADDRESS_TRANSFORM) Bây sẵn sàng để chèn số giá trị vào bảng CLIENTS Mệnh đề VALUES câu lệnh INSERT bao gồm lệnh gọi đến address_t (), gọi trình kiến thiết cho kiểu liệu có cấu trúc address_t để tạo thể kiểu liệu với tất thuộc tính thiết lập giá trị rỗng Toán tử hai dấu chấm gọi phương thức biết đổi để thiết lập giá trị cho thuộc tính địa Truy vấn xác định cột ADDRESS bảng CLIENTS lấy thông tin địa địa gửi thư kết nối Liệt kê Sử dụng kiểu liệu có cấu trúc kiểu liệu cho cộ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 address_transform (addr address_t) returns varchar(42) language sql return addr street || ', ' || addr city || ', ' || addr province || ' ' || addr postal_code create transform for address_t db2_program (from sql with function address_transform) insert into clients (client_lname, client_fname, address) values ('Nicholson', 'James', address_t() street('20 Indian Rd') city('Toronto') province('Ontario') postal_code('M6T2R1')) select client_id, client_fname, client_lname, address from clients CLIENT_ID CLIENT_FNAME CLIENT_LNAME ADDRESS - -21 James Nicholson 20 Indian Rd, Toronto, Ontario M6T2R1 record(s) selected connect reset Bây giờ, giả sử muốn gọi phần tử địa (ví dụ: city) từ bảng CLIENTS Để làm điều đó, gọi trình quan sát (bằng cách sử dụng tốn tử hai dấu chấm) cho thuộc tính thành phố giá trị kiểu liệu có cấu trúc cột ADDRESS (Liệt kê 2) Tương tự vậy, muốn cập nhật giá trị thuộc tính thành phố, gọi phương thức trình biến đổi câu lệnh UPDATE (Liệt kê 2) Liệt kê Cập nhật cá thể kiểu liệu có cấu trúc cộ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 record(s) selected Toronto 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 record(s) selected connect reset Oakville Để minh họa hệ thống phân cấp bảng định kiểu đơn giản thuộc tính kế thừa, tạo ba kiểu liệu cấu trúc (Liệt kê 3): Emp_t, Salesperson_t, Engineer_t Emp_t kiểu liệu gốc, định nghĩa bao gồm kiểu liệu cấu trúc Address_t mà tạo trước Mệnh đề REF USING INTEGER xác định kiểu liệu INTEGER sử dụng để biểu diễn kiểu REFERENCE kiểu liệu cấu trúc tất nhóm Bản thân REFERENCE kiểu hệ thống, tức kiểu liệu cột định danh đối tượng bảng định kiểu (Bởi bảng định kiểu chứa đối tượng tham chiếu đối tượng khác, bảng định kiểu phải có cột định tên đối tượng làm cột nó.) Salesperson_t Engineer_t kiểu liệu con, tạo theo Emp_t, siêu kiểu chúng Các định nghĩa cho liệu bao gồm thuộc tính bổ sung mà phần liệu kiểu Emp_t, làm cho liệu khác với siêu kiểu chúng; nhiên, thuộc tính phần định nghĩa siêu kiểu, kế thừa kiểu liệu chúng Sau tạo kiểu liệu có cấu trúc cần thiết, tạo bảng định kiểu dựa kiểu liệu (Liệt kê 3) Siêu bảng hệ thống phân cấp bảng nhỏ đặt tên EMP Tiếp tục sáng tạo theo trí tưởng tượng, đặt tên cho cột trình định tên đối tượng OID rõ giá trị người dùng tạo Sau giá trị cột OID chèn vào, khơng thể sửa đổi Mệnh đề INHERIT SELECT PRIVILEGES quy định người sử dụng hay nhóm người sử dụng giữ đặc quyền SELECT siêu bảng cấp đặc quyền tương đương bảng Bây ta sẵn sàng để chèn liệu vào bảng ENGINEER SALESPERSON Mệnh đề VALUES câu lệnh INSERT hai trường hợp bao gồm lệnh gọi address_t (), lệnh này, ví dụ trước đây, gọi trình kiến thiết kiểu liệu có cấu trúc address_t để tạo thể hiện kiểu liệu với tất thuộc tính đặt giá trị rỗng Toán tử hai dấu chấm gọi phương thức biến đổi để thiết lập giá trị cho thuộc tính địa Mệnh đề VALUES bao gồm hàm lấy giá trị giá trị người sử dụng quy định cột OID, giá trị phải lấy cho kiểu REFERENCE bảng đích Theo mặc định, tên hàm lấy giá trị giống với tên kiểu liệu có cấu trúc (trong trường hợp kiểu liệu tương ứng Engineer_t Salesperson_t,) Việc thực truy vấn ba bảng hệ thống phân cấp chứng tỏ bảng ENGINEER SALESPERSON kế thừa cột siêu bảng chúng (EMP), bao gồm cột trình định tên đối tượng (OID) Liệt kê Hệ thống phân cấp bảng đị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 create table emp of emp_t (ref is oid user generated) create table salesperson of salesperson_t under emp inherit select privileges create table engineer of engineer_t under emp inherit select privileges insert into engineer (oid, empno, lname, fname, deptno, salary, perf_bonus, recog_award, address) values (engineer_t(1), 42, 'Kidman', 'Jennifer', 'Z004', 65000.00, 4000.00, 2000.00, address_t() street('7 Dorval Rd') city('Markham') province('Ontario') postal_code('L6G2R1')) insert into salesperson (oid, empno, lname, fname, deptno, salary, commission, address) values (salesperson_t(2), 69, 'Theron', 'Maggie', 'C012', 49000.00, 15000.00, address_t() street('7 River St') city('Ottawa') province('Ontario') postal_code('K9G6R2')) select * from emp OID EMPNO LNAME FNAME DEPTNO SALARY ADDRESS - - - -1 42 Kidman 69 Theron Jennifer Maggie Z004 65000.00 Dorval Rd, Mark C012 49000.00 River St, Ottaw 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 Dorva record(s) selected select oid, empno, lname, deptno, salary, commission, address from salesperson OID EMPNO LNAME DEPTNO SALARY COMMISSION ADDRESS - - - -2 69 Theron C012 49000.00 15000.00 River St, Ottawa, record(s) selected connect reset Tóm tắt Chúng ta thấy liệu cấu trúc người dùng định nghĩa cách hữu ích để biểu diễn liệu cấu trúc (không phải liệu nhỏ nhất) cần quản lý thành phần liệu riêng biệt phần đơn, tùy thuộc vào ứng dụng Chủ đề rộng phức tạp Bài viết giới thiệu cho bạn khái niệm kiểu liệu có cấu trúc, phân cấp kiểu bảng định kiểu, khái niệm làm rõ thông qua ví dụ thao tác, giúp bạn làm quen chạy ví dụ thời gian ngắn Để tìm hiểu thêm kiểu liệu có cấu trúc, để có thêm thơng tin chi tiết chủ đề đề cập viết này, xem Tham khảo SQL sở liệu thông dụng DB2 IBM, tập Mục lục  Các kiểu liệu có cấu trúc  Bảng định kiểu  Ví dụ chi tiết  Tóm tắt ... liệu cho cột bảng Nếu cột cột kiểu liệu có cấu trúc, bạn xác định tên kiểu liệu cấu trúc làm kiểu liệu (Liệt kê 1) Các kiểu liệu có cấu trúc có hành vi gọi tính kế thừa Một kiểu liệu có cấu trúc. .. kiểu cho bảng, bảng biết bảng định kiểu (Liệt kê 3) Bạn tạo bảng với cột có kiểu liệu cấu trúc với cách mà bạn tạo bảng cách sử dụng kiểu liệu có sẵn DB2 Trong hai trường hợp, bạn phải định kiểu. .. có cấu trúc, bảng định kiểu phần hệ thống bảng, bao gồm bảng gốc đơn, siêu bảng bảng Bạn sử dụng câu lệnh CREATE TABLE để tạo bảng định kiểu, sử dụng câu lệnh DROP để xóa bảng định kiểu Một bảng

Ngày đăng: 07/08/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan