Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
TRƯỜNG ĐẠI HỌC ĐỒNG THÁP
KHOA SƯ PHẠM TOÁN – TIN
Sinh viên thực hiện:
Lê Văn Ngọt
MSSV:0021440597
Trần Văn Toàn
MSSV:0021440422
Phan Thị Diễm Trang
MSSV:0021440434
CƠ SỞ DỮ LIỆU NÂNG CAO
QUẢN LÝ KINH DOANH THIẾT BỊ CNTT HIỆP TỒN
NGÀNH KHOA HỌC MÁY TÍNH
Lớp: ĐHCNTT21-L2
Khóa: DH2021-KCQ <mã số>
Giảng viên giảng dạy: NGUYỄN THỊ MỸ DUNG
Đồng Tháp, tháng 11 năm 2021
LỜI CẢM ƠN/ LỜI GIỚI THIỆU
Báo cáo môn CSDL
Trang 1
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
***
Ngày nay máy tính trở thành một phương tiện quan trọng được ứng dụng trong
mọi lĩnh vực, một trong những ứng dụng đó là quản lý. Trong đó, PL/SQL (Procedural
Language/Structured Query Language) là một hệ quản trị cơ sở dữ liệu dùng để tạo và
xử lý dữ liệu, cho phép quản lý dữ liệu một cách có tổ chức thống nhất, liên kết các dữ
liệu rời rạc thành một hệ thống hoàn chỉnh, thay thế cho việc quản lý dữ liệu bằng cách
thủ cơng. Lập trình cơ sở dữ liệu nâng cao là một môn học hay, ứng dụng cao mà
chúng em được cơ trong khoa Khoa SP Tốn – Tin Trường Đại học Đồng Tháp giảng
dạy. Vì những lý do đó, nhóm em đã chọn Đề tài xây dựng CSDL “ Quản lý kinh doanh
thiết bị CNTT Hiệp Toàn” làm đề tài báo cáo với mục đích ứng dụng những kiến thức
đã được học.
Mặc dù đã hết sức cố gắng nhưng do kiến thức của nhóm em cịn nhiều hạn chế
nên khơng tránh khỏi sai sót trong q trình thưc hiện đề tài. Vì vậy, nhóm em rất
mong có được sự đóng góp ý kiến của cơ để chương trình của nhóm em được hồn
thiện hơn.
Nhóm em xin chân thành cảm ơn cô giáo hướng dẫn Nguyễn Thị Mỹ Dung đã
trực tiếp hướng dẫn, chỉ bảo và giúp đỡ nhóm em trong thời gian học.
Đồng Tháp, ngày 26 tháng 11 năm 2021
Báo cáo môn CSDL
MỤC LỤC
Trang 2
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
***
CHƯƠNG 1: THIẾT KẾ CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG QUẢN LÝ KINH DOANH
THIẾT BỊ CNTT HIỆP TOÀN............................................................................................................
I. Giới thiệu ......................................................................................................................................
1. Giới thiệu lược đồ quan hệ và sơ đồ lớp (Class – Object).........................................................
2. Xây dựng bộ dữ liệu mẫu..........................................................................................................
II. Mô tả các phương thức cho từng lớp (class – Object)..................................................................
CHƯƠNG 2: THIẾT KẾ CSDL HƯỚNG ĐỐI TƯỢNG QUẢN LÝ KINH DOANH THIẾT BỊ
CNTT HIỆP TOÀN..............................................................................................................................
I. Cài đặt class và phương thức.........................................................................................................
1. Cài đặt class <Khách hàng> và phương thức (Khách hàng)......................................................
2. Cài đặt class <Thiết bị> và phương thức (Thiết bị) …............................................................
3. Cài đặt class <Nhập> và phương thức (Nhập) …....................................................................
4. Cài đặt class <Xuất> và phương thức (Xuất) ….....................................................................
II. Truy vấn dữ liệu hướng đối tượng..............................................................................................
1. Thực thi phương thức cho class <Khách hàng> và kết quả.....................................................
2. Thực thi phương thức cho class <Thiết bị> và kết quả...........................................................
3. Thực thi phương thức cho class <Nhập> và kết quả..........................................................40
4. Thực thi phương thức cho class <Xuất> và kết quả................................................................
PHẦN KẾT LUẬN.............................................................................................................................
I. Kết quả đạt được..........................................................................................................................
II. Hướng phát triển.........................................................................................................................
Báo cáo môn CSDL
Trang 3
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
CHƯƠNG 1: THIẾT KẾ CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG
QUẢN LÝ KINH DOANH THIẾT BỊ CNNT HIỆP TOÀN
I. Giới thiệu
1. Giới thiệu lược đồ quan hệ và sơ đồ lớp (Class – Object)
2. Xây dựng bộ dữ liệu mẫu
- Bảng Khách hàng:
- Bảng Thiết bị:
- Bảng Nhập:
Báo cáo môn CSDL
Trang 4
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
- Bảng Xuất:
II. Mô tả các phương thức cho từng lớp (class – Object)
1. Khách hàng
1.1 Định nghĩa Phương thức 1 cho khách hàng.
Nhập mã khách hàng vào để trả về TÊN KHÁCH HÀNG | NGÀY SINH | ĐỊA
CHỈ | SỐ ĐIỆN THOẠI.
1.2 Định nghĩa phương thức 2 cho khách hàng
Thể hiện ra danh sách tất cả các khách hàng hiện tại với nội dung: MÃ KHÁCH
HÀNG | TÊN KHÁCH HÀNG | NGÀY SINH | ĐỊA CHỈ KHÁCH HÀNG | SỐ ĐIỆN
THOẠI KHÁCH HÀNG .
1.3 Định nghĩa phương thức 3 cho khách hàng
Đếm TỔNG SỐ KHÁCH HÀNG hiện có bao nhiêu.
1.4 Định nghĩa phương thức 4 cho khách hàng
Thêm khách hàng mới với thông tin nhập vào: MÃ KHÁCH HÀNG, TÊN
KHÁCH HÀNG, NGÀY SINH(dd-mm-yyyy), ĐỊA CHỈ, SỐ ĐIỆN THOẠI.
1.5 Định nghĩa phương thức 5 cho khách hàng
Cập nhật thông tin khách hàng với thông tin nhập vào: MÃ KHÁCH HÀNG (tiến
hành cập nhật), TÊN KHÁCH HÀNG MỚI, NGÀY SINH MỚI, ĐỊA CHỈ MỚI, SỐ
ĐIỆN THOẠI MỚI.
1.6 Định nghĩa phương thức 6 cho khách hàng
Xóa khách hàng, nhập MÃ KHÁCH HÀNG tiến hành xóa.
2. Thiết bị
2.1 Định nghĩa phương thức 1 cho thiết bị
Nhập mã khách hàng vào để trả về TÊN THIẾT BỊ | LOẠI THIẾT BỊ | ĐƠN VỊ
TÍNH.
2.2 Định nghĩa phương thức 2 cho thiết bị
Báo cáo môn CSDL
Trang 5
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
Thể hiện ra danh sách tất cả các khách hàng hiện tại với nội dung: MÃ THIẾT BỊ
| TÊN THIẾT BỊ | LOẠI THIẾT BỊ | ĐƠN VỊ TÍNH.
2.3 Định nghĩa phương thức 3 cho thiết bị
Đếm TỔNG SỐ THIẾT BỊ hiện có bao nhiêu.
2.4 Định nghĩa phương thức 4 cho thiết bị
Thêm thông tin thiết bị mới với thông tin nhập vào: MÃ THIẾT BỊ, TÊN THIẾT
BỊ, LOẠI THIẾT BỊ, ĐƠN VỊ TÍNH.
2.5 Định nghĩa phương thức 5 cho thiết bị
Cập nhật thông tin thiết bị với thông tin nhập vào: MÃ THIẾT BỊ (tiến hành cập
nhật), TÊN THIẾT BỊ MỚI, LOẠI THIẾT BỊ MỚI, ĐƠN VỊ TÍNH MỚI.
2.6 Định nghĩa phương thức 6 cho thiết bị
Xóa thiết bị, nhập MÃ THIẾT BỊ tiến hành xóa.
3. Nhập
3.1 Định nghĩa phương thức 1 cho Nhập
Liên kết lấy thông tin từ bảng KHÁCH HÀNG.
3.2 Định nghĩa phương thức 2 cho Nhập
Liên kết lấy thông tin bảng THIẾT BỊ.
3.3 Định nghĩa phương thức 3 cho Nhập
Lấy thông tin KHÁCH HÀNG theo MÃ THIẾT BỊ.
3.4 Định nghĩa Phuong thức 4 cho Nhập
Lấy thông tin THIẾT BỊ theo MÃ KHÁCH HÀNG.
3.5 Định nghĩa phương thức 5 cho Nhập
Thêm thông tin vào bảng NHẬP với thông tin nhập vào: MÃ KHÁCH HÀNG,
MÃ THIẾT BỊ, NGÀY NHẬP, SỐ LƯỢNG NHẬP, ĐƠN GIÁ NHẬP, NỘI DUNG
NHẬP.
4. Xuất
4.1 Định nghĩa phương thức 1 cho Xuất
Liên kết lấy thông tin từ bảng KHÁCH HÀNG.
4.2 Định nghĩa phương thức 2 cho Xuất
Liên kết lấy thông tin từ bảng THIẾT BỊ.
4.3 Định nghĩa phương thức 3 cho Xuất
Láy thông tin KHÁCH HÀNG theo MÃ THIẾT BỊ
Báo cáo môn CSDL
Trang 6
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
4.4 Định nghĩa phương thức 4 cho Xuất
Lấy thông tin THIẾT BỊ theo MÃ KHÁCH HÀNG
4.5 Định nghĩa phương thức 5 cho Xuất
Thêm thông tin vào bảng XUẤT với thông tin nhập vào: MÃ KHÁCH HÀNG,
MÃ THIẾT BỊ, NGÀY XUẤT, SỐ LƯỢNG XUẤT, ĐƠN GIÁ XUẤT, NỘI DUNG
XUẤT
CHƯƠNG 2: THIẾT KẾ CSDL HƯỚNG ĐỐI TƯỢNG
QUẢN LÝ KINH DOANH THIẾT BỊ CNTT HIỆP TOÀN.
I. Cài đặt class và phương thức
1. Cài đặt class <Khách hàng> và phương thức (Khách hàng)
1.1 Tạo đối tượng khách hàng:
CREATE OR REPLACE TYPE KHACHHANG_TYPE AS OBJECT
(
MAKH
CHAR(5),
TENKH
VARCHAR2(40),
NGSINH
DATE,
DIACHI
VARCHAR2 (100),
SODT
CHAR(10),
STATIC PROCEDURE SHOW_TENKH (MA CHAR),
STATIC PROCEDURE DS_KH,
STATIC FUNCTION GET_SOKH RETURN NUMBER,
STATIC PROCEDURE THEMKH (MA CHAR, TEN VARCHAR2,
NS DATE, DC VARCHAR2, SDT CHAR),
STATIC PROCEDURE SUAKH (MA CHAR, TENMOI VARCHAR2,
NSMOI DATE, DCMOI VARCHAR2, SDTMOI CHAR),
STATIC PROCEDURE XOAKH (MA CHAR)
);
1.2 Tạo bảng khách hàng:
Báo cáo môn CSDL
Trang 7
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
CREATE TABLE KHACHHANG OF KHACHHANG_TYPE
(
PRIMARY KEY(MAKH)
);
1.3 Định nghĩa phương thức cho khách hang
CREATE OR REPLACE TYPE BODY KHACHHANG_TYPE AS
--Định nghĩa phương thức 1 cho KHACHHANG
STATIC PROCEDURE SHOW_TENKH (MA CHAR) IS
CURSOR C_KH (MA CHAR) IS
SELECT TENKH, NGSINH, DIACHI, SODT
FROM KHACHHANG
WHERE MAKH = MA;
B_KH C_KH%ROWTYPE;
BEGIN
FOR B_KH IN C_KH(MA)
LOOP
DBMS_OUTPUT.PUT_LINE (MA || ' TEN LA: ' || B_KH.TENKH || ',
NGAY SINH: '|| B_KH.NGSINH || ', DIA CHI: ' || B_KH.DIACHI || ',
SO DIEN THOAI: ' || B_KH.SODT);
END LOOP;
END;
--Định nghĩa phương thức 2 cho KHACHHANG
STATIC PROCEDURE DS_KH IS
CURSOR C_KH IS
SELECT MAKH, TENKH, NGSINH, DIACHI, SODT
Báo cáo môn CSDL
Trang 8
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
FROM KHACHHANG;
B_KH C_KH%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE ('MA KHACH HANG | TEN KHACH HANG |
NGAY SINH | DIA CHI KHACH HANG | SO DIEN THOAI KHACH HANG');
FOR B_KH IN C_KH
LOOP
DBMS_OUTPUT.PUT_LINE (B_KH.MAKH || ' | ' || B_KH.TENKH || ' | ' ||
B_KH.NGSINH || ' | ' || B_KH.DIACHI || ' | ' || B_KH.SODT);
END LOOP;
END;
--Định nghĩa phương thức 3 cho KHACHHANG
STATIC FUNCTION GET_SOKH RETURN NUMBER IS TSKH NUMBER;
BEGIN
SELECT COUNT(*) INTO TSKH FROM KHACHHANG;
RETURN TSKH;
END;
--Định nghĩa phương thức 4 cho KHACHHANG
STATIC PROCEDURE THEMKH (MA CHAR, TEN VARCHAR2, NS DATE,
DC VARCHAR2, SDT CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM
FROM KHACHHANG
WHERE MAKH = MA;
Báo cáo môn CSDL
IF (DEM = 1) THEN
Trang 9
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
DBMS_OUTPUT.PUT_LINE('TRUNG MA SO KHACH HANG');
ELSE
INSERT INTO KHACHHANG VALUES (MA, TEN, NS, DC, SDT);
DBMS_OUTPUT.PUT_LINE('DA THEM KHACH HANG');
END IF;
END;
--Định nghĩa phương thức 5 KHACHHANG
STATIC PROCEDURE SUAKH (MA CHAR, TENMOI VARCHAR2,
NSMOI DATE, DCMOI VARCHAR2, SDTMOI CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM
FROM KHACHHANG
WHERE MAKH = MA;
IF (DEM = 1) THEN
UPDATE KHACHHANG
SET TENKH = TENMOI, NGSINH = NSMOI,
DIACHI = DCMOI, SODT = SDTMOI
WHERE MAKH = MA;
DBMS_OUTPUT.PUT_LINE('SUA KHACH HANG THANH CONG');
ELSE
DBMS_OUTPUT.PUT_LINE('MA SO KHACH HANG NAY KHONG CO');
END IF;
END;
--Định nghĩa phương thức 6 cho KHACHHANG
Báo cáo môn CSDL
Trang 10
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
STATIC PROCEDURE XOAKH (MA CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM
FROM KHACHHANG
WHERE MAKH = MA;
IF (DEM = 1) THEN
DELETE KHACHHANG
WHERE MAKH = MA;
DBMS_OUTPUT.PUT_LINE('XOA KHACH HANG THANH CONG');
ELSE
DBMS_OUTPUT.PUT_LINE('MA SO KHACH HANG NAY KHONG CO');
END IF;
END;
END;
2. Cài đặt class <Thiết bị> và phương thức (Thiết bị)
2.1 Tạo đối tượng thiết bị:
CREATE OR REPLACE TYPE THIETBI_TYPE AS OBJECT
(
MATB CHAR(5),
TENTB VARCHAR2(40),
LOAITB CHAR(15),
DVTTB CHAR(10),
STATIC PROCEDURE SHOW_TENTB (MA CHAR),
STATIC PROCEDURE DS_TB,
Báo cáo môn CSDL
Trang 11
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
STATIC FUNCTION GET_SOTB RETURN NUMBER,
STATIC PROCEDURE THEMTB (MA CHAR, TEN VARCHAR2, LOAI
CHAR, DVT CHAR),
STATIC PROCEDURE SUATB (MA CHAR, TENMOI VARCHAR2,
LOAIMOI CHAR, DVTMOI CHAR),
STATIC PROCEDURE XOATB (MA CHAR)
);
2.2 Tạo bảng thiết bị:
CREATE TABLE THIETBI OF THIETBI_TYPE
(
PRIMARY KEY(MATB)
);
2.3 Định nghĩ phương thức cho thiết bị
CREATE OR REPLACE TYPE BODY THIETBI_TYPE AS
--Định nghĩa phương thức 1 cho THIETBI
STATIC PROCEDURE SHOW_TENTB (MA CHAR) IS
CURSOR C_TB (MA CHAR) IS
SELECT TENTB, LOAITB, DVTTB
FROM THIETBI
WHERE MATB = MA;
B_TB C_TB%ROWTYPE;
BEGIN
FOR B_TB IN C_TB(MA)
LOOP
DBMS_OUTPUT.PUT_LINE (MA || ' LA THIET BI: ' || B_TB.TENTB || ',
LOAI: '|| B_TB.LOAITB || ', DON VI TÍNH: ' || B_TB.DVTTB);
Báo cáo mơn CSDL
Trang 12
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
END LOOP;
END;
--Định nghĩa phương thức 2 cho THIETBI
STATIC PROCEDURE DS_TB IS
CURSOR C_TB IS
SELECT MATB, TENTB, LOAITB, DVTTB
FROM THIETBI;
B_TB C_TB%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE ('MA THIET BI | TEN THIET BI | LOAI
| DON VI TINH');
FOR B_TB IN C_TB
LOOP
DBMS_OUTPUT.PUT_LINE (B_TB.MATB || ' | ' || B_TB.TENTB || '
| ' || B_TB.LOAITB || ' | ' || B_TB.DVTTB);
END LOOP;
END;
--Định nghĩa phương thức 3 cho THIETBI
STATIC FUNCTION GET_SOTB RETURN NUMBER IS TSTB NUMBER;
BEGIN
SELECT COUNT(*) INTO TSTB
FROM THIETBI;
RETURN TSTB;
END;
--Định nghĩa phương thức 4 cho THIETBI
Báo cáo môn CSDL
Trang 13
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
STATIC PROCEDURE THEMTB (MA CHAR, TEN VARCHAR2, LOAI
CHAR, DVT CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM FROM THIETBI WHERE MATB = MA;
IF (DEM = 1) THEN
DBMS_OUTPUT.PUT_LINE('TRUNG MA SO THIET BI');
ELSE
INSERT INTO THIETBI VALUES (MA, TEN, LOAI, DVT);
DBMS_OUTPUT.PUT_LINE('DA THEM THIET BI');
END IF;
END;
--Định nghĩa phương thức 5 THIETBI
STATIC PROCEDURE SUATB (MA CHAR, TENMOI VARCHAR2,
LOAIMOI CHAR, DVTMOI CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM FROM THIETBI WHERE MATB = MA;
IF (DEM = 1) THEN
UPDATE THIETBI
SET TENTB = TENMOI, LOAITB = LOAIMOI, DVTTB =
DVTMOI
WHERE MATB = MA;
DBMS_OUTPUT.PUT_LINE('SUA THIET BI THANH CONG');
ELSE
DBMS_OUTPUT.PUT_LINE('MA SO THIET BI NAY KHONG CO');
Báo cáo môn CSDL
Trang 14
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
END IF;
END;
--Định nghĩa phương thức 6 cho THIETBI
STATIC PROCEDURE XOATB (MA CHAR) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM FROM THIETBI WHERE MATB = MA;
IF (DEM = 1) THEN
DELETE THIETBI
WHERE MATB = MA;
DBMS_OUTPUT.PUT_LINE('XOA THIET BI THANH CONG');
ELSE
DBMS_OUTPUT.PUT_LINE('MA SO THIET BI NAY KHONG CO');
END IF;
END;
END;
3 Cài đặt class <Nhập> và phương thức (Nhập)
3.1 Tạo đối tượng nhập:
CREATE OR REPLACE TYPE NHAP_TYPE AS OBJECT
(
NHAPKH REF KHACHHANG_TYPE,
NHAPTB REF THIETBI_TYPE,
NGNHAP DATE,
SLNHAP NUMBER,
DGNHAP NUMBER,
Báo cáo môn CSDL
Trang 15
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
NDNHAP VARCHAR2(40),
MEMBER FUNCTION GET_KHACHHANG RETURN
KHACHHANG_TYPE,
MEMBER FUNCTION GET_THIETBI RETURN THIETBI_TYPE,
STATIC FUNCTION
RETURN KHACHHANG_TYPE,
GET_KHNHAPTB
(MTB
NVARCHAR2)
STATIC FUNCTION
RETURN THIETBI_TYPE,
GET_TBNHAPKH
(MKH
NVARCHAR2)
STATIC PROCEDURE THEM_NHAP (MKH NVARCHAR2, MTB
NVARCHAR2, NGAY DATE, SL NUMBER, DG NUMBER, ND VARCHAR2)
);
3.2 Tạo bảng nhập
CREATE TABLE NHAP OF NHAP_TYPE
(
NHAPKH NOT NULL,
NHAPTB NOT NULL,
NGNHAP NOT NULL,
FOREIGN KEY (NHAPKH) REFERENCES KHACHHANG,
FOREIGN KEY (NHAPTB) REFERENCES THIETBI
);
3.3 Định nghĩa phương thức cho nhập
CREATE OR REPLACE TYPE BODY NHAP_TYPE AS
--Định nghĩa phương thức 1 cho NHAP
MEMBER
FUNCTION
GET_KHACHHANG
KHACHHANG_TYPE IS KH1 KHACHHANG_TYPE;
RETURN
BEGIN
SELECT DEREF(SELF.NHAPKH) INTO KH1 FROM DUAL;
Báo cáo môn CSDL
Trang 16
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
RETURN KH1;
END;
--Định nghĩa phương thức 2 cho NHAP
MEMBER FUNCTION GET_THIETBI RETURN THIETBI_TYPE IS
TB1 THIETBI_TYPE;
BEGIN
SELECT DEREF(SELF.NHAPTB) INTO TB1 FROM DUAL;
RETURN TB1;
END;
--Định nghĩa phương thức 3 cho NHAP
STATIC FUNCTION GET_KHNHAPTB (MTB
RETURN KHACHHANG_TYPE IS KH2 KHACHHANG_TYPE;
NVARCHAR2)
CURSOR C_KH2 IS
SELECT
DEREF(N.NHAPKH).MAKH
AS
MAKH2,
DEREF(N.NHAPKH).TENKH AS TENKH2, DEREF(N.NHAPKH).NGSINH AS
NSKH2, DEREF(N.NHAPKH).DIACHI AS DCKH2, DEREF(N.NHAPKH).SODT AS
SDTKH2
FROM NHAP N, KHACHHANG KH
WHERE
KH.MAKH
DEREF(N.NHAPTB).MATB = MTB;
=
DEREF(N.NHAPKH).MAKH
AND
C_ROWKH C_KH2%ROWTYPE;
BEGIN
FOR C_ROWKH IN C_KH2
LOOP
KH2
C_ROWKH.TENKH2,
C_ROWKH.SDTKH2);
:=
KHACHHANG_TYPE(C_ROWKH.MAKH2,
C_ROWKH.NSKH2,
C_ROWKH.DCKH2,
END LOOP;
Báo cáo môn CSDL
Trang 17
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
RETURN KH2;
END;
--Định nghĩa phương thức 4 cho NHAP
STATIC FUNCTION GET_TBNHAPKH
RETURN THIETBI_TYPE IS TB2 THIETBI_TYPE;
(MKH
NVARCHAR2)
CURSOR C_TB2 IS
SELECT
DEREF(N.NHAPTB).MATB
AS
MATB2,
DEREF(N.NHAPTB).TENTB AS TENTB2, DEREF(N.NHAPTB).LOAITB AS
LOAITB2,DEREF(N.NHAPTB).DVTTB AS DVTTB2
FROM NHAP N, THIETBI TB
WHERE
TB.MATB
DEREF(N.NHAPKH).MAKH = MKH;
=
DEREF(N.NHAPTB).MATB
AND
C_ROWTB C_TB2%ROWTYPE;
BEGIN
FOR C_ROWTB IN C_TB2
LOOP
TB2
:=
THIETBI_TYPE(C_ROWTB.MATB2,
C_ROWTB.TENTB2, C_ROWTB.LOAITB2, C_ROWTB.DVTTB2);
END LOOP;
RETURN TB2;
END;
--Định nghĩa phương thức 5 cho NHAP
STATIC PROCEDURE THEM_NHAP(MKH NVARCHAR2, MTB
NVARCHAR2, NGAY DATE, SL NUMBER, DG NUMBER, ND VARCHAR2) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM FROM NHAP N WHERE
DEREF(N.NHAPKH).MAKH = MKH AND DEREF(N.NHAPTB).MATB = MTB;
Báo cáo môn CSDL
Trang 18
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
IF (DEM = 1) THEN
THIET BI NAY');
DBMS_OUTPUT.PUT_LINE('TRUNG KHACH HANG DA NHAP
ELSE
INSERT INTO NHAP VALUES
(
(SELECT REF(KH) FROM KHACHHANG KH WHERE MAKH
= MKH),
(SELECT REF(TB) FROM THIETBI TB WHERE MATB =
MTB),
NGAY, SL, DG, ND
);
END;
END;
4. Cài đặt class <Xuất> và phương thức (Xuất)
4.1 Tạo đối tượng Xuất:
CREATE OR REPLACE TYPE XUAT_TYPE AS OBJECT
(
XUATKH REF KHACHHANG_TYPE,
XUATTB REF THIETBI_TYPE,
NGXUAT DATE,
SLXUAT NUMBER,
DGXUAT NUMBER,
NDXUAT VARCHAR2(40),
MEMBER FUNCTION GET_KHACHHANG RETURN
KHACHHANG_TYPE,
MEMBER FUNCTION GET_THIETBI RETURN THIETBI_TYPE,
Báo cáo môn CSDL
Trang 19
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
STATIC FUNCTION
RETURN KHACHHANG_TYPE,
GET_KHXUATTB
(MTB
NVARCHAR2)
STATIC FUNCTION
RETURN THIETBI_TYPE,
GET_TBXUATKH
(MKH
NVARCHAR2)
STATIC PROCEDURE THEM_XUAT (MKH NVARCHAR2, MTB
NVARCHAR2, NGAY DATE, SL NUMBER, DG NUMBER, ND VARCHAR2)
);
4.2 Tạo bảng Xuất
CREATE TABLE XUAT OF XUAT_TYPE
(
XUATKH NOT NULL,
XUATTB NOT NULL,
NGXUAT NOT NULL,
FOREIGN KEY (XUATKH) REFERENCES KHACHHANG,
FOREIGN KEY (XUATTB) REFERENCES THIETBI
);
4.3 Định nghĩa phương thức cho Xuất
CREATE OR REPLACE TYPE BODY XUAT_TYPE AS
--Định nghĩa phương thức 1 cho XUAT
MEMBER
FUNCTION
GET_KHACHHANG
KHACHHANG_TYPE IS KH1 KHACHHANG_TYPE;
RETURN
BEGIN
SELECT DEREF(SELF.XUATKH) INTO KH1 FROM DUAL;
RETURN KH1;
END;
--Định nghĩa phương thức 2 cho XUAT
Báo cáo môn CSDL
Trang 20
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
MEMBER FUNCTION GET_THIETBI RETURN THIETBI_TYPE IS
TB1 THIETBI_TYPE;
BEGIN
SELECT DEREF(SELF.XUATTB) INTO TB1 FROM DUAL;
RETURN TB1;
END;
--Định nghĩa phương thức 3 cho XUAT
STATIC FUNCTION GET_KHXUATTB (MTB
RETURN KHACHHANG_TYPE IS KH2 KHACHHANG_TYPE;
NVARCHAR2)
CURSOR C_KH2 IS
SELECT
DEREF(X.XUATKH).MAKH
AS
MAKH2,
DEREF(X.XUATKH).TENKH AS TENKH2, DEREF(X.XUATKH).NGSINH AS
NSKH2, DEREF(X.XUATKH).DIACHI AS DCKH2, DEREF(X.XUATKH).SODT AS
SDTKH2
FROM XUAT X, KHACHHANG KH
WHERE
KH.MAKH
DEREF(X.XUATTB).MATB = MTB;
=
DEREF(X.XUATKH).MAKH
AND
C_ROWKH C_KH2%ROWTYPE;
BEGIN
FOR C_ROWKH IN C_KH2
LOOP
KH2
C_ROWKH.TENKH2,
C_ROWKH.SDTKH2);
:=
KHACHHANG_TYPE(C_ROWKH.MAKH2,
C_ROWKH.NSKH2,
C_ROWKH.DCKH2,
END LOOP;
RETURN KH2;
END;
--Định nghĩa phương thức 4 cho XUAT
Báo cáo môn CSDL
Trang 21
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
STATIC FUNCTION GET_TBXUATKH
RETURN THIETBI_TYPE IS TB2 THIETBI_TYPE;
(MKH
NVARCHAR2)
CURSOR C_TB2 IS
SELECT
DEREF(X.XUATTB).MATB
AS
MATB2,
DEREF(X.XUATTB).TENTB AS TENTB2, DEREF(X.XUATTB).LOAITB AS
LOAITB2,DEREF(X.XUATTB).DVTTB AS DVTTB2
FROM XUAT X, THIETBI TB
WHERE
TB.MATB
DEREF(X.XUATKH).MAKH = MKH;
=
DEREF(X.XUATTB).MATB
AND
C_ROWTB C_TB2%ROWTYPE;
BEGIN
FOR C_ROWTB IN C_TB2
LOOP
TB2
:=
THIETBI_TYPE(C_ROWTB.MATB2,
C_ROWTB.TENTB2, C_ROWTB.LOAITB2, C_ROWTB.DVTTB2);
END LOOP;
RETURN TB2;
END;
--Định nghĩa phương thức 5 cho XUAT
STATIC PROCEDURE THEM_XUAT(MKH NVARCHAR2, MTB
NVARCHAR2, NGAY DATE, SL NUMBER, DG NUMBER, ND VARCHAR2) IS
DEM INT;
BEGIN
SELECT COUNT(*) INTO DEM FROM XUAT X
WHERE DEREF(X.XUATKH).MAKH = MKH
AND DEREF(X.XUATTB).MATB = MTB;
IF (DEM = 1) THEN
Báo cáo môn CSDL
Trang 22
Trường Đại Học Đồng Tháp
THIET BI NAY');
GVHD: Nguyễn Thị Mỹ Dung
DBMS_OUTPUT.PUT_LINE('TRUNG KHACH HANG DA XUAT
ELSE
INSERT INTO XUAT VALUES
(
(SELECT REF(KH) FROM KHACHHANG KH WHERE MAKH =
MKH),
(SELECT REF(TB) FROM THIETBI TB WHERE MATB = MTB),
NGAY, SL, DG, ND
);
END;
END;
II. Truy vấn dữ liệu hướng đối tượng
1. Thực thi phương thức cho class <Khách hàng> và kết quả
1.1 Tìm khách hàng theo mã khách hàng:
SET SERVEROUTPUT ON;
DECLARE
MA KHACHHANG.MAKH%TYPE := '&MA';
BEGIN
MA := UPPER(MA);
KHACHHANG_TYPE.SHOW_TENKH (MA);
END;
* Kết quả
Báo cáo môn CSDL
Trang 23
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
1.2 Liệt kê danh sách khách hàng:
SET SERVEROUTPUT ON;
BEGIN
KHACHHANG_TYPE.DS_KH();
END;
* Kết quả:
1.3 Tính tổng số khách hàng hiện có:
SET SERVEROUTPUT ON;
SELECT KHACHHANG_TYPE.GET_SOKH() AS TONGKH FROM DUAL;
* Kết quả:
Báo cáo môn CSDL
Trang 24
Trường Đại Học Đồng Tháp
GVHD: Nguyễn Thị Mỹ Dung
1.4 Thêm khách hàng vào bảng khách hàng.
SET SERVEROUTPUT ON;
DECLARE
MA KHACHHANG.MAKH%TYPE := '&MA';
HOTEN KHACHHANG.TENKH%TYPE := '&HOTEN';
NGAYSINH KHACHHANG.NGSINH%TYPE := '&NGAYSINH';
DIACHI KHACHHANG.DIACHI%TYPE := '&DIACHI';
SODIENTHOAI KHACHHANG.SODT%TYPE := '&SODIENTHOAI';
BEGIN
MA := UPPER(MA);
KHACHHANG_TYPE.THEMKH (MA, HOTEN, NGAYSINH,
DIACHI, SODIENTHOAI);
END;
* Kết quả:
Báo cáo môn CSDL
Trang 25