Professional Documents
Culture Documents
(123doc) - Tai-Lieu-Quan-Ly-Lop-Hoc
(123doc) - Tai-Lieu-Quan-Ly-Lop-Hoc
BÁO CÁO
Đề tài: Quản lý điểm Sinh viên Trường Viện Đại học Mở Hà Nội
Hà Nội - 5/2013
1
Phát biểu bài toán............................................................................................4
2.3. Sơ đồ E - R........................................................................................7
3.3 Xem thông tin Sinh viên có điểm giữa kỳ bằng 6..................................15
3.7 Tạo view hiện tên sinh viên và điểm chuyên cần, giữa kỳ.....................17
4.2. Tạo thủ tục nhập sản phẩm cho bảng SANPHAM..........................18
5.2. Tạo trigger Đưa ra thông báo mỗi khi có dữ liệu được thêm vào
bang tblLop.................................................................................................20
5.3. Tạo trigger thông báo khi nhập vào của bảng Môn học.................20
5.4. Tạo trigger thông báo khi thêm Môn học có số trình lớn hơn 4.....21
7.2. Sử dụng phân mảnh dọc để phân chia CSDL của bài toán:...........26
7.3. Sử dụng phân mảnh ngang để phân chia CSDL của bài toán:.......27
8. Kết luận.....................................................................................................29
3
Phát biểu bài toán
Bài toán quản lý điểm của sinh viên Trường Viện Đại học Mở Hà
Nội,
Trường có rất nhiều KHOA (vd: Khoa CNTT, Khoa Du Lịch,…) khác
nhau. Trong một KHOA lại có các HỆ ĐÀO TẠO khác nhau (Đại học, Cao
đẳng, Từ xa, Liên thông). Mỗi KHOA gồm nhiều LỚP với các khóa học khác
nhau xác định dựa vào năm vào trường. Mỗi KHOA có các GIẢNG VIÊN
phụ trách dậy nhiều MÔN HỌC, Tuy nhiên một MÔN HỌC cũng có thể được
nhiều GIẢNG VIÊN khác nhau giảng dậy. Mỗi môn học có số trình khác
nhau (được tính từ 2-6). Khi một SINH VIÊN học một MÔN HỌC nào đó cần
quản lý các ĐIỂM: chuyên cần, giữ kỳ, điểm thi (nếu thi lần 1 ko đạt có thể
được thi lại lần 2, nếu thi lại lần 2 vẫn không đạt phải học lại. Số lần học lại
cũng được lưu trữ để đánh giá sinh viên sau này).
4
1. Thiết kế CSDL mức logic – Mô hình CSDL quan hệ
1.1Xác định thực thể và các thuộc tính
a) Thực thể: KHOA
Thuộc tính: #Makhoa, TenKhoa, Dienthoai, Website.
5
2.2. Xác định quan hệ
KHOA Có LOP
1 N
KHOA Có GIANGVIEN
1 N
HEDAOTAO Có LOP
1 N
LOP Có SINHVIEN
1 N
SINHVIEN Có DIEM
1 N
Solan
MONHOC Có DIEM
1 N
Diemchuyenca Diemthi
n 2
Diemgiuak Diemthi
y 1
6
2.3. Sơ đồ E - R
7
2.4. Mô hình cơ sở dữ liệu quan hệ
KHOA( Makhoa, TenKhoa, Dienthoai, Website).
HEDAOTAO( Hedaotao, Namdaotao).
LOP(Malop, TenLop, Namvaotruong).
GIANGVIEN(MaGV, TenGV, Diachi, Sdt).
MONHOC(Mamonhoc, Tenmonhoc, Sotrinh).
PHANCONGCONGTAC(MaGV, Mamonhoc)
SINHVIEN(MaSV, HotenSV, Diachi, Gioitinh, Ngaysinh).
DIEM(MaSV, Mamonhoc, Solan, Diemchuyencan,Diemgiuaky,
Diemthilan1, Diemthilan2)
2. Thiết kế vật lý
2.1. Tạo cơ sở dữ liệu QLSV (QL điểm SV)
Create Database QLSV
On( Name = QLSV_Data,
FileName = 'D:\SQL Server\QLSV_Data.mdf',
8
Size = 10MB,
Maxsize=100MB,
FileGrowth = 10%)
Log On( Name = QLSV_Log,
FileName = 'D:\SQL Server\QLSV_Log.ldf',
Size = 2MB,
Maxsize=Unlimited,
FileGrowth = 10%)
10
CONSTRAINT chk_Namdaotao CHECK (iNamdaotao BETWEEN 2
and 4)
)
11
ON UPDATE CASCADE,
PK_sMaSV VARCHAR(25) PRIMARY KEY NOT NULL,
sHotenSV NVARCHAR (25) NOT NULL,
sDiachi NVARCHAR (255),
bGioitinh BIT,
tNgaysinh SMALLDATETIME CONSTRAINT chk_Ngaysinh
CHECK(DATEDIFF(YEAR, tNgaysinh,GETDATE())>=17))
12
CONSTRAINT chk_Diemthilan1 CHECK (iDiemthilan1 BETWEEN 0
AND 10),
iDiemthilan2 INTEGER
CONSTRAINT chk_Diemthilan2 CHECK (iDiemthilan2 BETWEEN 0
AND 10),
PRIMARY KEY (FK_sMaSV,FK_sMaMonhoc, PK_iSolan )
)
13
2.3. Sơ đồ liên kết giữa các bảng
14
3. Xây dựng các VIEW cho CSDL
3.1Xem danh sách SINH VIÊN
--------------- Xóa view 1 -----------------
DROP VIEW view1
--------------- Tạo view1 ------------------
Create View view1
AS
Select sTenlop as [Tên lớp], PK_sMaSV as [Mã thẻ SV],
sHotenSV as [Tên SV], sDiachi as [Địa chỉ],
Case when bGioitinh=0 then N'Nam'
else N'Nữ' end as [Giới tính], tNgaysinh as [Ngày sinh]
From tblSinhvien a
Inner Join tblLop b On (a.FK_sMaLop=b.PK_sMaLop)
-------------- Xem view 1 ------------------
select *
from view1
15
WHERE (fDiemgiuaky)=6
-------------- Xem view 2 ------------------
select *
from view2
3.7Tạo view hiện tên sinh viên và điểm chuyên cần, giữa kỳ
--------------- Xóa view 6 -----------------
DROP VIEW view6
--------------- Tạo view6 ------------------
Create View view6
AS
SELECT dbo.tblSinhvien.sHotenSV, dbo.tblDiem.iDiemchuyencan,
dbo.tblMonhoc.sTenMonhoc, dbo.tblDiem.iDiemgiuaky
FROM dbo.tblDiem INNER JOIN
dbo.tblSinhvien ON dbo.tblDiem.FK_sMaSV =
dbo.tblSinhvien.PK_sMaSV INNER JOIN
dbo.tblMonhoc ON dbo.tblDiem.FK_sMaMonhoc =
dbo.tblMonhoc.PK_sMaMonhoc
WHERE (dbo.tblDiem.iDiemchuyencan > 7) AND
(dbo.tblDiem.iDiemgiuaky > 3)
-------------- Xem view 6 ------------------
select *
from view6
17
4. Xây dựng các Procedure cho CSDL
4.1. Thủ tục tìm kiếm Sinh viên
-- Xoa proc -----
drop proc SearchtblSinhvien
----- Tao -----
CREATE PROC SearchtblSinhvien
@FK_sMaLop varchar(25), @PK_sMaSV varchar(25), @sHotenSV
varchar(25), @sDiachi varchar(25), @bGioitinh bit, @tNgaysinh datetime
AS
SELECT FK_sMaLop,PK_sMaSV,sHotenSV,sDiachi,bGioitinh,tNgaysinh
FROM tblSinhvien
WHERE FK_sMaLop=@FK_sMaLop or PK_sMaSV=@PK_sMaSV or
sHotenSV=@sHotenSV or bGioitinh=@bGioitinh or tNgaysinh=@tNgaysinh
-----Kiem tra -------------
exec SearchtblSinhvien 'CNCQ010B3','','','','',''
4.2. Tạo thủ tục nhập sản phẩm cho bảng SANPHAM
--Hien thi danh sach thong tin sinh vien o cung 1 lop 'CNCQ010B3'
Create Proc DanhsachSV(@FK_sMaLop varchar(25), @PK_sMaSV
varchar(25), @sHotenSV varchar(25), @sDiachi varchar(25), @bGioitinh bit,
@tNgaysinh datetime)
with Recompile, Encryption
AS
SELECT FK_sMaLop,PK_sMaSV,sHotenSV,sDiachi,bGioitinh,tNgaysinh
FROM tblSinhvien
Where FK_sMaLop=@FK_sMaLop
--Kiem tra--
exec DanhsachSV 'CNCQ010B3' ,'','','','',''
-- Xoa proc -----
drop proc DanhsachSV
18
End
--xoa
drop proc TB
-- Test
declare @t float
exec TB'SVCN00001',@t out
print @t
19
5. Xây dựng các Trigger cho Bảng
5.1. Tạo trigger hiển thị dữ liệu mỗi khi có dữ liệu mới được thêm vào
tblPhancongcongtac.
Create trigger trgInsertFK_sMaGV
On tblPhancongcongtac
After insert
AS
Select * from Inserted
--Kiem tra---
Insert Into tblPhancongcongtac
Values ('GV00003','MH00001')
5.2. Tạo trigger Đưa ra thông báo mỗi khi có dữ liệu được thêm vào
bang tblLop
CREATE TRIGGER trgThongbaoThem
ON tblLop
FOR INSERT
AS
RAISERROR (N'Bạn đang thêm dữ liệu', 16, 1)
-- Test
INSERT Into tblLop
Values ('QTKD',N'Đại học','QTCQ011G2','11G2','2011')
5.3. Tạo trigger thông báo khi nhập vào của bảng Môn học
Create Trigger trg11
On tblMonhoc
For Insert
AS
Begin
Declare @ma varchar(25)
Declare @kt varchar(25)
select @ma = PK_sMaMonhoc From INSERTED
select @kt=count(PK_sMaMonhoc) from DELETED Where
PK_sMaMonhoc=@ma
print @kt
if @kt=1
Begin
Raiserror(N'Có lỗi khi cập nhật môn học',16,1)
End
else
20
Print N'Cập nhật thành công'
End
-- Xoa trigger
drop trigger trg11
-- Test trigger
Insert into tblMonhoc
values ('MH000021','Tieng anh1','3')
5.4. Tạo trigger thông báo khi thêm Môn học có số trình lớn hơn 4
--tao
Create Trigger trgmonhoc
On tblMonhoc
For Insert
AS
Begin
Declare @trinh int, @tenmon nvarchar(30),@mon nvarchar(30)
select @trinh=iSotrinh From INSERTED
if @trinh>4
Begin
print N'So trinh sai hoac trung ten mon'
rollback tran
return
end
else
Print N'Cập nhật thành công'
End
--xoa
drop trigger trgmonhoc
--kiem tra
Insert into tblMonhoc
values ('MH0041','tin','6')
6.1.1. Tạo tài khoản đăng nhập “admin” với mật khẩu “12345abcd”
CREATE LOGIN admin
GO
21
6.1.2. Tạo tài khoản đăng nhập “honganh” với mật khẩu “123456”
CREATE LOGIN honganh
GO
6.1.3. Tạo tài khoản đăng nhập “thang” với mật khẩu “123456”
CREATE LOGIN thang
GO
6.1.4. Tạo tài khoản đăng nhập “ducanh” với mật khẩu “123456”
CREATE LOGIN ducanh
GO
6.1.5. Tạo tài khoản đăng nhập “giang” với mật khẩu “123456”
CREATE LOGIN giang
GO
6.1.6. Sửa tài khoản “admin” với mật khẩu mới là “54321”
ALTER LOGIN admin
6.1.7. Sửa tài khoản “admin” với tên đăng nhập mới là “nhom08”
ALTER LOGIN admin
22
6.1.8. Xóa tài khoản “honganh”
DROP LOGIN honganh
6.2.1. Cấp phát quyền thực hiện CREATE TABLE, CREATE VIEW
cho tài khoản "thang":
GRANT CREATE TABLE, CREATE VIEW
TO thang
ON NCC
6.2.3. Cấp phát quyền được xem và cập nhật dữ liệu trên bảng
NHANVIEN trên các cột Diachi, SDTNV đối với tài khoản
"ducanh"
GRANT SELECT,UPDATE
ON NHANVIEN(Diachi, SDTNV)
TO ducanh
6.2.4. Huỷ bỏ quyền cập nhật trên bảng LOAI của tài khoản "giang"
REVOKE UPDATE
ON LOAI
TO giang
6.2.5. Huỷ bỏ tất cả các quyền đã cấp phát cho tài khoản "giang"
REVOKE ALL
FROM giang
23
6.2.6. Từ chối quyền thực hiện lệnh đối với tài khoản "ducanh"
DENY CREATE DATABASE,CREATE TABLE
TO ducanh
24
7. Phân tán CSDL
--Tạo CSDL QLSinhvien (thiết lập COLLATE cùng giá trị cho cả 2 server):
CREATE Database BTL COLLATE Vietnamese_CI_AS
GO
USE BTL
GO
7.2. Sử dụng phân mảnh dọc để phân chia CSDL của bài
toán:
Bảng tblKhoa chia làm 2 bảng: 1 bảng chứa thông tin cơ bản về KHOA(tên
KHOA), 1 bảng chứa thông tin liên lạc với KHOA(số điện thoại, website)
26
BEGIN
print N'Mã khoa đã có'
RETURN
END
INSERT INTO tblKhoa VALUES(@ma,@ten)
INSERT INTO Server1.BTL.dbo.tblKhoa VALUES(@ma,@dt,@website)
print N'Thêm thành công'
END
EXEC spInsertKhoa 'CNTT', N'Công nghệ thông tin', '043111222',
'fithou.edu.vn'
EXEC spInsertKhoa 'DL',N'Du lịch','043645987','dulich.edu.vn'
7.3.Sử dụng phân mảnh ngang để phân chia CSDL của bài toán:
Bảng tblHedaotao chia làm 2 mảnh: 1 mảnh chứa các thông tin HỆ ĐÀO
TẠO 4 năm, 1 mảnh chứa thông tin HỆ ĐÀO TẠO còn lại
27
CONSTRAINT chk_Namdaotao CHECK (iNamdaotao BETWEEN 2
and 4)
)
- Thủ tục thêm dữ liệu bảng tblHedaotao
-- Tạo 1 thủ tục để thêm 1 bản gi mới vào bảng tblHedaotao
CREATE Proc spInsertHedaotao(@hedaotao NVARCHAR(25),
@namdaotao INTEGER)
AS
BEGIN
-- Kiểm tra tính hợp lệ của dữ liệu nhập
IF EXISTS (SELECT * FROM tblHedaotao WHERE
PK_sHedaotao=@hedaotao)
BEGIN
print N'hedaotao đã có'
RETURN
END
-- Kiểm tra tính hợp lệ của dữ liệu nhập (trùng mã> lương>0?)
IF @namdaotao='4'
INSERT INTO tblHedaotao
Values(@hedaotao,@namdaotao)
ELSE
INSERT INTO Server1.BTL.dbo.tblHedaotao
Values(@hedaotao,@namdaotao)
print N'Thêm thành công'
END
-- Thêm hệ đào tạo mới
Exec spInsertHedaotao N'Đại học','4'
EXEC spInsertHedaotao N'Cao đẳng','3'
EXEC spInsertHedaotao N'Từ xa','2'
EXEC spInsertHedaotao N'Liên thông','2'
-- Sử dụng Union để lấy dữ liệu từ 2 bảng:
SELECT PK_sHedaotao, iNamdaotao
FROM Server1.BTL.dbo.tblHedaotao
UNION
SELECT PK_sHedaotao, iNamdaotao
FROM tblHedaotao
28
8. Kết luận
Lời cảm ơn đầu tiên và quan trọng nhất chúng em xin gửi tới thầy Phạm Công
Hòa, giáo viên giảng dạy của Viện đại học Mở Hà Nội đã tận tình chỉ bảo,
hướng dẫn chúng em trong quá trình học tập bộ môn và quá trình hoàn thành
bài tập lớn. Nếu không có thầy, không có sự tận tâm chỉ bảo của thầy thì
chúng em sẽ không bao giờ hoàn thành được bài tập này.
Cám ơn những người bạn tốt của chúng tôi, tập thể lớp 10B3, những người
bạn đã không ngần ngại chia sẻ cho chúng tôi kiến thức, góp ý kiến giúp
chúng tôi hoàn thiện hơn trong quá trình hoàn thành bài tập.
29