Tải bản đầy đủ (.pdf) (49 trang)

CƠ SỞ DỮ LIỆU NÂNG CAO QUẢN LÝ KINH DOANH THIẾT BỊ CNTT HIỆP TOÀN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 49 trang )

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


×