Professional Documents
Culture Documents
Báo Cáo
Báo Cáo
Trong thờ i đạ i cô ng nghệ hiện nay, việc quả n lý thô ng tin trong cá c thư viện
đò i hỏ i sự hiệu quả và chính xá c cao. Em đã chọ n đề tà i "Hệ Quả n Trị Cơ Sở Dữ
Liệu Quả n Lý Thư Viện vớ i Oracle" để phá t triển mộ t hệ thố ng thô ng tin hoà n
chỉnh, minh bạ ch và dễ quả n lý. Sử dụ ng Oracle, mộ t trong nhữ ng hệ thố ng quả n
trị cơ sở dữ liệu hà ng đầ u thế giớ i, chú ng tô i đã đề xuấ t mộ t giả i phá p tiên tiến
cho việc quả n lý thô ng tin trong thư viện.
NhanVienID: Mã số định danh duy nhấ t cho mỗ i nhâ n viên thư viện.
HoTen: Tên đầy đủ củ a nhâ n viên.
GioiTinh: Giớ i tính củ a nhâ n viên.
DiaChi: Địa chỉ nhâ n viên.
DienThoai: Số điện thoạ i củ a nhâ n viên.
ChiTietID: Mã số định danh duy nhấ t cho mỗ i chi tiết trong phiếu mượ n
sá ch.
PhieuMuonID: Khó a ngoạ i tham chiếu đến PhieuMuon (PhieuMuonID) -
xá c định phiếu mượ n sá ch.
BookID: Khó a ngoạ i tham chiếu đến Sach (BookID) - xá c định sá ch đượ c
mượ n trong phiếu mượ n đó .
Mỗ i cuố n sá ch thuộ c mộ t thể loạ i cụ thể, nhưng mỗ i thể loạ i có thể có nhiều
cuố n sá ch. Điều này đượ c thể hiện qua khó a ngoạ i GenreID trong bả ng
Sach (Books) tham chiếu đến TheLoai (Genres).
Mỗ i độ c giả có thể có nhiều phiếu mượ n sá ch, nhưng mỗ i phiếu mượ n chỉ
á nh xạ đến mộ t độ c giả . Điều này đượ c thể hiện qua khó a ngoạ i ReaderID
trong bả ng PhieuMuon (Borrowing Receipts) tham chiếu đến DocGia
(Readers).
Mỗ i phiếu mượ n sá ch có thể chứ a nhiều chi tiết mượ n sá ch, và mỗ i chi tiết
mượ n sá ch chỉ á nh xạ đến mộ t phiếu mượ n sá ch cụ thể. Điều này đượ c thể
hiện qua khó a ngoạ i PhieuMuonID trong bả ng ChiTietPhieuMuon
(Borrowing Details) tham chiếu đến PhieuMuon (Borrowing Receipts).
Chương 2. Xây dựng cơ sở dữ liệu
INSERT INTO Sach (BookID, Title, ISBN, Publisher, PublishYear, GenreID, AuthorID,
AvailableCopies) VALUES
(1, 'Tiểu Thuyết A', '1234567890', 'NXB A', 2000, 1, 1, 5),
(2, 'Kinh Tế Thị Trường', '2345678901', 'NXB B', 2010, 2, 2, 3),
(3, 'Khoa Học Đằng Sau Hậu Tận Thế', '3456789012', 'NXB C', 2015, 3, 3, 8);
INSERT INTO MuonSach (LoanID, ReaderID, BookID, LoanDate, DueDate, ReturnDate) VALUES
(1, 1, 1, '2023-10-16', '2023-10-23', '2023-10-23'),
(2, 2, 3, '2023-10-15', '2023-10-22', NULL);
USE QLTHUVIEN
GO
Truy vấn lồng nhau để xem thông tin về người đọc và các sách mà họ đã
mượn:
FROM DocGia
Trong truy vấ n này, truy vấ n lồ ng nhau đang chạy trong mỗ i dò ng củ a kết quả
chính để lấy tiêu đề củ a sá ch đượ c mượ n bở i ngườ i đọ c đó .
Truy vấn lồng nhau để tính tổng số lượng sách mỗi người đọc đã mượn:
FROM DocGia
GROUP BY DocGia.ReaderID;
Trong truy vấ n này, truy vấ n lồ ng nhau tính tổ ng số lượ ng bả n sao khả dụ ng củ a
sá ch mỗ i ngườ i đọ c đã mượ n.
Truy vấn lồng nhau để lấy danh sách các sách có số lượng bản sao khả dụng
lớn hơn 0:
SELECT *
FROM Sach
FROM Sach
GROUP BY TheLoai.GenreName;
Tính trung bình số lượng sách được mượn theo tác giả:
FROM TacGia
GROUP BY TacGia.AuthorName;
FROM DocGia
GROUP BY DocGia.ReaderID;
FROM MuonSach
GROUP BY MuonSach.LoanDate
LIMIT 1;
FROM MuonSach
GROUP BY MONTH(MuonSach.LoanDate);
FROM DocGia
WHERE Sach.GenreID = 1;
Sử dụng hàm LIKE để tìm sách theo tiêu đề chứa từ khóa "SQL"
Sử dụng ORDER BY để sắp xếp kết quả theo năm xuất bản giảm dần:
Sử dụng LIMIT để giới hạn số lượng kết quả trả về (phân trang):
Sử dụng UNION để kết hợp kết quả của hai truy vấn:
UNION
Sử dụng INNER JOIN, LEFT JOIN và RIGHT JOIN để kết hợp các bảng khác
nhau:
FROM DocGia
Sử dụng GROUP BY và HAVING để tìm tác giả có tổng số lượng sách mượn
lớn hơn 5:
FROM TacGia
GROUP BY TacGia.AuthorName
HAVING TotalBorrowedBooks > 5;
CHƯƠNG 4. LẬP TRÌNH PLSQL
Trong SQL, câ u lệnh IF, ELSE đượ c sử dụ ng để kiểm tra điều kiện và thự c hiện cá c
hà nh độ ng tương ứ ng.
IF @score >= 70
PRINT 'Pass';
ELSE
PRINT 'Fail';
BEGIN
END
Câ u lệnh WHILE sẽ lặ p qua khố i câ u lệnh bên trong (giữ a BEGIN và END) miễn là
@counter nhỏ hơn hoặ c bằ ng 10. Mỗ i lầ n lặ p, giá trị củ a @counter đượ c tă ng lên
1 và in ra mà n hình.
4.2. Một số thủ tục
AS
BEGIN
END;
-- Tạ o thủ tụ c vớ i tham số đầ u và o
@EmployeeID INT
AS
BEGIN
END;
EXEC GetEmployeeDetails;
-- Gọ i thủ tụ c vớ i tham số
DECLARE @ID INT = 1;
@EmployeeID INT
AS
BEGIN
ELSE
END;
@MaxNumber INT
AS
BEGIN
BEGIN
PRINT @Counter;
END;
END;
AS
BEGIN
RETURN @Count;
END;
RETURN INT
AS
book_count INT;
BEGIN
RETURN book_count;
END CountBooksByAuthor;
CHƯƠNG 5. QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE
--1. Check
SQL> SELECT database_status FROM v$instance;
-- 2. Startup
STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[EXCLUSIVE | PARALLEL | SHARED]
[OPEN [RECOVER][database]|MOUNT |NOMOUNT]
ALTER database { MOUNT | OPEN |OPEN READ ONLY | OPEN READ WRITTE}
-- 3. Shutdown
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
-- 4.Suspend, resume
ALTER system { SUSPEND | RESUME }
Tablespace altered.
3. Drop tablespace
Tablespace dropped.
Đi tớ i trang Users
Trên trang Users, nhấ p và o Create .
Trang Create Users xuấ t hiện, hiển thị trang con General.
Trong trang Tên Ngườ i Dù ng, vui lò ng nhậ p Nickname.
Trong danh sá ch Hồ Sơ, hãy chọ n giá trị Mặ c Định (DEFAULT). Thiết lậ p này
xá c định chính sá ch mậ t khẩ u mặ c định cho ngườ i dù ng.
Đố i vớ i trườ ng Mậ t Khẩ u trong danh sá ch Xá c Thự c (Authentication), nhậ p
mậ t khẩ u.
Trong cá c trườ ng Nhậ p Mậ t Khẩ u và Xá c Nhậ n Mậ t Khẩ u, vui lò ng nhậ p mậ t
khẩ u mớ i.
Khô ng chọ n Hết Hạ n Mậ t Khẩ u Ngay Bây Giờ (Expire Password Now). Nếu tà i
khoả n đượ c đặ t thà nh hết hạ n, ngườ i dù ng hoặ c quả n trị viên cơ sở dữ liệu
phả i đổ i mậ t khẩ u trướ c khi đă ng nhậ p và o cơ sở dữ liệu.
(Tù y chọ n) Bên cạ nh trườ ng Bả ng Lưu Trữ Mặ c Định, chọ n biểu tượ ng đèn
pin, sau đó chọ n USERS Tablespace, và sau đó nhấ p SELECT. Tấ t cả cá c đố i
tượ ng mà ngườ i dù ng tạ o sau đó sẽ đượ c lưu trong USERS Tablespace, trừ khi
có thiết lậ p đặ c biệt. Nếu bạ n khô ng chọ n Bả ng Lưu Trữ Mặ c Định, thì
Nickname sẽ đượ c gá n khô ng gian bằ ng mặ c định cho cơ sở dữ liệu, tứ c là , nó
sẽ đượ c tạ o trong khô ng gian mặ c định mà bạ n đã thiết lậ p.
(Tù y chọ n) Bên cạ nh trườ ng Bả ng Tạ m Thờ i, nhấ p và o biểu tượ ng đèn pin,
chọ n Bả ng Tạ m (TEMP), sau đó nhấ p SELECT. Nếu bạ n để trố ng trườ ng Bả ng
Tạ m Thờ i, thì Nickname sẽ đượ c gá n khô ng gian bả ng tạ m thờ i mặ c định cho
cơ sở dữ liệu, vù ng này sẽ nằ m trong TEMP trong cơ sở dữ liệu mớ i đượ c cà i
đặ t.
Đố i vớ i tù y chọ n Trạ ng Thá i, hãy chấ p nhậ n lự a chọ n mặ c định là Mở Khó a
(Unlocked). Sau đó , bạ n có thể khó a tà i khoả n ngườ i dù ng để ngă n ngườ i dù ng
đă ng nhậ p bằ ng tà i khoả n đó . Việc khó a tà i khoả n ngườ i dù ng tạ m thờ i từ chố i
quyền truy cậ p và o tà i khoả n ngườ i dù ng, điều này tố t hơn là xó a tà i khoả n, vì
việc xó a tà i khoả n cũ ng xó a tấ t cả cá c đố i tượ ng lượ c đồ do ngườ i dù ng sở
hữ u.
Gá n hạ n mứ c 10 MB trên vù ng USERS tablespace.
Nếu bạ n khô ng bấ m OK khi gá n hạ n mứ c vù ng bả ng (bướ c trướ c), thì hãy bấ m
OK ngay để tạ o ngườ i dù ng.
Sao lưu dữ liệu trên Oracle Database là quá trình lưu lạ i cá c tệp dữ liệu, tệp redo
log và tệp điều khiển củ a cơ sở dữ liệu để có thể khô i phụ c lạ i nếu xảy ra lỗ i hoặ c
mấ t má t dữ liệu. Có nhiều phương phá p sao lưu dữ liệu trên Oracle Database,
nhưng mộ t trong nhữ ng cá ch phổ biến nhấ t là sử dụ ng Recovery Manager
(RMAN) - mộ t ứ ng dụ ng client cơ sở dữ liệu Oracle.
Để sao lưu dữ liệu trên Oracle Database bằ ng RMAN, bạ n cầ n thự c hiện cá c bướ c
sau: