Đang tải... (xem toàn văn)
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 1Nhó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
2Nguyễn Thị Huyền (NT)21A4040047K21HTTTA23%
Trang 3MỤC LỤC
2.2 Lý do tạo thêm tablespace cho cơ sở dữ liệu.82.3 Tạo các tablespace cần thiết, table và mối quan hệ giữa các bảng9
Trang 4Mỗ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ểmthi 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ủatoà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ọctậ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ínhKiểu dữ liệuKíchthước
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ínhKiểu dữ liệuKíchthước
Định dạngRàng buộc
Bảng KHENTHUONG_GV
Trang 7Thuộc tínhKiểu dữ liệuKíchthước
Định dạngRàng buộc
Bảng KHENTHUONG_HS
Thuộc tínhKiểu dữ liệuKíchthước
Định dạngRàng buộc
C: có lên lớpK: 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ínhKiểu dữ liệuKíchthước
Thuộc tínhKiểu dữ liệuKích thướcĐịnh dạngRàng buộc
Bảng DIEM
Thuộc tínhKiểu dữ liệuKích thướcĐịnh dạngRàng buộc
Trang 9MaHSCHAR 9HS****K** Khóa chính
Thuộc tínhKiểu dữ liệuKích thướcĐịnh dạngRà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 ranhữ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 gianmớ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ộttablespace 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 đó.
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ốiquan 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:
BANGIAMHIEU - KHENTHUONG_GV: (1-n)BANGIAMHIEU - KHENTHUONG_HS: (1-n)KHENTHUONG_HS - HOCSINH: (1-1)HOCSINH – KETQUA : (1-1)
HOCSINH – LOP: (1-n)HOCSINH – DIEM: (1-n)LOP – GVCN: (1-1)LOP – DAY : (1-n)GIAOVIEN – GVCN: (1-1)GIAOVIEN – DAY: (n-n)DAY – MONHOC: (n-n)DIEM – MONHOC: (n-n)+ Tạo các bảng cùng ràng buộcTạo bảng Học sinh
CREATE TABLE HocSinh (
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 12TenMe NVARCHAR2 (30), NgheMe NVARCHAR2 (30), TenBo NVARCHAR2 (30), NgheBo NVARCHAR2 (30), DienThoai VARCHAR2 (10), QueQuan NVARCHAR2 (90), TonGiao NVARCHAR2 (30), MaThe Char (10) NOT NULL);
Tạ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 _'),
DiaChi NVARCHAR2 (90), ChuyenMon CHAR (2),
CHECK (ChuyenMon = 'TN' OR ChuyenMon = 'XH'), TenGV NVARCHAR2 (30)
Tạo bảng Dạy
CREATE TABLE Day(
MaMonHoc CHAR (5), MaLop CHAR (5), MaGV CHAR (5),
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));
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, LenLop NVARCHAR2 (1),
CHECK (LenLop = 'C' OR LenLop = 'K'));
Tạo bảng Giáo Viên Chủ Nhiệm
CREATE TABLE GVCN (
MaGV CHAR (5) NOT NULL, CHECK (MaGV LIKE'GV _'),
MaLop CHAR (5) NOT NULL PRIMARY KEY);
NamHoc VARCHAR (9), DiemMieng NUMBER (1), Diem15p NUMBER (1), Diem45p NUMBER (1), DiemThi NUMBER (1), DiemTBMon NUMBER (2,1));
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 loginoracle 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.HocLucFROM 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.LenLopFROM 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.HanhKiemFROM 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 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.hvnhTablespace mặc định
Temporary Tablespace mặc địnhProfile: 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 userCâu lệnh:
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: k21htttaTablespace mặc định
Temporary Tablespace mặc địnhProfile: mặc định
Quyền/nhóm quyền: quyền tạo phiên làm việc, xem, cập nhật và chỉnh sửa bảng KếtQuả.
Sử dụng công cụ Oracle SQL Developer tạo user
Trang 19(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.305Tablespace mặc định
Temporary Tablespace mặc địnhProfile: 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 userCâ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 backupphù 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 backupSao 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ờigian 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ắntrước khi sao lưu, sau đó mở lại sau sao lưu.
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ụ đượcyê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 LOOP
DBMS_OUTPUT.PUT_LINE ('HS xuat sac nhat la: '|| ITEM.DIEMTKN||ITEM.MAHS || ITEM.TENHS||ITEM.NAMHOC);
END LOOP;END;
+ Tìm kiếm những giáo viên chủ nhiệm có nhiều học sinh giỏi nhất
SET SERVEROUTPUT ON
Trang 26DECLARE
NH KhenThuong_HS.NamHoc%TYPE := '&NH'; CURSOR CONTRO IS
SELECT COUNT (DanhHieu) AS SL_HSGIOI, Lop.MaLop, GVCN.MaGV, GiaoVien.TenGV, KhenThuong_HS.NamHoc
FROM KhenThuong_HS INNER JOIN HocSinh ON HocSinh.MaHS = KhenThuong_HS.MaHS INNER JOIN Lop ON HocSinh.MaLop = Lop.MaLop
INNER 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'
GROUP BY TenGV);BEGIN
FOR ITEM IN CONTRO LOOP
DBMS_OUTPUT.PUT_LINE ('Thong tin gvcn co nhieu hs gioi nhat la: ' || ITEM.MaLop || ITEM.MaGV || ITEM.TenGV || ITEM.NamHoc);
END LOOP;END;
+ Thống kê tỉ lệ học sinh Khá, Giỏi, Trung bình, Yếu, Kém của một lớp nhất định trong mộtnăm học nào đó
CREATE OR REPLACE PROCEDURE TI_LE(NH IN KhenThuong_HS.NamHoc%TYPE)IS
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 WHERE KhenThuong_HS.NamHoc = NH;
GROUP BY MaLop, TenLop, SiSo;END;
EXECUTE TI_LE ('2018-2019');
+ Xem tỉ lệ lưu ban của từng lớp nhất định
SET SERVEROUTPUT ON DECLARE
+ Tìm kiếm lớp có tỉ lệ bỏ học nhiều nhất
SET SERVEROUTPUT ONDECLARE
GROUP BY MaLop);BEGIN
FOR ITEM IN CONTRO LOOP
DBMS_OUTPUT.PUT_LINE(ITEM.MaLop || ITEM.TY_LE_DUP_NHIEU_NHAT); END LOOP;
END;