Vì dụ như các table: DIEM, KETQUA, HOCSINH đều liên quan đến học sinhnên tạo một tablespace có tên là student để chứa 3 bảng đó.... * Đối với cơ sở dữ liệu trên, tạo ra 3 tablesapce để p
Trang 1HỌC VIỆN NGÂN HÀNG
Khoa: Hệ Thống Thông Tin Quản Lý Môn: Cơ sở dữ liệu 2
BÁO CÁO: CASE STYDY 1
QUẢN LÝ HỒ SƠ VÀ ĐIỂM
Ở TRƯỜNG TRUNG HỌC PHỔ THÔNG
Nhóm làm bài: 01
Mã môn học: IS12A Nhóm 01
Giảng viên hướng dẫn: Cô Nguyễn Thị Thu Trang
Hà Nội, ngày 24 tháng 04 năm 2020
Trang 2DANH SÁCH THÀNH VIÊN
2 Nguyễn Thị Huyền (NT) 21A4040047 K21HTTTA 23%
Trang 3MỤC LỤC
2.2 Lý do tạo thêm tablespace cho cơ sở dữ liệu 8 2.3 Tạo các tablespace cần thiết, table và mối quan hệ giữa các bảng 9
Trang 4I-Thông tin dự án
Dự án xây dựng hệ thống quản lý hồ sơ và điểm ở trường trung học phổ thông
Mô tả tóm tắt nghiệp vụ hoạt động:
Trong nhà trường phổ thông trung học, mỗi khi nhập trường phải nộp một bộ hồ sơ cá nhân Các thông tin về từng học sinh sẽ được nhà trường nắm rõ thông qua hồ sơ đó và tiến hành làm thẻ học sinh cho từng em
Mỗi học kỳ, một học sinh có thể nhận được các loại điểm: miệng, 15 phút, 1 tiết, điểm thi học kì của từng môn Cuối học kì nhà trường tổng kết điểm trung bình của từng môn, của toàn kì cho mỗi học sinh Học sinh sẽ nhận được kết quả học tập và nhận xét về ý thức học tập và xếp loại vào cuối kì và cả năm
Ban giám hiệu có trách nhiệm cung cấp các quy định tính điểm, các đánh giá xếp loại, quy định về khen thưởng kỷ luật Cuối mỗi kỳ học, ban giám hiệu nhận được các báo cáo về tình hình chung của từng lớp và đưa ra quyết định khen thưởng cho từng cá nhân học sinh, đồng thời ra quyết định danh sách lên lớp.
II-Triển khai dự án
1 Thiết kế ban đầu (thiết kế mức vật lý và logic)
+ Sơ đồ thực thể liên kết
Trang 5+ Sơ đồ quan hệ
+ Xây dựng các bảng lưu trữ thông tin của trường trung học phổ thông
Bảng HOCSINH
Trang 6Thuộc tính Kiểu dữ liệu Kích
Thay đổi: Số điện thoại di động ở Việt Nam hiện nay có 10 chữ số (thay vì 11 chữ số như ban đầu)
Bảng BANGIAMHIEU
Thuộc tính Kiểu dữ liệu Kích
thước
Định dạng Ràng buộc
NULL
NULL
Bảng KHENTHUONG_GV
Trang 7Thuộc tính Kiểu dữ liệu Kích
thước
Định dạng Ràng buộc
Bảng KHENTHUONG_HS
Thuộc tính Kiểu dữ liệu Kích
thước
Định dạng Ràng buộc
C: có lên lớp K: không lên lớp
Thay đổi: Điểm trung bình gồm 1 chữ số nguyên và 1 chữ số thập phân
Bảng GIAOVIEN
Trang 8Thuộc tính Kiểu dữ liệu Kích
Thuộc tính Kiểu dữ liệu Kích thước Định dạng Ràng buộc
Bảng DIEM
Thuộc tính Kiểu dữ liệu Kích thước Định dạng Ràng buộc
Trang 9MaHS CHAR 9 HS****K** Khóa chính
Thuộc tính Kiểu dữ liệu Kích thước Định dạng Ràng buộc
2 Xây dựng và quản lý cơ sở dữ liệu
2.1 Tạo cơ sở dữ liệu với tên gọi phù hợp.
+ Tên CSDL: Quan_Ly_Hoc_Sinh
+ User tạo: user hệ thống SYS , nhóm quyền SYSDBA
Trang 102.2 Có cần thiết phải tạo nhiều tablespace cho cơ sở dữ liệu này không? Hãy đưa ra những giải thích hợp lý cho quyết định của anh chị.
Việc tạo nhiều tablespace là cần thiết cho cơ sở dữ liệu , vì:
+ Dùng tablespace sẽ giúp quản lí data dễ dàng hơn, cho hiệu suất cao hơn, an toàn và bảo mật dữ liệu tốt hơn.
+ Có thể cấp phát hạn ngạch không gian cho nhiều người dùng khác nhau trong hệ thống.
+ Dễ dàng backup hay recover từng phần Mỗi phần này chính là 1 tablespace + Nếu một lúc nào đó dữ liệu lớn ra, cần thêm ổ cứng để lưu trữ thì ta gắn thêm ổ cứng, lấy 1 vùng không gian trên ổ cứng mới dùng cho dữ liệu Để gắn kết vùng không gian mới này với vùng không gian hiện tại thì phải dùng tablespace.
+ Nếu ta muốn 1 phần CSDL không được truy xuất nữa thì chỉ cần dừng 1 tablespace
đó chứ không cần phải dừng toàn bộ CSDL.
Lý do tạo các tablespace:
- Trong các table có sự liên kết chặt chẽ và liên quan với nhau thì sẽ tạo thành một tablespace Vì dụ như các table: DIEM, KETQUA, HOCSINH đều liên quan đến học sinh nên tạo một tablespace có tên là student để chứa 3 bảng đó.
Trang 11* Đối với cơ sở dữ liệu trên, tạo ra 3 tablesapce để phục vụ cho cơ sở dữ liệu
Gồm các bảng: CHUNHIEM, GIAOVIEN, DAY.
2.3 Tạo các tablespace cần thiết, các bảng theo thiết kế vật lý đã nêu ở trên và mối quan hệ tương ứng giữa các bảng.
2.3.1 Mối quan hệ giữa các bảng, tạo các bảng cùng ràng buộc
+ Mối quan hệ giữa các bảng:
MaHS CHAR (9) NOT NULL PRIMARY KEY,
CHECK (MaHS LIKE'HS K '),
TenHS NVARCHAR2 (30) NOT NULL,
MaLop CHAR (5) NOT NULL,
NgaySinh DATE NOT NULL,
GioiTinh NVARCHAR2 (4) NOT NULL,
DanToc NVARCHAR2 (5),
Trang 12Tạo bảng Ban Giám Hiệu
CREATE TABLE BanGiamHieu
(
MaBGH CHAR (5) NOT NULL PRIMARY KEY,
CHECK (MaBGH LIKE 'BGH '),
TenBGH NVARCHAR2 (30) NOT NULL,
ChucVu CHAR (50) NOT NULL
);
Tạo bảng Khen Thưởng Giáo Viên
CREATE TABLE KhenThuong_GV
(
MaBGH CHAR (5) NOT NULL,
CHECK (MaBGH LIKE 'BGH '),
MaGV CHAR (5) NOT NULL PRIMARY KEY,
CHECK (MaGV LIKE 'GV _'),
HocKy NUMBER (1) NOT NULL,
NamHoc VARCHAR (9) NOT NULL,
CONSTRAINT ktgv_fk FOREIGN KEY (MaBGH) REFERENCES BanGiamHieu (MaBGH)
);
Tạo bảng Khen Thưởng Học Sinh
CREATE TABLE KhenThuong_HS
(
MaHS CHAR (9) NOT NULL,
CHECK (MaHS LIKE'HS K '),
MaBGH CHAR (5) NOT NULL,
CHECK (MaBGH LIKE 'BGH '),
CONSTRAINT kths_fk FOREIGN KEY (MaBGH) REFERENCES BanGiamHieu (MaBGH),
CONSTRAINT hs_fk FOREIGN KEY (MaHS) REFERENCES HocSinh (MaHS), HocKy NUMBER (1) NOT NULL,
NamHoc VARCHAR (9) NOT NULL,
DanhHieu NVARCHAR2 (30) NOT NULL
Trang 13Tạo bảng Giáo Vien
CREATE TABLE GiaoVien
(
MaGV CHAR (5) NOT NULL PRIMARY KEY,
CHECK (MaGV LIKE'GV _'),
CONSTRAINT day_pk PRIMARY KEY(MaGV, MaLop),
CONSTRAINT gv_fk FOREIGN KEY (MaGV) REFERENCES GiaoVien (MaGV), CONSTRAINT lop_fk FOREIGN KEY (MaLop) REFERENCES Lop (MaLop) );
Tạo bảng Kết Quả
CREATE TABLE KetQua
(
MaKQ CHAR (7) NOT NULL,
CHECK (MaKQ LIKE'KQ _'),
MaHS CHAR (9) ,
CHECK (MaHS LIKE 'HS K '),
CONSTRAINT sv_fk FOREIGN KEY (MaHS) REFERENCES HocSinh (MaHS), CONSTRAINT kqhs_pk PRIMARY KEY(MaKQ, MaHS),
DiemTBKy1 NUMBER (2,1) NOT NULL,
DiemTBKy2 NUMBER (2,1) NOT NULL,
DiemTKN NUMBER (2,1) NOT NULL,
HanhKiem NVARCHAR2 (10) NOT NULL,
Trang 14HocLuc NVARCHAR2 (10) NOT NULL,
MaGV CHAR (5) NOT NULL,
CHECK (MaGV LIKE'GV _'),
MaLop CHAR (5) NOT NULL PRIMARY KEY
);
Tạo bảng Điểm
CREATE TABLE Diem
(
MaHS CHAR (9) NOT NULL PRIMARY KEY,
CHECK (MaHS LIKE'HS K '),
MaMonHoc CHAR (5) NOT NULL,
CHECK (MaGV LIKE'GV _'),
CONSTRAINT mh_fk FOREIGN KEY (MaGV) REFERENCES GiaoVien (MaGV) );
2.3.2 Tạo các tablespace
Cách tạo tablespace bằng oracle enterprise manager:
: vào vào tùy chọn như hình dưới.
B1 login oracle enterprise manager
Trang 15
B2: bấm chọn create, nhập tên namespace cần tạo và chọn add
B3 : nhập file name có đuôi dbf
file Directory mặc định.
điền tên tablespace cần tạo.
B4: tích vào Automatically extend datafile when full (AUTOEXTEND )
(mục đích để tự động mở rộng file dữ liệu khi đầy) và điền tham số vào Increment.
Và bấm chọn ok
=> TABLESPACE đã được tạo.
Trang 16+ Hiển thị danh sách những học sinh giỏi trong toàn trường
SELECT MaHS, HocSinh.TenHS, KetQua.HocLuc
FROM HocSinh INNER JOIN KetQua USING (MaHS)
WHERE KetQua.HocLuc = 'Gioi';
+ Hiển thị danh sách những học sinh bị lưu ban
SELECT MaHS, HocSinh.TenHs, KetQua.LenLop
FROM HocSinh INNER JOIN KetQua USING (MaHS)
WHERE KetQua.LenLop = 'K';
+ Thống kê những học sinh có hạnh kiểm Yếu/Kém
SELECT MaHS, HocSinh.TenHS, KetQua.HanhKiem
FROM HocSinh INNER JOIN KetQua USING (MaHS)
WHERE KetQua.HanhKiem = 'Yeu' OR KetQua.HanhKiem = 'Kem';
+ Hiển thị Top 3 lớp có nhiều học sinh Khá/Giỏi nhất trường nhằm mục đích khen thưởng
SELECT *
FROM (SELECT COUNT(DanhHieu) AS SL_HSKHAGIOI, Lop.MaLop, Lop.TenLop FROM KhenThuong_HS
JOIN HocSinh ON HocSinh.MaHS = KhenThuong_HS.MaHS
JOIN Lop ON HocSinh.MaLop = Lop.MaLop
WHERE DanhHieu = 'HSGIOI' OR DanhHieu = 'HSKHA'
GROUP BY Lop.MaLop, Lop.TenLop
ORDER BY COUNT (DanhHieu) DESC)
WHERE ROWNUM <= 3;
+ Hiển thị những giáo viên chủ nhiệm có nhiều học sinh Khá/Giỏi nhất trường nhằm mục đích khen thưởng
SELECT TenGV, MaLop, COUNT (DanhHieu) "SO HSG"
FROM GiaoVien JOIN GVCN USING (MaGV) JOIN HocSinh USING (MaLop)
JOIN KhenThuong_HS USING (MaHS) WHERE DanhHieu = 'HSGIOI'
GROUP BY TenGV, MaLop
HAVING COUNT (DanhHieu) >= ALL (SELECT COUNT(DanhHieu)
FROM GiaoVien JOIN GVCN USING (MaGV) JOIN HocSinh USING (MaLop) JOIN KhenThuong_HS USING (MaHS)
WHERE DanhHieu = 'HSGIOI'
GROUP BY MaLop);
2.5 Hệ thống quản lý hồ sơ và điểm chỉ cho phép một số nhóm người dùng nhất định,
cụ thể như sau:
+ Nhóm quản trị có toàn quyền
Thông tin user:
Tên user: NHOM_QUAN_TRI
Trang 17Phương thức xác thực là mật khẩu: CSDL.hvnh
Tablespace mặc định
Temporary Tablespace mặc định
Profile: mặc định
Quyền/nhóm quyền: loại quyền system, nhóm quyền DBA.
Sử dụng công cụ Oracle SQL Developer tạo user
GRANT "DBA" TO "NHOM_QUAN_TRI" ;
ALTER USER "NHOM_QUAN_TRI" DEFAULT ROLE "DBA";
Connect user vừa tạo
Trang 18(User NHOM_QUAN_TRI có quyền tạo bảng, thêm dữ liệu, xóa bảng,…)
+ Nhóm giáo viên chỉ có quyền thêm mới vào bảng Kêt Quả
Thông tin user:
Tên user: GIAO_VIEN
Phương thức xác thực là mật khẩu: k21httta
Trang 19Câu lệnh:
USER SQL
CREATE USER "GIAO_VIEN" IDENTIFIED BY "k21httta"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";
QUOTAS
ALTER USER "GIAO_VIEN" QUOTA UNLIMITED ON "USERS";
SYSTEM PRIVILEGES
GRANT CREATE SESSION TO "GIAO_VIEN" WITH ADMIN OPTION;
GRANT SELECT, ALTER, UPDATE ON KetQua TO PUBLIC;
(User GIAO_VIEN chỉ có thể xem bảng Kết Quả chứ không xem được các bảng khác)
+ Nhóm hiệu trưởng được đọc dữ liệu ở tất cả các bảng
Thông tin user:
Tên user: HIEU_TRUONG
Phương thức xác thực là mật khẩu: btn.305
Tablespace mặc định
Temporary Tablespace mặc định
Profile: mặc định
Quyền/nhóm quyền: quyền tạo phiên làm việc, quyền xem tất cả các bảng trong cơ sở
dữ liệu, ngoài ra có thể cấp quyền xem đó cho các user khác.
Sử dụng công cụ Oracle SQL Developer tạo user
Câu lệnh:
USER SQL
CREATE USER "HIEU_TRUONG" IDENTIFIED BY "btn.305"
Trang 20DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP";
QUOTAS
ALTER USER "HIEU_TRUONG" QUOTA UNLIMITED ON "USERS";
SYSTEM PRIVILEGES
GRANT CREATE SESSION TO "HIEU_TRUONG" WITH ADMIN OPTION;
GRANT SELECT ANY TABLE TO "HIEU_TRUONG" WITH ADMIN OPTION;
Cách connect và test tương tự với phía trên
2.6 Hệ thống quản lý hồ sơ và điểm được sử dụng nhiều nhất vào thời điểm cuối và đầu mỗi kì/mỗi năm học Anh chị hãy lựa chọn và triển khai phương án backup phù hợp nhất.
+ Phương án backup: Backup bằng RMAN và thực hiện 2 backup: Full Backup Incremintal Backup
+ Backup bằng RMAN
❖ Chọn Availability để thực hiện Backup
❖ Chọn Backup Settings để thiết lập backup
Sao lưu đĩa
Vị trí sao lưu đĩa hiện tại là vùng Flash
Loại sao lưu đĩa: bộ sao lưu (một định dạng tệp sao lưu Oracle cho phép sao lưu hiệu quả bằng cách xen kẽ nhiều tệp sao lưu vào một tệp đầu ra)
Trang 21Điền Username và Password → OK để thiết lập xong Backup
❖ Chiến lược Backup
Chọn Schedule Backup
Với hệ thông quản lý hồ sơ và điểm của trường học, chọn Custonized Backup (Tùy chỉnh Backup)
Trang 22Tạo 2 Backup:
● Backup 1:
+ Loại Backup: Full Backup
+ Lịch Backup: Full Backup 1 năm 1 lần, giữa khoảng thời gian cuối năm học trước và đầu năm học sau Thời gian backup được đặt vào lúc cơ sở dữ liệu ít hoạt động nhất vì thời gian full bạckup lâu và nếu cơ sở bị mở trong thời gian sao lưu thì nó sẽ bị tắt và được gắn trước khi sao lưu, sau đó mở lại sau sao lưu.
Trang 23● Backup 2:
+ Loại Backup: Incremental Backup
+ Lịch Backup: Backup hằng tuần.
+ Incremental Backup được diễn ra hằng ngày để cập nhật thông tin, điểm số, kết quả của năm học Với các hệ số điểm miệng, điểm kiển tra 15’ , 1 tiết của nhiều môn học, nhiều học sinh thì việc backup hàng tuần là cần thiết và phù hợp.
Trang 24Chọn Submit Job để hoàn thành chiến lược sao lưu tùy chỉnh.
Trang 252.7 Để cải thiện hiệu năng hoạt động của hệ thống, một số yêu cầu nghiệp vụ được yêu cầu thực hiện ở tầng cơ sở dữ liệu Các yêu cầu đó bao gồm:
+ Tìm học sinh có thành tích học tập xuất sắc nhất trong một năm học nhất định
SET SERVEROUTPUT ON
DECLARE
NH KhenThuong_HS.NamHoc%TYPE := '&NH';
CURSOR CONTRO IS
SELECT DiemTKN, MaHS, TenHS, NamHoc
FROM KetQua INNER JOIN HocSinh USING (MaHS) INNER JOIN KhenThuong_HS USING (MaHS)
WHERE NamHoc = NH AND DiemTKN = (SELECT MAX (DiemTKN)
FROM KetQua INNER JOIN KhenThuong_HS USING (MaHS) WHERE NamHoc = NH); BEGIN
FOR ITEM IN CONTRO
Trang 26INNER JOIN GVCN ON Lop.MaLop = GVCN.MaLop
INNER JOIN GiaoVien ON GVCN.MaGV = GiaoVien.MaGV
WHERE DanhHieu = 'HSGIOI' AND KhenThuong_HS.NamHoc = NH
GROUP BY Lop.MaLop, GVCN.MaGV, GiaoVien.TenGV, KhenThuong_HS.NamHoc HAVING COUNT (DanhHieu) >= ALL (SELECT COUNT (DanhHieu)
FROM GiaoVien JOIN GVCN USING (MaGV)
JOIN HocSinh USING (MaLop) JOIN KhenThuong_HS USING (MaHS) WHERE KhenThuong_HS.NamHoc = NH AND DanhHieu ='HSGIOI'
SELECT MALOP, TENLOP, SISO,
CONCAT ((ROUND (SELECT COUNT (HocLuc) FROM KetQua WHERE HocLuc = 'GIOI')*100/SISO, 2), '%') AS TL_GIOI,
CONCAT ((ROUND (SELECT COUNT (HocLuc) FROM KetQua WHERE HocLuc = 'KHA')*100/SISO, 2), '%') AS TL_KHA,
CONCAT ((ROUND (SELECT COUNT (HocLuc) FROM KetQua WHERE HocLuc = 'TB')*100/SISO, 2), '%') AS TL_TB,
CONCAT ((ROUND (SELECT COUNT (HocLuc) FROM KetQua WHERE HocLuc = 'YEU')*100/SISO, 2), '%') AS TL_YEU,
CONCAT ((ROUND (SELECT COUNT (HocLuc) FROM KetQua WHERE HocLuc = 'KEM')*100/SISO, 2), '%') AS TL_KEM,
FROM Lop INNER JOIN HocSinh ON HocSinh.MaLop = Lop.MaLop INNER JOIN KetQya ON HocSinh.MaHS = KetQua.MaHS
Trang 27INNER JOIN KhenThuong_HS ON KetQua.MaHS = KhenThuong_HS.MaHS
HAVING (COUNT (LenLop) * 100.0 / (SELECT COUNT (*) FROM KetQua))
>=ALL (SELECT (COUNT (LenLop) * 100.0 / (SELECT COUNT (*) FROM KetQua)) FROM Lop JOIN HocSinh USING (MaLop) JOIN KetQua USING (MaHS)