Tải bản đầy đủ (.docx) (67 trang)

bài tập lớn môn cơ sở dữ liệu phân tá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 (18.86 MB, 67 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
--o0o--

BÁO CÁO BÀI TẬP LỚN
Môn : Cơ sở dữ liệu phân tán
Đề tài : Hệ thống quản lý thu học phí tại trường ĐHCNHN

Lớp: ĐH KTPMCLC K9
SV thực hiện : Nhóm 9
Nguyễn Văn Phượng
Nguyễn Văn Phương
Giảng viên: Ts. Trần Thanh Hùng

Hà Nội , ngày 15 tháng 11 năm 2017


I.

LỜI NÓI ĐẦU

Trường Đại học Công nghiệp Hà Nội là trường đại học trực thuộc Bộ Công
Thương được thành lập ngày 2 tháng 12 năm 2005.Là một trong những trung tâm
giáo dục đào tạo đa ngành nghề về công nghiệp quy mô lớn nhất cả nước và đạt
đẳng cấp quốc tế. Trường Đại học Công Nghiệp Hà Nội là môi trường học tập, rèn
luyện lý tưởng cho mọi đối tượng đồng thời là trung tâm nghiên cứu phát triển
chuyển giao công nghệ uy tín và tin cậy. Hiện nay trường có 3 cơ sở đào tạo:
Trường Đại học Công nghiệp Hà Nội triển khai đào tạo theo học chế tín chỉ bắt đầu
từ năm học 2008 – 2009.Về qui mô đào tạo: Gần 60.000 sinh viên.Các lĩnh vực
đào tạo: Công nghệ, kỹ thuật, Kinh tế, May, Thời trang, Sư phạm, Du lịch.Với quy
mô lớn như hiện nay, công tác thu phí tại trường gặp rất nhiều khó khăn, gây lãng


phí thời gian, hiệu suất làm việc thấp. Tuy nhà trường đã tin học hóa công việc
quản lý thu phí và đang sử dụng các hệ thống xử lý cơ sở dữ liệu tập trung, nhưng
do nhu cầu thu thập, lưu trữ, xử lý và trao đổi thông tin ngày càng tăng, các hệ
thống xử lý tập trung này đã bộc lộ những nhược điểm sau :
- Tăng khả năng lưu trữ thông tin là khó khăn, bởi bị giới hạn tối đa của
thiết bị nhớ.
- Độ sẵn sàng phục vụ của cơ sở dữ liệu không cao khi số người sử dụng
tăng. (Trên thực tế, trong mỗi đợt đăng ký học phần, thu phí hệ thống của
trường đã bị gián đoạn và không xử lý được trong thời gian dài làm giảm
hiệu suất công việc).
- Khả năng tính toán của các máy tính đơn lẻ đang dần tới giới hạn vật lý.
- Mô hình tổ chức lưu trữ, xử lý dữ liệu tập trung không phù hợp cho
trường khi các ngành học được phân bố theo nhóm và cách xa nhau về vị
trí địa lý.
Những nhược điểm này đã được khắc phục khá nhiều trong hệ thống phân tán.
Những sản phẩm của các hệ thống phân tán đã xuất hiện nhiều trên thị trường và
từng bước chứng minh tính ưu việt của nó hơn hẳn các hệ thống tập trung truyền
thống. Vì thế xây dựng một hệ thống phân tán để thay thế hệ thống tập trung truyền
thống là điều tất yếu, nhóm chúng em đề xuất “Xây dựng hệ thống phân tán quản
lý thu phí cho Trường Đại Học Công Nghiệp Hà Nội”.


I. NỘI DUNG CHÍNH
Nội dung chính gồm 3 chương :
- Chương 1 : Thiết kế CSDL phân tán cho hệ thống
- Chương 2 : Xây dựng CSDL phân tán trong hệ quản trị CSDL
- Chương 3 : Cài đặt hệ thống trên CSDL phân tán
1. Thiết kế CSDL phân tán cho hệ thống
1.1. Khảo sát nghiệp vụ
- Tên đơn vị: Trường đại học Công nghiệp Hà Nội.

- Tên giao dịch quốc tế: Hanoi University of Industry (viết tắt là HaUI).
- Trụ sở chính: Phường Minh Khai, quận Bắc Từ Liêm, thành phố Hà Nội.
- Cơ sở 2: Phường Tây Tựu, quận Bắc Từ Liêm, thành phố Hà Nội.
- Cơ sở 3: Phường Lê Hồng Phong và xã Phù Vân, thành phố Phủ Lý, tỉnh
Hà Nam.
- Điện thoại: 84-4 37655 121 (7252).
- Fax: 84-4 37655 261.
- Website:
- Email:
Trường Đại học Công nghiệp Hà Nội là trường đại học trực thuộc Bộ Công
Thương, đang phát triển để trở thành trường đại học đẳng cấp quốc tế.
Trường hiện có hơn 1800 cán bộ, giáo viên, nhân viên, trong đó có 1451
giảng viên cơ hữu và hợp đồng dài hạn, trong đó trên 80% trình độ trên đại học
(Thạc sỹ, Tiến sỹ). Trường có nhiều giáo viên dạy giỏi cấp toàn quốc; nhiều giáo
sư, phó giáo sư, tiến sỹ đang tham gia giảng dạy tại Trường.
Trường có 03 cơ sở đào tạo với tổng diện tích gần 50 hecta. Tại các cơ sở,
Nhà trường đã xây dựng kiên cố hơn 300 phòng học lý thuyết, 200 phòng thực
hành, thí nghiệm với đầy đủ máy móc, thiết bị phục vụ cho đào tạo khoảng 40.000
học viên, học sinh, sinh viên với các hệ đào tạo:
- Đại học: bao gồm 20 ngành, chuyên ngành (Công nghệ kỹ thuật cơ khí,
Công nghệ kỹ thuật cơ điện tử,Công nghệ kỹ thuật ô tô, Công nghệ kỹ thuật


điện, điện tử, Công nghệ kỹ thuật điều khiển và tự động hoá, Công nghệ kỹ
thuật điện tử, truyền thông, Khoa học máy tính, Kỹ thuật phần mềm, Hệ
thống thông tin, Kế toán, Tài chính ngân hàng , Quản trị kinh doanh, Quản
trị kinh doanh du lịch, Việt Nam học (hướng dẫn du lịch), Công nghệ kỹ
thuật nhiệt, Công nghệ may, Thiết kế thời trang, Công nghệ kỹ thuật hóa
học, Công nghệ kỹ thuật môi trường, Ngôn ngữ tiếng Anh.)
- Cao đẳng: bao gồm 12 nghề (Cắt gọt kim loại, Điện công nghiệp, Kỹ thuật

máy lạnh và điều hòa không khí. Điện tử công nghiệp, Công nghệ ô tô,
Nguội sửa chữa máy công cụ,Nguội chế tạo, Kế toán doanh nghiệp, Lập
trình máy tính,Hàn, May thời trang, Vẽ và thiết kế trên máy vi tính.)
- Trung cấp: 14 nghề (Cắt gọt kim loại, Điện công nghiệp, Kỹ thuật máy lạnh
và điều hòa không khí, Điện tử công nghiệp, Công nghệ ô tô, Nguội sửa
chữa máy công cụ, Nguội chế tạo, Kế toán doanh nghiệp, Lập trình máy
tính, Hàn, May thời trang, Gia công kim loại tấm, Sửa chữa thiết bị điều
khiển điện, Vẽ và thiết kế trên máy vi tính.)


Trong quy chế quản lý thu học phí tại Trường Đại Học Công Nghiệp Hà Nội có các
cơ quan, phòng ban liên quan :
- Phòng Kế hoạch – Tài chính
- Phòng Công tác học sinh – Sinh viên
- Phòng Đào tạo
1.1.1. Thông báo học phí
- Phòng Kế hoạch - Tài chính cùng với phòng Đào tạo thảo luận lập mức
học phí phải thu của sinh viên (trên cơ sở mức học phí của Chính phủ và
Bộ Công Thương quy định)
- Phòng Kế hoạch - Tài chính ra thông báo về việc thu học phí (gồm đợt
thu, thời gian nộp, thời gian khóa sổ, các lớp thu) và trình Hiệu trưởng
duyệt rồi gửi thông báo cho tất cả các Khoa/Bộ môn có sinh viên theo
học.
- Đối với sinh viên :
o Sinh viên đăng ký môn học theo hướng dẫn của phòng Đào tạo,
Khoa, Bộ môn; Căn cứ vào số tín chỉ đăng ký học để nộp tiền học
phí
1.1.2. Sinh viên đi nộp tiền
- Sinh viên nộp tiền học phí tại phòng Kế hoạch - Tài chính
- Kế toán thu kiểm tra mức học phí, lập danh sách thu học phí theo lớp.

Thông tin phiếu thu gồm : Mã sinh viên, Số phiếu thu, Ngày lập phiếu
thu, Họ tên người nộp, Lớp, Khóa, Hệ đào tạo, Nội dung thu, Số tiền thu,
Người thu và gửi danh sách về cho thủ quỹ.
- Sinh viên xuất trình thẻ sinh viên hoặc cung cấp mã sinh viên của mình
cho thủ quỹ, thủ quỹ căn cứ vào mã sinh viên và danh sách thu học phí
theo lớp để thu tiền.
- Thủ quỹ giữ lại 1 bản phiếu thu (liên 1) và trả lại phiếu thu tiền (liên 2)
cho sinh viên. Sinh viên phải giữ phiếu thu học phí của mình trong suốt
quá trình học tập nghiên cứu tại trường.
1.1.3. Thu tiền, lập phiếu thu tiền và ghi sổ
- Cuối ngày, kế toán thu và thủ quỹ đối chiếu số tiền nộp học phí của sinh
viên trên bảng kê, ký xác nhận và chuyển cho kế toán tổng hợp lập phiếu
thu và hạch toán kế toán.


- Kế toán tổng hợp lập phiếu thu chuyển cho Kế toán trưởng, Thủ trưởng
đơn vị ký, sau đó chuyển lại cho thủ quỹ vào sổ quỹ tiền mặt.
- Thủ quỹ vào sổ và chuyển cho kế toán thực hiện lưu trữ chứng từ theo
quy định.
1.2. Bài toán
Từ những hoạt động thực tế đã trình bày ở trên thì vấn đề đặt ra cho chương trình
quản lý thu học phí là phải xây dựng các chức năng thích hợp tạo điều kiện thuận
lợi cho công tác quản lý sinh viên và việc tính học phí sử dụng đúng để dễ dàng thu
học phí sinh viên. Tuy nhiên để làm tốt việc đó cần tìm hiểu kỹ những vấn đề cụ
thể mà bài toán đặt ra và cách giải quyết các vấn đề đó.
Đối tượng cần quản lý là thông tin về tất cả các sinh viên và một số các thông tin
khác như học phần, đăng ký học phần, lớp, ngành, khoa, hệ đào tạo.
Chương trình này xây dựng các đối tượng độc lập một cách rõ ràng và các mối
quan hệ của các đối tượng đó. Với các đối tượng độc lập, chúng ta quan tâm đến
các thuộc tính cá nhân liên quan đến các đối tượng đó.

Giữa các đối tượng còn lại còn có các mối quan hệ với nhau do vậy chúng ta có thể
đưa ra các thông tin tổng hợp từ các thông tin cơ bản trên. Nhờ việc kết nối các
thông tin cơ bản thành các thông tin tổng hợp chúng ta có thể làm cho hệ thống
quản lý của chúng ta đáp ứng được yêu cầu thực tế.


1.3. Thiết kế cơ sở dữ liệu tập trung cho hệ thống

1.4. Thiết kế mô hình csdl phân tán cho hệ thống
1.4.1. Phân mảnh dữ liệu
Phân mảnh quan hệ là gì?
- Việc chia một quan hệ thành nhiều quan hệ nhỏ hơn được gọi là phân
mảnh quan hệ.
Các lý do phân mảnh :
- Khung nhìn hoặc đơn vị truy xuất của các ứng dụng không phải là toàn
bộ quan hệ mà thường là một mảnh.
- Việc phân rã một quan hệ thành nhiều mảnh, mỗi mảnh được xử lý như
một đơn vị, sẽ cho phép thực hiện nhiều giao dịch đồng thời.
- Việc phân mảnh các quan hệ sẽ cho phép thực hiện song song một câu
vấn tin bằng cách chia nó ra thành một tập các câu vấn tin con hoạt tác
trên các mảnh.


- Nếu các ứng dụng có các khung nhìn được định nghĩa trên một quan hệ
cho trước nằm tại những vị trí khác thì có hai cách chọn lựa đơn vị phân
tán:
o hoặc là toàn bộ quan hệ
o hoặc quan hệ được lưu ở một vị trí có chạy ứng dụng.
Nhận xét :
- Chọn lựa thứ nhất gây ra một số lượng lớn các truy xuất không cần thiết

đến dữ liệu ở xa.
- Chọn lựa sau sẽ gây ra nhiều vấn đề khi cập nhật và lãng phí không gian
lưu trữ.
Phân mảnh ngang:
- Phân mảnh ngang một quan hệ tổng thể n-bộ R là tách R thành các quan
hệ con n-bộ R1, R2, ..., Rk sao cho quan hệ R có thể được khôi phục lại từ
các quan hệ con này bằng phép hợp: R = R1 R2 ... Rk
- Có hai loại phân mảnh ngang:
o Phân mảnh ngang nguyên thủy (primary horizontal fragmentation):
phân mảnh ngang nguyên thủy của một quan hệ được thực hiện
dựa trên các vị từ được định nghĩa trên quan hệ đó.
o Phân mảnh ngang dẫn xuất (derived horizontal fragmentation):
phân mảnh ngang dẫn xuất của một quan hệ được thực hiện dựa
trên các vị từ được định nghĩa trên quan hệ khác.
- Như vậy, trong phân mảnh ngang tập các vị từ đóng một vai trò quan
trọng.
Thực hiện phân mảnh
Phân mảnh ngang nguyên thủy cho bảng Nganh theo giá trị TenNganh:
Các vị từ đơn giản có thể dùng được là:
p1: TenNganh = “Khoa học máy tính” OR TenNganh = “Kỹ thuật phần mềm” OR
TenNganh = “Hệ thống thông tin” OR TenNganh = “Công nghệ kỹ thuật cơ khí”
OR TenNganh = “Công nghệ kỹ thuật điện” OR TenNganh = “Công nghệ kỹ thuật
điện tử” OR TenNganh = “Ngôn ngữ Anh”
p2: TenNganh = “Công nghệ may” OR TenNganh = “Kế toán” OR TenNganh =
“Quản trị kinh doanh” OR TenNganh = “Quản trị kinh doanh du lịch” OR
TenNganh = “Công nghệ kỹ thuật hóa học”


p3: TenNganh = “Công nghệ kỹ thuật tự động hóa” OR TenNganh = “Tài chính
ngân hàng” OR TenNganh = “Công nghệ kỹ thuật ô tô” OR TenNganh = “Thiết kế

thời trang” OR TenNganh = “Việt Nam học”
Tập vị từ đơn giản khởi đầu là Pr = {p1, p2, p3}. Áp dụng thuật toán COM_MIN với
i = 1 làm giá trị khởi đầu tạo ra Pr’ = {p1, p2, p3} là tập đầy đủ và cực tiểu.
Có thể định nghĩa vị từ hội sơ cấp tạo ra M dựa trên Pr’ như sau:
m 1 : p1 ^ p 2
m 2 : p1 ^ p 3
m 3 : p2 ^ p 3
m4: p1 ^ p2 ^ p3
m5: p1 ^ ¬(p2 ^ p3) ≡ p1 ^ p1 ≡ p1
m6: p2 ^ ¬(p1 ^ p3) ≡ p2 ^ p2 ≡ p2
m7: p3 ^ ¬(p1 ^ p2) ≡ p3 ^ p3 ≡ p3
Kết quả phân mảnh ngang nguyên thủy Nganh tạo ra 3 mảnh Nganh = {Nganh1,
Ngang2, Nganh3}
Nganh1 = σ TenNganh = “Khoa học máy tính” ˅TenNganh = “Kỹ thuật phần mềm” ˅ TenNganh = “Hệ thống thông tin” ˅ TenNganh =
“Công nghệ kỹ thuật cơ khí” ˅ TenNganh = “Công nghệ kỹ thuật điện” ˅ TenNganh = “Công nghệ kỹ thuật điện tử” ˅ TenNganh = “Ngôn ngữ
Anh”

(Nganh)

Nganh2 = σ TenNganh = “Công nghệ may” ˅ TenNganh = “Kế toán” ˅ TenNganh = “Quản trị kinh doanh” ˅ TenNganh = “Quản trị
kinh doanh du lịch” ˅ TenNganh = “Công nghệ kỹ thuật hóa học” (Nganh)
Nganh3 = σ TenNganh = “Công nghệ kỹ thuật tự động hóa” ˅ TenNganh = “Tài chính ngân hàng” ˅ TenNganh = “Công nghệ kỹ thuật
ô tô” ˅ TenNganh = “Thiết kế thời trang” ˅ TenNganh = “Việt Nam học” (Nganh)
Phân mảnh ngang dẫn xuất Nganh – Lop ta được 3 trạm:
Lop1 = Lop |›‹ Nganh1
Lop2 = Lop |›‹ Nganh2
Lop3 = Lop |›‹ Nganh3


Phân mảnh ngang dẫn xuất Lop – SinhVien ta được 3 trạm:

SinhVien1 = SinhVien |›‹ Lop1
SinhVien2 = SinhVien |›‹ Lop2
SinhVien3 = SinhVien |›‹ Lop3
Phân mảnh ngang dẫn xuất SinhVien – DangKyHocPhan ta được 3 trạm:
DangKyHocPhan1 = DangKyHocPhan |›‹ SinhVien1
DangKyHocPhan2 = DangKyHocPhan |›‹ SinhVien2
DangKyHocPhan3 = DangKyHocPhan |›‹ SinhVien3
Phân mảnh ngang dẫn xuất DangKyHocPhan – PhieuThu ta được 3 trạm:
PhieuThu1 = PhieuThu |›‹ DangKyHocPhan1
PhieuThu2 = PhieuThu |›‹ DangKyHocPhan2
PhieuThu3 = PhieuThu |›‹ DangKyHocPhan3
Phân mảnh ngang dẫn xuất PhieuThu – ChiTietPhieuThu ta được 3 trạm:
ChiTietPhieuThu1 = ChiTietPhieuThu |›‹ PhieuThu1
ChiTietPhieuThu2 = ChiTietPhieuThu |›‹ PhieuThu2
ChiTietPhieuThu3 = ChiTietPhieuThu |›‹ PhieuThu3
Sau khi phân mảnh ta có 3 trạm như sau:
- Trạm 1


- Trạm 2


- Trạm 3


1.4.2. Mô tả về sử dụng dữ liệu cho mỗi trạm

Trường Đại Học Công Nghiệp Hà Nội có 3 cơ sở :
- Cơ sở 1 tại Phường Minh Khai, Quận Nam Từ Liêm, Hà Nội gồm sinh
viên các ngành học tại Khu A (Khoa học máy tính, Kỹ thuật phần mềm,

Hệ thống thông tin, Cơ khí, Điện, Điện tử, Ngoại ngữ).
- Cơ sở 2 tại Phường Tây Tựu, Quận Nam Từ Liêm, Hà Nội gồm của sinh
viên các ngành học tại Khu B ( Công nghệ may, Kế toán, Quản trị kinh
doanh, Du lich - khách sạn, Hóa).
- Cơ sở 3 tại Phường Lê Hồng Phong, Thành phố Phủ Lý, Tỉnh Hà Nam
gồm sinh viên các ngành học tại Khu C (Các ngành còn lại).
Để công tác quản lý thu phí được dễ dàng và chính xác thông tin, nhóm chúng tôi
xây dựng phần mềm dựa trên mô hình cơ sở dữ liệu phân tán để quản lý dữ liệu
của từng cơ sở (tương ứng với 3 trạm).


Mỗi trạm sẽ có một phần mềm ứng dụng, một hệ quản trị cơ sở dữ liệu MS SQL
server và một cơ sở dữ liệu độc lập của riêng trạm đó.
- Cơ sở dữ liệu của từng trạm không được tạo liên kết với nhau mà chỉ tạo
liên kết đến máy chủ.
- Phần mềm ứng dụng tại mỗi trạm được kết nối đến cơ sở dữ liệu của trạm
đó thông qua hệ quản trị cơ sở dữ liệu. Phần mềm cho phép thêm, cập
nhật, xóa dữ liệu, tìm kiếm thông tin xuất báo cáo (tại trạm đó) và một số
chức năng khác.
- Tại mỗi trạm, khi người dùng thực hiện một yêu cầu truy xuất cơ sở dữ
liệu thông qua giao diện phần mềm, yêu cầu này sẽ được phần mềm gửi
đến hệ quản trị cơ sở dữ liệu phân tán, sau đó hệ quản trị dữ liệu phân tán
yêu cầu đến vị trí chứa dữ liệu của trạm đó. Kết quả sau khi thực hiện yêu
cầu sẽ gửi về và hiển thị trên giao diện phần mềm để người dùng có thể
xem chi tiết hoặc truy xuất thông tin.
Server cũng có mô hình tương tự các trạm gồm : Một phần mềm ứng dụng chạy
riêng tại máy chủ, một hệ quản trị cơ sở dữ liệu tại server và một cơ sở dữ liệu.
- Cơ sở dữ liệu tại server được tạo liên kết đến 3 trạm bằng đường dẫn kết
nối các cơ sở dữ liệu thông qua hệ quản trị cơ sở dữ liệu phân tán và môi
trường mạng máy tính.

- Phần mềm tại server được kết nối đến cở sở dữ liệu tại server với chức
năng xem dữ liệu, thêm, cập nhật, xóa dữ liệu của các trạm, cho phép
thực hiện ngay trên phần mềm. Phần mềm tại server cũng giúp người
quản lý tìm kiếm thông tin tại mỗi trạm, thống kê dữ liệu cho từng trạm
hoặc cho cả 3 trạm để có thể so sánh và làm công tác quản lý thu phí
được chính xác hơn.
- Tại server, khi người quản lý yêu cầu truy xuất dữ liệu đến cơ sở dữ liệu
của một trạm nào đó thông qua giao diện phần mềm. Yêu cầu này sẽ
được phần mềm gửi đến cơ sở dữ liệu máy chủ, sau đó yêu cầu được thực
hiện tại cơ sở dữ liệu tại trạm cần truy vấn và trả về kết quả cho máy chủ.
Kết quả sau khi thực hiện yêu cầu sẽ được hiển thị lên giao diện phần
mềm.
1.4.3. Mô tả quá trình nghiệp vụ cho mỗi trạm
Server:
Phân quyền người dùng


- Tại server chỉ có một tài khoản duy nhất dành cho người quản lý máy
chủ.
- Người quản lý thông qua phần mềm có thể quản lý thông tin tài khoản
của từng trạm (thêm, sửa xóa tài khoản).
Quản lý dữ liệu
- Server có quyền thêm, sửa, xóa dữ liệu của từng trạm : Thông tin sinh
viên, các ngành học, khoa, lớp, học phần, lớp độc lập, thu phí, … Tìm
kiếm thông tin của từng trạm hoặc của cả 3 trạm.
- Thống kê danh sách sinh viên đã nộp học phí, và các sinh viên chưa nộp
học phí.
- Cơ sở dữ liệu tại server chứa các thủ tục, các hàm để thực hiện thao tác
trên từng trạm hoặc cả 2 trạm khi có yêu cầu truy xuất dữ liệu từ người
quản lý

Các trạm:
Phân quyền người dùng
-

Mỗi sinh viên có một mã sinh viên duy nhất.
Mỗi nhân viên cũng có một tài khoản người dùng duy nhất.
Sinh viên thông qua phần mềm có thể xem diễn biễn thu phí.
Nhân viên thông qua phần mềm thực hiện lưu diễn biến thu phí cho sinh
viên.

Chức năng:
- Khi đóng học phí nhân viên sẽ thực hiện thêm thông tin về đợt thu, số
tiền, thời gian nộp,…
- Thông qua phần mềm nhân viên có thể biết được những sinh viên quá
hạn chưa đóng học phí.
2. Xây dựng CSDL phân tán trong hệ quản trị CSDL SQL Server
2.1. Cấu trúc các bảng dữ liệu
2.1.1. Bảng Học phần
Tên trường

Kiểu dữ liệu

Mô tả

MaHocPhan

Nchar(7)

Mã học phần



TenHocPhan

Nvarchar(100)

Tên học phần

SoTinChi

int

Số tín chỉ

BatBuoc

bit

Bắt buộc

Tên trường

Kiểu dữ liệu

Mô tả

MaHocKy

Int

Mã học kỳ


TenHocKy

Nvarchar(100)

Tên học kỳ

2.1.2. Bảng Học kỳ

2.1.3. Bảng Niên khóa
Tên trường

Kiểu dữ liệu

Mô tả

MaNienKhoa

Nvarchar(4)

Mã niên khóa

NamBatDau

Int

Năm bắt đầu

NamKetThuc


int

Năm kết thúc

Tên trường

Kiểu dữ liệu

Mô tả

MaNganh

Nvarchar(10)

Mã ngành

TenNganh

Nvarchar(100)

Tên ngành

MaKhoa

Nvarchar(10)

Mã khoa

MaHeDaoTao


Nvarchar(10)

Mã hệ đào tạo

NoiHoc

Nvarchar(50)

Nơi học

Kiểu dữ liệu

Mô tả

2.1.4. Bảng Ngành

2.1.5. Bảng Khoa
Tên trường


MaKhoa

Nvarchar(10)

Mã khoa

TenKhoa

Nvarchar(100)


Tên khoa

MoTa

Nvarchar(200)

Mô tả

2.1.6. Bảng Hệ đào tạo
Tên trường

Kiểu dữ liệu

Mô tả

MaHeDaoTao

Nvarchar(10)

Mã hệ đào tạo

TenHeDaoTao

Nvarchar(100)

Tên hệ đào tạo

MoTa

Nvarchar(200)


Mô tả

Tên trường

Kiểu dữ liệu

Mô tả

MaLop

Nvarchar(10)

Mã lớp

TenLop

Nvarchar(100)

Tên lớp

MaNganh

Nvarchar(10)

Mã ngành

MaNienKhoa

Nvarchar(4)


Mã niên khóa

Tên trường

Kiểu dữ liệu

Mô tả

MaSinhVien

Nchar(11)

Mã sinh viên

MatKhau

Nvarchar(100)

Mật khẩu

HoDem

Nvarchar(30)

Họ đệm

Ten

Nvarchar(30)


Tên

NgaySinh

Date

Ngày sinh

GioiTinh

Nvarchar(3)

Giới tính

NoiSinh

Nvarchar(200)

Nơi sinh

2.1.7. Bảng Lớp

2.1.8. Bảng Sinh viên


NoiOHienNay

Nvarchar(200)


Nơi ở hiện nay

SoCMND

Nchar(9)

Số CMND

DanToc

Nvarchar(30)

Dân tộc

TonGiao

Nvarchar(5)

Tôn giáo

ThanhPhanXuatThan

Nvarchar(100)

Thành phần xuất thân

AnhDaiDien

Nvarchar(100)


Ảnh đại diện

MaLop

Nvarchar(10)

Ma lớp

DiaChiLienHe

Nvarchar(200)

Địa chỉ liên hệ

DienThoaiLienHe

Nvarchar(11)

Điện thoại liên hệ

EmailLienHe

Nvarchar(100)

Email liên hệ

GhiChu

Nvarchar(200)


Ghi chú

2.1.9. Bảng Đăng ký học phần
Tên trường

Kiểu dữ liệu

Mô tả

MaSinhVien

Nchar(11)

Mã sinh viên

MaHocPhan

Nchar(7)

Mã học phần

MaHocKy

int

Mã học kỳ

2.1.10. Bảng Nhân viên
Tên trường


Kiểu dữ liệu

Mô tả

MaNhanVien

Nvarchar(10)

Mã nhân viên

MatKhau

Nvarchar(100)

Mật khẩu

HoDem

Nvarchar(30)

Họ đệm

Ten

Nvarchar(30)

Tên

CoSo


Nchar(10)

Cơ sở

NgaySinh

Date

Ngày sinh

GioiTinh

Nvarchar(3)

Giới tính


QueQuan

Nvarchar(200)

Quê quán

SoCMND

Nchar(9)

Số CMND

DanToc


Nvarchar(30)

Dân tộc

TonGiao

Nvarchar(5)

Tôn giáo

AnhDaiDien

Nvarchar(100)

Ảnh đại diện

QuyenHan

Nvarchar(250)

Quyền hạn

GhiChu

Nvarchar(200)

Ghi chú

EmailLienHe


Nvarchar(100)

Email liên hệ

DiaChiLienHe

Nvarchar(200)

Địa chỉ liên hệ

DienThoaiLienHe

Nvarchar(11)

Điện thoại liên hệ

2.1.11. Bảng Phiếu thu
Tên trường

Kiểu dữ liệu

Mô tả

MaPhieuThu

Nvarchar(10)

Mã phiếu thu


NgayThu

Date

Ngày thu

MaSinhVien

Nchar(11)

Mã sinh viên

MaHocPhan

Nchar(7)

Mã học phần

MaHocKy

Int

Mã học kỳ

MaNhanVien

Nvarchar(10)

Mã nhân viên


GhiChu

Nvarchar(200)

Ghi chú

2.1.12. Bảng Chi tiết phiếu thu
Tên trường

Kiểu dữ liệu

Mô tả

MaPhieuThu

Nvarchar(10)

Mã phiếu thu

MaLoaiThu

Nvarchar(10)

Mã loại thu

SoLuong

int

Số lượng



2.1.13. Bảng Khoản thu
Tên trường

Kiểu dữ liệu

Mô tả

MaLoaiThu

Nvarchar(10)

Mã loại thu

TenKhoanThu

Nvarchar(100)

Tên khoản thu

TienThu

Float

Tiền thu

MoTa

Nvarchar(200)


Mô tả

2.2. Mô hình CSDL phân tán

Trường đại học Công nghiệp Hà Nội có 3 cơ sở. Để công tác quản lý được dễ dàng
và chính xác thông tin, nhóm xây dựng phần mềm dựa trên mô hình cơ sở dữ liệu
phân tán để quản lý dữ liệu của từng cơ sở:
- Mỗi cơ sở sẽ có một phần mềm ứng dụng, một hệ cơ sở quản trị cơ sở dữ
liệu và một cơ sở dữ liệu độc lập của riêng cơ sở đó, cơ sở dữ liệu của
từng cơ sở không được tạo liên kết với nhau mà chỉ tạo liên kết đến
server.
- Phầm mềm ứng dụng tại mỗi cơ sở đực kết nối đến cơ sở dữ liệu của cơ
sở đó thông qua hệ quản trị cơ sở dữ liệu. Phần mềm ứng dụng cho phép
cập nhật, thêm, sửa, xóa dữ liệu, tìm kiếm thông tin, xuất báo cáo tại khu
đó và thực hiện một số tác vụ khác.
- Tại mỗi cơ sở: Khi người dùng thực hiện một yêu cầu truy xuất cơ sở dữ
liệu thông qua giao diện phần mềm ứng dụng, yêu cầu này sẽ được phần


-

-

-

mềm ứng dụng gửi đến hệ quản trị cơ sở dữ liệu phân tán thông qua kết
nối chương trình ứng dụng và hệ quản trị CSDL, sau đó hệ quản trị
CSDL phân tán yêu cầu đến vị trí chứa dữ liệu của cơ sở đó. Thực hiện
xong yêu cầu, kết quả sẽ được gửi về và đưa lên giao diện phần mềm ứng

dụng để người dùng có thể xem chi tiết hoặc xuất thông tin.
Server cũng có mô hình tương tự các khu gồm có: một phần mềm ứng
dụng chạy riêng tại server, một hệ quản trị cơ sở dữ liệu để quản trị cơ sở
dữ liệu tại server. Cơ sở dữ liệu tại server được tạo liên kết đến cơ sở dữ
liệu của từng cơ sở thông qua hệ quản trị cơ sở dữ liệu phân tán SQL
SERVER.
Phần mềm ứng dụng tại server được kết nối đến cơ sở dữ liệu tại server
với chức năng xem dữ liệu của các cơ sở của trường, cập nhật, thêm, xóa
dữ liệu ở các cơ sở và thực hiện cập nhật ngay trên phần mềm. Phần mềm
tại server cũng giúp người dùng tìm kiếm thông tin tại mỗi khu, thống kê
dữ liệu cho từng khu hoặc cho cả 3 cơ sở để có thể so sánh và làm công
tác quản lý được chính xác hơn.
Cơ sở dữ liệu tại server được tạo liên kết đến 3 cơ sở bằng database link
thông qua hệ quản trị cơ sở dữ liệu phân tán và môi trường mạng máy
tính.
Tại server: khi người quản lý phát ra yêu cầu truy xuất cơ sở dữ liệu đến
cơ sở dữ liệu của một cơ sở nào đó thông qua giao diện phần mềm ứng
dụng. Yêu cầu này sẽ được phần mềm ứng dụng gửi đến xuất cơ sở dữ
liệu server thông qua hệ quản trị xuất cơ sở dữ liệu. Tại xuất cơ sở dữ liệu
server, yêu cầu được thực hiện thông qua database link(tạm dịch: đường
dẫn kết nối các xuất cơ sở dữ liệu) kết nối đến xuất cơ sở dữ liệu của các
cơ sở; thông qua database link yêu cầu sẽ được thực hiện tại cơ sở dữ liệu
của cơ sở cần truy vấn và trả về kết quả cho server và hiển thị lên giao
diện phần mềm.
2.3. Một số truy vấn phân tán trong hệ quản trị CSDL

- Các quan hệ được phân mảnh:
Nganh1 = σ TenNganh = “Khoa học máy tính” ˅TenNganh = “Kỹ thuật phần mềm” ˅ TenNganh = “Hệ thống thông
tin” ˅ TenNganh = “Công nghệ kỹ thuật cơ khí” ˅ TenNganh = “Công nghệ kỹ thuật điện” ˅ TenNganh = “Công nghệ kỹ thuật
điện tử” ˅ TenNganh = “Ngôn ngữ Anh”


(Nganh)

Nganh2 = σ TenNganh = “Công nghệ may” ˅ TenNganh = “Kế toán” ˅ TenNganh = “Quản trị kinh doanh” ˅
TenNganh = “Quản trị kinh doanh du lịch” ˅ TenNganh = “Công nghệ kỹ thuật hóa học” (Nganh)


Nganh3 = σ TenNganh = “Công nghệ kỹ thuật tự động hóa” ˅ TenNganh = “Tài chính ngân hàng” ˅ TenNganh =
“Công nghệ kỹ thuật ô tô” ˅ TenNganh = “Thiết kế thời trang” ˅ TenNganh = “Việt Nam học” (Nganh)
Lop1 = Lop |›‹ Nganh1
Lop2 = Lop |›‹ Nganh2
Lop3 = Lop |›‹ Nganh3
SinhVien1 = SinhVien |›‹ Lop1
SinhVien2 = SinhVien |›‹ Lop2
SinhVien3 = SinhVien |›‹ Lop3
DangKyHocPhan1 = DangKyHocPhan |›‹ SinhVien1
DangKyHocPhan2 = DangKyHocPhan |›‹ SinhVien2
DangKyHocPhan3 = DangKyHocPhan |›‹ SinhVien3
PhieuThu1 = PhieuThu |›‹ DangKyHocPhan1
PhieuThu2 = PhieuThu |›‹ DangKyHocPhan2
PhieuThu3 = PhieuThu |›‹ DangKyHocPhan3
ChiTietPhieuThu1 = ChiTietPhieuThu |›‹ PhieuThu1
ChiTietPhieuThu2 = ChiTietPhieuThu |›‹ PhieuThu2
ChiTietPhieuThu3 = ChiTietPhieuThu |›‹ PhieuThu3
- Một số câu truy vấn SQL:
o Lấy ra tên của sinh viên thuộc lớp Hệ thống thông tin 1 K7 của
ngành Hệ thống thông tin
SELECT (HoDem + Ten) as HoTen
FROM SinhVien inner join Lop
ON

SinhVien.MaLop = Lop.MaLop
WHERE TenLop = ‘Hệ thống thông tin 1 K7’
HoDem,Ten(σTenLop = ‘Hệ thống thông tin 1 K7’ (SinhVien * Lop))


= HoDem,Ten(σTenLop = ‘Hệ thống thông tin 1 K7’(Lop) * SinhVien)
= HoDem,Ten(σTenLop = ‘Hệ thống thông tin 1 K7’(Lop1) * SinhVien)
= HoDem,Ten(σTenLop = ‘Hệ thống thông tin 1 K7’(Lop1) * SinhVien1)
o Lấy ra tên sinh viên thuộc lớp Công nghệ may 1 K7 của ngành
Công nghệ may
SELECT (HoDem + Ten) as HoTen
FROM SinhVien inner join Lop
ON
SinhVien.MaLop = Lop.MaLop
WHERE TenLop = ‘Công nghệ may 1 K7’
HoDem,Ten(σTenLop = ‘Công nghệ may 1 K7’ (SinhVien * Lop))
= HoDem,Ten(σTenLop = ‘Công nghệ may 1 K7’(Lop) * SinhVien)
= HoDem,Ten(σTenLop = ‘Công nghệ may 1 K7’(Lop2) * SinhVien)
= HoDem,Ten(σTenLop = ‘Công nghệ may 1 K7’(Lop2) * SinhVien2)

o Lấy ra tên sinh viên thuộc lớp Việt Nam học 1 K7 của ngành Việt
Nam học
SELECT (HoDem + Ten) as HoTen
FROM SinhVien inner join Lop
ON
SinhVien.MaLop = Lop.MaLop
WHERE TenLop = ‘Việt Nam học 1 K7’
HoDem,Ten(σTenLop = ‘Việt Nam học 1 K7’ (SinhVien * Lop))
= HoDem,Ten(σTenLop = ‘Việt Nam học 1 K7’(Lop) * SinhVien)
= HoDem,Ten(σTenLop = ‘Việt Nam học 1 K7’(Lop3) * SinhVien)

= HoDem,Ten(σTenLop = ‘Việt Nam học 1 K7’(Lop3) * SinhVien3)


- Một số trigger:
CREATE TRIGGER tg_InsertPhieuThu
ON dbo.PhieuThu
AFTER INSERT , UPDATE
AS
DECLARE @MaDangKyHocPhan int
SET @MaDangKyHocPhan = (SELECT MaDangKyHocPhan FROM
inserted)
DECLARE @MaSinhVien nchar(11)
SET @MaSinhVien = (SELECT MaSinhVien FROM
dbo.DangKyHocPhan WHERE MaDangKyHocPhan =
@MaDangKyHocPhan)
DECLARE @MaLop nvarchar(10)
SET @MaLop = (SELECT MaLop FROM dbo.SinhVien WHERE
MaSinhVien = @MaSinhVien)
DECLARE @MaNganh nvarchar(10)
SET @MaNganh = (SELECT MaNganh FROM dbo.Lop WHERE
MaLop = @MaLop)
DECLARE @TenNganh nvarchar(100)
SET @TenNganh = (SELECT TenNganh FROM dbo.Nganh WHERE
MaNganh = @MaNganh)
IF(
@TenNganh LIKE N'%Khoa học máy tính%' OR
@TenNganh LIKE N'%Kỹ thuật phần mềm%' OR
@TenNganh LIKE N'%Hệ thống thông tin%' OR
@TenNganh LIKE N'%Cơ khí%' OR
@TenNganh LIKE N'%Điện%' OR

@TenNganh LIKE N'%Điện tử%' OR
@TenNganh LIKE N'%Ngôn ngữ Anh%'
)
BEGIN
PRINT ('Lập phiếu thu thành công !')
END
ELSE
BEGIN


RAISERROR ('Lập phiếu thu không thành công. Trạm 1
chỉ có quyền lập phiếu thu cho sinh viên ngành Khoa học máy tính, Kỹ
thuật phần mềm, Hệ thống thông tin, Cơ khí, Điện, Điện tử, Ngôn ngữ
Anh',16,1)
ROLLBACK TRAN
END
- Một số trigger cho trạm 1:
-- Trigger Sinh viên
IF OBJECT_ID ('tg_NhanVien_Tram1','TR') IS NOT NULL
DROP TRIGGER tg_NhanVien_Tram1
GO
CREATE TRIGGER tg_NhanVien_Tram1
ON dbo.NhanVien
AFTER INSERT , UPDATE
AS
DECLARE @CoSo nchar(10)
SET @CoSo = (SELECT CoSo FROM inserted)
IF( @CoSo LIKE '%Khu A%')
BEGIN
PRINT ('Cập nhật Nhân viên thành công !')

END
ELSE
BEGIN
RAISERROR (N'Cập nhật nhân viên không thành
công.',16,1)
ROLLBACK TRAN
END
GO
-- Trigger Lớp
IF OBJECT_ID ('tg_Lop_Tram1','TR') IS NOT NULL
DROP TRIGGER tg_Lop_Tram1
GO
CREATE TRIGGER tg_Lop_Tram1
ON dbo.Lop
AFTER INSERT , UPDATE
AS
DECLARE @MaNganh nvarchar(10)


×