Quản lý tài khoản tiết kiệm ngân hang | Đề tài cuối kỳ môn hệ quản trị Cơ sở dữ liệu Trường đại học sư phạm kỹ thuật TP. Hồ Chí Minh

Lời đầu tiên, chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy Nguyễn Thành Sơn đã giúp chúng em hoàn thành bài báo cáo cuối kì bộ môn Hệ quản trị cơ sở dữ liệu này. Nhờ những kiến thức thầy truyền đạt mà chúng em đã nắm chắc hơn được những kiến thức căn bản, nền tảng cho việc khi xây dựng một hệ thống quản trị cơ sở dữ liệu. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN HỆ THỐNG THÔNG TIN
🙞🙞🙞🙞🙞
ĐỀ TÀI CUỐI KỲ MÔN HỆ QUẢN TRỊ CSDL
TÊN ĐỀ TÀI:
QUẢN LÝ TÀI KHOẢN TIẾT KIỆM NGÂN HÀNG
TS. Nguyễn Thành Sơn
Lớp HP:
Nhóm thực hiện:
Học kỳ:
Năm học:
Thành phố Hồ Chí Minh, tháng 11, năm 2022
DANH SÁCH SINH VIÊN NHÓM THỰC HIỆN
HỌC KÌ 1 NĂM HỌC 2022
Đề tài: Quản lý tài khoản tiết kiệm ngân hàng
Lê Thị Kim Lệ
Nguyễn Thị Bích Liên
Nguyễn Thị Cẩm Nguyên
Phùng Thị Thùy Trang
NHẬN XÉT CỦA GV
Tp. Hồ Chí Minh, ngày …., tháng 11, năm 2022
Giảng viên chấm điểm
Contents
LỜI NÓI ĐẦU
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG
Đặc tả đề tài
Mô tả bài toán
Nghiệp vụ của bài toán
Mô tả các chức năng của bài toán
Một số hình thức gửi tiết kiệm
Phương pháp tính lãi suất
Phương thức tính lãi
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Thiết kế cơ sở dữ liệu mức quan niệm.
Thiết kế cơ sở dữ liệu mức logic.
Các ràng buộc cần có
Cài đặt CSDL và các ràng buộc
4.1. Tạo bảng và các ràng buộc đơn giản.
Các ràng buộc khác
Trigger kiểm tra các ràng buộc
CHƯƠNG 3. THIẾT KẾ CÁC CHỨC NĂNG
Kết nối cơ sở dữ liệu
Xem thông tin danh mục
Quản lý nhân viên
Quản lý Sổ tiết kiệm
Quản lý Giao dịch tiết kiệm
CHƯƠNG 4. TẠO USER VÀ PHÂN QUYỀN
CHƯƠNG 5. THIẾT KẾ GIAO DIỆN HỆ THỐNG
|Nhóm 03
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy
Nguyễn Thành Sơn đã giúp chúng em hoàn thành bài báo cáo cuối kì bộ môn Hệ quản trị
sở dữ liệu này. Nhờ những kiến thức thầy truyền đạt chúng em đã nắm chắc hơn
được những kiến thức căn bản, nền tảng cho việc khi xây dựng một hệ thống quản trị cơ sở
dữ liệu. Thông qua đồ án này, nhóm em xin trình bày lại quá trình phát triển của một hệ
thống quản trị cơ sở dữ liệu, cũng như lập trình một đồ án liên quan.
Trong quá trình thực hiện đồ án môn học, khó tránh khỏi những sai sót. Do đó nhóm
chúng em rất mong sự góp ý đến từ thầy để bài làm của nhóm chúng em được hoàn thiện
hơn, phát triển đầy đủ hơn. Kính chúc thầy sức khỏe, hạnh phúc thành công trên con
đường sự nghiệp giảng dạy
Cuối cùng chúng em cũng chân thành cảm ơn các thầy cô và các bạn cùng tham gia
học bộ môn Hệ quản trị sơ sở dữ liệu đã nhiệt tình giúp đỡ động viên chúng em trong trình
thực hiện đồ án cuối kì.
|Nhóm 03
LỜI NÓI ĐẦU
Trong nhiều năm trở lại đây, ngành công nghệ thực sự đã len lỏi vào từng
ngóc ngách của đời sống hội. Bất kể một lĩnh vực hay ngành nghề nào cũng đều ứng
dụng các công nghệ thông tin. CNTT đã đang đóng vai trò quan trọng trong đời sống
kinh tế, xã hội của nhiều quốc gia trên thế giới và Việt Nam cũng vậy, ứng dụng của ngành
này có rất nhiều trong đời sống hằng ngày.
Không thể phủ nhận rằng các hệ thống quản lý dữ liệu, thông tin dần trở thành công
cụ đắc lực của nhiều doanh nghiệp. Đặc biệt phải kể đến lĩnh vực ngân hàng hiện nay
công tác quản dữ liệu, công nghệ thông tin giúp cho quá trình quản lý dữ liệu đạt hiệu
quả cao trong việc giảm tối thiểu về nhân lực, thời gian cũng như tránh thất lạc, sai sót dữ
liệu thay vì việc quản lý bằng giấy tờ bằng phương pháp cổ truyền như trước đây.
Chính vì những lý do đó, ứng dụng của Công nghệ thông tin đối với công tác quản
lý dữ liệu trong ngân đóng một vai trò hết sức quan trọng. để làm rõ hơn về ứng dụng
của Công nghệ thông tin đối với công tác quản lý trong thực tế nhóm chúng em lựa chọn đề
“Quản tài khoản tiết kiệm Ngân hàng” để nghiên cứu phát triển ứng dụng của
việc quản lý hệ thống dữ liệu trong môn học Hệ quản trị cơ sở dữ liệu.
|Nhóm 03
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG
Đặ đề
Một ngân hàng cần hệ thống quản tài khoản tiết kiệm. Một hệ thống quản lý
tài khoản tiết kiệm cần lưu trữ những dữ liệu như sau:
Ngân hàng quản nhiều chi nhánh, mỗi Chi nhánh Tên chi nhánh, Mã chi nhánh,
Địa chỉ. Mỗi chi nhánh thì có nhiều nhân viên,…
Mỗi nhân viên các thông tin: nhân viên, Họ tên, Ngày sinh, Địa chỉ, Điện
thoại. Mỗi nhân viên được cấp tên đăng nhập và mật khẩu để đăng nhập vào hệ thống. Mỗi
nhân viên sẽ chức vụ quyền hạn khác nhau nên thuộc các nhóm người ng có
phân quyền khác nhau.
ông tin về nhóm người dùng thì gồm có: Mã nhóm người dùng, Tên nhóm người
dùng. Có các nhóm người dùng sau: Nhân viên giao dịch và Giám đốc.
Nhóm người dùng thì được phân chia ra những quyền riêng biệt. Thông tin về nhóm
quyền: Mã quyền, Tên quyền. Các nhóm người dùng được phân cho một hoặc nhiều quyền.
Một Chi nhánh thì quản lý nhiều tài khoản tiết kiệm và điều cần thiết với mỗi sổ là
thông tin Khách hàng gửi tiết kiệm. Thông tin của khách hàng gồm: Mã khách hàng, Tên,
Số điện thoại, Địa chỉ, số CCCD, Nơi cấp, Ngày cấp.
Một khách hàng thể mở một hoặc nhiều sổ tiết kiệm. Thông tin của mỗi sổ tiết
kiệm: Mã sổ tiết kiệm, Ngày mở sổ, Ngày đến hạn, Ngày tất toán, Loại tiền gửi, Tình trạng.
Tình trạng của sổ có thể là: Còn hiệu lực, Đã tất toán, Phong tỏa.
Mỗi một sổ tiết kiệm sẽ thuộc một loại tiết kiệm duy nhất, phân biệt bởi mã loại tiết
kiệm. Mã loại tiết kiệm qui định hình thức gửi tiết kiệm, kỳ hạn, hình thức trả lãi, lãi suất.
Có các hình thức gửi tiết kiệm sau:
Tiền gửi tiết kiệm trả lãi định kỳ
Tiền gửi tiết kiệm trả lãi trước
Tiền gửi tiết kiệm trả lãi sau
Tiền gửi tiết kiệm gửi góp
Tiền gửi tiết kiệm một lần
|Nhóm 03
Kỳ hạn: Không kỳ hạn, 1 tháng, 2 tháng, …, 36 tháng.
Lãi suất tiết kiệm được quy định bởi: Hình thức gửi tiết kiệm, Kỳ hạn, Kỳ trả lãi.
Mỗi sổ tiết kiệm sẽ phát sinh một hoặc nhiều phát sinh giao dịch tiết kiệm. Thông
tin của mỗi giao dịch tiết kiệm gồm: Mã số giao dịch, Ngày giao dịch, Mã sổ tiết kiệm, Mã
loại giao dịch, Mã chi nhánh giao dịch, Mã nhân viên giao dịch, Số tiền giao dịch. Mã loại
giao dịch cho biết loại giao dịch nào được thực hiện, có các loại giao dịch sau: Gửi tiền, Rút
tiền lãi, Tất toán, Lãi nhập gốc, Tái ký gửi.
Gửi tiết kiệm
Khách hàng xuất trình giấy chứng minh. Kế Toán hướng dẫn khách hàng điền đầy
đủ thông tin trên “giấy đề nghị gửi tiền”. Thông tin “giấy đề nghị gửi tiền” gồm có: họ tên,
điện thoại, địa chỉ, số CMND, ngày cấp, nơi cấp, số tiền gửi, kỳ hạn gửi, hình thức rút lãi.
Kế Toán Trưởng kiểm tra các thông tin trên giấy đề nghị của khách hàng, giấy nộp tiền,
phiếu lưu, Sổ tiết kiệm phải khớp nhau và ký tên lên Sổ Tiết Kiệm. Giám Đốc tên lên
giấy nộp tiền, Sổ tiết kiệm. Thủ quỹ nhận giấy nộp tiền, Sổ tiết kiệm, phiếu lưu tiền gửi,
chờ Kiểm ngân thu.
Kiểm ngân sau khi thu xong, lập bảng kê nộp tiền, ký tên lên bảng kê nộp và chuyển
bảng kê cho thủ quỹ. Thủ quỹ kiểm tra số tiền trên bảng kê, giấy nộp tiền, phiếu lưu, Sổ tiết
kiệm. Nếu khớp đúng số tiền, ký tên lên giấy nộp tiền và bảng kê nộp, vào sổ theo dõi. Nếu
không khớp đúng số tiền phải báo cho Kế toán biết để điều chỉnh lại. Cho khách hàng
tên lên giấy nộp tiền, bảng nộp, đăng chữ mẫu lên phiếu lưu, ký tên lên Sổ Tiết
Kiệm, phiếu lưu (bên phần kiểm soát), ký nhận Sổ Tiết Kiệm. Sau khi xong cho khách hàng
ký nhận sổ và trả sổ c
Sau đó ký tên lên góc trái chứng từ, đóng dấu đã thu tiền và vào sổ theo dõi thu chi,
giữ lại bảng kê nộp tiền để tổng hợp (cuối ngày giao lại cho Thủ quỹ). Thủ quỹ vào sổ quỹ.
Giấy nộp tiền cuối ngày Thủ quỹ chuyển qua bộ phận kết hợp chứng từ.
Kiểm tra các yếu tố trên giấy gửi tiền. Ký chữ ký mẫu lên phiếu lưu tiền gửi (hoặc
các ký hiệu khác). Nhân viên ngân hàng in Giấy nộp tiền, Phiếu lưu, Sổ tiền gửi.
Rút tiết kiệm
|Nhóm 03
Khách hàng đến rút tiền mang Sổ tiết kiệm, CMND (hộ chiếu) đã đăng lúc gửi
tiền và thông báo đến Kế toán số tiền cần rút (vốn, lãi).
Trường hợp rút hoàn toàn: KT sẽ căn cứ vào ngày đáo hạn, số tiền gửi, lãi suất trên
sổ, lập Phiếu tính lãi, in Giấy lãnh tiền, Phiếu chi lãi, in Sổ tiền gửi, ghi Phiếu lưu tiền gửi,
ký tên chuyển qua cho Kế toán Trưởng.
Trường hợp khách hàng gửi lại đúng số tiền và định kỳ trên Sổ tiết kiệm: Kế toán sử
dụng lại Sổ tiết kiệm cũ, Phiếu lưu cũ, lập Giấy nộp tiền, Giấy lĩnh tiền, Phiếu chi lãi, in Sổ
tiết kiệm, ghi Thẻ lưu tài khoản, chuyển cho Kế toán trưởng.
Trường hợp khách hàng gửi lại thay đổi số tiền: Kế toán thực hiện như trường hợp
rút hoàn toàn, sau đó làm giống như trường hợp gửi tiền, chuyển cho Kế toán trưởng
Kế toán trưởng kiểm tra lại ngày đáo hạn, cách tính lãi trên Phiếu tính lãi, Giấy lĩnh
tiền, Phiếu chi lãi, Số dư trên Sổ tiền gửi và Phiếu lưu. Cho khách ký tên lên chứng từ, đối
chiếu chữ của khách hàng trên chứng từ Thẻ lưu, nếu đúng chữ ký, khách hàngtên
lên Sổ tiết kiệm Thẻ lưu, chi tiền cho khách hàng trả Sổ tiết kiệm cho khách hàng,
nếu không đúng phải báo cho Kế toán để kiểm tra lại, chi xong ký tên lên góc trái chứng từ
và đóng dấu “Đã chi tiền” vào Sổ theo dõi, gữi lại Bảng kê để tổng hợp cuối ngày.
ức năng củ
Đối với Người quản trị:
Thêm quyền, xóa quyền, phân quyền cho nhóm người dùng, xóa quyền khỏi nhóm
người dùng.
khỏi phân nhóm.
Đối với Giao dịch viên –
chỉnh sửa thông tin khách hàng, thêm đồng sở hữu, mở sổ tiết
kiệm, thực hiện các giao dịch rút, gửi lãi, vốn, tất toán, phong tỏa, xóa sổ, tái tục, chuyển
quyền sử dụng sổ.
Tra cứu thông tin khách hàng, sổ tiết kiệm.
Phân quyền: quyền admin toàn quyền với hệ thống. Còn nhân viên không thể tham gia vào
việc quyền của các tài khoản khác.
|Nhóm 03
ế
Đối với hình thức gửi có kỳ hạn
Gửi tiết kiệm hàng tháng (tiết kiệm gửi góp): Hình thức này chỉ có hình thức i trả
sau. Như vậy, số tiền gốc sẽ tăng lên sau mỗi kỳ gửi góp, mà không phải là một số cố định
như hình thức tiết kiệm thông thường. Số tiền lãi cũng được tính trên cơ sở số tiền gốc tăng
lên đó. Lãi suất áp dụng cho loại tiền gửi này thấp hơn lãi suất tiền gửi tiết kiệm thông
thường. Quý khách sẽ không được rút tiền trước hạn, khi đến hạn nếu quý khách không đến
rút tiền, số không được chuyển thêm kỳ hạn gửi tiếp theo mà được tính lãi với lãi suất
không kỳ hạn.
Đối với hình thức gửi một lần có 3 hình thức trả lãi như: trả trước, trả định kì và trả
Tiền gửi tiết kiệm trả lãi trước Quý khách nhận được tiền lãi ngay tại thời điểm gửi
tiền. Lãi suất áp dụng cho hình thức tiền gửi này thấp hơn lãi suất tiền gửi cùng kỳ hạn lĩnh
lãi cuối kỳ. Loại tiền gửi này cũng không hỗ trợ quý khách rút gốc hoặc rút một phần gốc
trước hạn. Tiền gửi khi đến hạn quý khách không rút ra sẽ được chuyển thêm kỳ hạn
tiếp theo.
Tiền gửi tiết kiệm trả lãi định kỳ (hàng tháng/ hàng quý): Loại tiền gửi này rất thuận
tiện cho quý khách cần phải dùng tiền lãi thu được từ việc gửi tiền tiết kiệm của mình, để
sử dụng chi tiêu định kỳ hàng tháng, hàng quý…, quý khách không cần chờ khi đến hạn
mới rút được tiền lãi. Các quy định khác cũng giống như tiền gửi tiết kiệm thông thường.
Tiền gửi tiết kiệm trả lãi sau: Nhận tiền lãi khi ngày đến hạn. Hình thức tiền gửi này
cũng được nhập lãi một lần vào cuối kỳ, tự động chuyển thêm một kỳ hạn tiếp theo nếu quý
khách không rút tiền khi đến hạn.
Đối với hình thức gửi tiết kiệm không kỳ hạn (gửi một lần)
Tiền gửi tiết kiệm gửi một lần (rút gốc linh hoạt) Loại tiền gửi tiết kiệm này cũng
được nhập lãi một lần vào cuối kỳ và tự động quay vòng khi đến hạn. Tuy nhiên, trong kỳ
nếu quý khách có nhu cầu rút một phần gốc trước hạn thì phần tiền rút ra được tính lãi suấ
không kỳ hạn, phần còn lại gửi tiếp vẫn được áp dụng lãi suất có kỳ hạn kể từ ngày gửi.
Phương pháp tính lãi suấ
Công thức tính lãi cho loại tiết kiệm có kỳ hạn
|Nhóm 03
Khách hàng gửi 10 triệu với kỳ hạn 2 tháng, lãi suất 1.2%/ tháng.
Tiền lãi = 10000000 * 2* 1.2% = 240000
Công thức tính lãi cho loại tiết kiệm không kỳ hạn
Với số tiền gửi không kỳ hạn là 10 triệu.
Ngày gửi: 1/4/20009, ngày tất toán 6/4/20009.
Giả sử lãi suất trong thời điểm khách hàng rút 0.6%
Tiền lãi = (10000000 * 0.6%) / 30 * 5 = 10
Phương thứ
Tiền gửi không kỳ hạn: Tiền lãi được nhập vào gốc tháng hoặc quý vào ngày đến hạn
(rút hết số tiền gửi) nếu khách hàng không đến lãnh lãi.
Tiền gửi kỳ hạn: Tiền lãi được trả trước vào ngày khách hàng gửi tiền (đối với loại
tiết kiệm trả lãi trước); hoặc trả lãi định kỳ tháng, quý, 6 tháng, 1 năm (đối với loại tiết kiệm
trả lãi định kỳ); hoặc trả lãi cuối kỳ (đối với loại tiết kiệm trả lãi sau).
Rút vốn trước hạn (áp dụng lãi bậc thang):
Khách hàng gửi tiền có kỳ hạn khi có nhu cầu rút vốn trước hạn được áp dụng lãi suất
kỳ hạn tương đương với thời gian gửi thực tế hoặc mức lãi suất kỳ hạn ngắn hơn kế
trước (nếu Ngân hàng không huy động loại kỳ hạn tương đương thời gian khách hàng đã
gửi)
VD : Khách hàng gửi 10 triệu loại tiết kiệm kỳ hạn 6 tháng lãnh lãi hàng tháng, lãi suất
Ngày gửi : 1/4/2009, ngày hết hạn: 1/10/2009.
Ngày đến rút : 9/8/20009 => thời gian thực gửi là: 4 tháng, 8 ngày. Nếu tại thời điểm đó
Ngân hàng huy động tiết kiệm 3 tháng (Lãi suất: 1.4%/ tháng) không kỳ hạn lãi suất
0.6%/ tháng, tiết kiệm 1 tháng lãi suất 1.1%/ tháng.
. Trả lãi kỳ hạn 3 tháng : 10000000 * 3 * 1.4% = 420000
. Trả lãi kỳ hạn 1 tháng : 10000000 * 1 * 1.1% = 110000
. Trả lãi không kỳ hạn: (10000000 * 8 * 0.6%) / 30 = 16000
Tiền lãi = Số dư * Số tháng gửi * Lãi suất
Tiền lãi = (Số dư * Lãi suất) / 30 * Số ngày
|Nhóm 03
Tổng cộng : 420000 + 110000 + 16000 = 546000
|Nhóm 03
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
ế ế cơ sở
Từ mô tả về dữ liệu cần có ở phần mô tả bài toán, hình thành được sơ đồ thực thể kết hợp
ế ế cơ sở
Từ sơ đồ thực thể kết hợp (ERD), ta có các lược đồ quan hệ:
|Nhóm 03
|Nhóm 03
RÀNG BUỘC
Ràng buộc khoá chính
Ràng buộc khoá ngoại MaNhanVien tham chiếu
đến
Ràng buộc khoá chính MaGiaoDich, ràng buộc
khoá ngoại MaNhanVien và MaGiaoDich tham
chiếu đến
Ràng buộc khoá chính
Ràng buộc khoá chính
Ràng buộc khoá chính
Ràng buộc khoá chính
Ràng buộc khoá chính
Ràng buộc khoá chính
buộc khoá ngoại MaHinhThucGui và
MaHinhThucTraLai tham chiếu tới
Ràng buộc khoá chính ràng buộc
khoá ngoại MaChiNhanh tham chiếu đến
Ràng buộc khoá chính
Ràng buộc khoá ngoại MaNhanVien,
MaNhomNguoiDung tham chiếu đến
Ràng buộc khoá chính , ràng buộc khoá
ngoại MaSoTK tham chiếu đến
Ràng buộc khoá ngoại MaSoTK, MaKhachHang
tham chiếu đến
Ràng buộc khoá chính , ràng buộc khoá
ngoại MaChiNhanh, MaLoaiTien,
MaLoaiTietKiem tham chiếu đến
Cài đặ
4.1. Tạo bảng và các ràng buộc đơn giản.
Bảng Chi nhánh
CREATE TABLE CHI_NHANH
(
MaChiNhanh 10varchar( ),
TenChiNhanh nvarchar(50) not null,
DiaChi 50 nvarchar( ) not null,
primary key ( )MaChiNhanh
)
|Nhóm 03
Bảng Đăng nhập
CREATE TABLE DANG_NHAP
(
MaNhanVien 10 varchar( ) primary key REFERENCES NHAN_VIEN MaNhanVien( ),
TenDangNhap nvarchar(30) unique not null,
MatKhau 30 6varchar( ) not null check( (len MatKhau)>= )
)
Bảng Giao dịch tiết kiệm
CREATE TABLE GIAO_DICH_TIET_KIEM
(
MaGiaoDich 10 varchar( ) primary key,
MaSoTK 15 varchar( ) references TAI_KHOAN_TIET_KIEM(MaSoTK),
SoTienGiaoDich 0money check (SoTienGiaoDich>= ),
NgayGiaoDich date check ( ( ,DATEDIFF day NgayGiaoDich, GETDATE())>=0),
MaNhanVien 10 NHAN_VIEN MaNhanVienvarchar( ) REFERENCES ( ),
MaLoaiGiaoDich 10 varchar( ) REFERENCES LOAI_GIAO_DICH(MaLoaiGiaoDich),
NgayPhatSinhGiaoDich date,
DaThanhToan 0 bit DEFAULT -- Có m t s ch s t giao d động phát sinh khi đến
thi h ch s chn(lãi), giao d đư ợc đánh dấu đã thanh toán khi khách hàng đến giao d
)
Bảng Hình thức gửi
CREATE TABLE HINH_THUC_GUI
(
MaHinhThucGui 10 varchar( ) primary key,
TenHinhThucGui 30 nvarchar( ) not null,
HanMucGui money --VND
)
Bảng Hình thức trả lãi
CREATE TABLE HINH_THUC_TRA_LAI
(
MaHinhThucTraLai 10 varchar( ) primary key,
TenHinhThucTraLai 50nvarchar( ),
)
Bảng Khách hàng
CREATE TABLE KHACH_HANG
(
MaKhachHang varchar(10) primary key,
HoTen 30 nvarchar( ) not null,
NgaySinh 15date check ( ( ,DATEDIFF year NgaySinh, GETDATE())>= ),
SDT 11 SDT 10varchar( ) not null check( (len )= ),
MaDinhDanh 15 9 varchar( ) UNIQUE check ( (len MaDinhDanh)= or
len( )= ),MaDinhDanh 12
NgayCap NgaySinh NgayCapdate, check ( ( ,DATEDIFF year , )>=14),
NoiCap 100nvarchar( ),
DiaChi 100nvarchar( ),
DangSuDung 1bit DEFAULT ,
|Nhóm 03
ChuKy VARBINARY ( )max hình nh ch ký c a khách hàng
)
Bảng Loại giao dịch
CREATE TABLE LOAI_GIAO_DICH
(
MaLoaiGiaoDich 10 varchar( ) primary key,
TenLoaiGiaoDich 30 nvarchar( ) not null,
LienQuanSoDu bit
)
Bảng Loại tiền
CREATE TABLE LOAI_TIEN
(
MaLoaiTien 10 varchar( ) primary key,
LoaiTien 15 nvarchar( ) not null,
TiGiaVND money
)
Bảng Loại tiết kiệm
CREATE TABLE LOAI_TIET_KIEM
(
MaLoaiTietKiem 10 varchar( ) primary key,
MaHinhThucGui 10 varchar( ) references HINH_THUC_GUI(MaHinhThucGui),
MaHinhThucTraLai 10 varchar( ) references HINH_THUC_TRA_LAI(MaHinhThucTraLai),
KyHan KyHan 0 36int check( >= and KyHan<= ),
LaiSuat 0float check (LaiSuat> )
)
Bảng Nhân viên
CREATE TABLE NHAN_VIEN
(
MaNhanVien 10 varchar( ) ,
HoTen 30nvarchar( )not null,
NgaySinh date not null,
MaDinhDanh 15 9 MaDinhDanh 12varchar( ) check ( (len MaDinhDanh)= or len( )= ),
SDT 11 SDTvarchar( ) check ( (len )=10),
primary key ( ),MaNhanVien
MaChiNhanh 10 CHI_NHANH MaChiNhanh varchar( ) references ( ) ON UPDATE CASCADE,
TinhTrangLamViec 1 bit DEFAULT
)
Bảng Nhóm người dùng
CREATE TABLE NHOM_NGUOI_DUNG
(
MaNhomNguoiDung 10varchar( ),
TenNhom 30nvarchar( ),
TenRole 20varchar( ),
primary key ( )MaNhomNguoiDung
)
|Nhóm 03
Bảng Phân nhóm
CREATE TABLE PHAN_NHOM
(
MaNhanVien 10 varchar( ) primary key references NHAN_VIEN (MaNhanVien),
MaNhomNguoiDung 10 varchar( ) references NHOM_NGUOI_DUNG (MaNhomNguoiDung) ON
DELETE SET NULL
)
Bảng Số dư tài khoản
CREATE TABLE SO_DU_TAI_KHOAN
(
MaSoDu 10varchar( ),
MaSoTK 15 varchar( ) REFERENCES TAI_KHOAN_TIET_KIEM(MaSoTK),
NgayGhiNhanSoDu date,
SoDu money,
PRIMARY KEY( ,MaSoDu MaSoTK ),
)
Bảng Sở hữu
CREATE TABLE SO_HUU
(
MaSoTK 15 varchar( ) REFERENCES TAI_KHOAN_TIET_KIEM(MaSoTK),
MaKhachHang varchar(10) references KHACH_HANG MaKhachHang( ),
PRIMARY KEY ( ,MaSoTK MaKhachHang )
)
Bảng Tài khoản tiết kiệm
CREATE TABLE TAI_KHOAN_TIET_KIEM
(
MaSoTK 15 varchar( ) PRIMARY KEY,
NgayMoSo date,
NgayDenHan date, -- n H a s i s Ngày Đế n c là ngày cu được tính lãi (Ngày
Khách hàng đượ c rút ti n gốc và đúng lãi)
NgayTatToan date, -- t c n lãi l n g c Ngày khách hàng đến rút t ti n ti
MaChiNhanh 10 CHI_NHANH MaChiNhanh varchar( ) references ( ), -- sMã chi nhánh m
MaLoaiTien 10 LOAI_TIEN MaLoaiTien varchar( ) references ( ), -- Mã lo i ti n g i
MaLoaiTietKiem 10 varchar( ) references LOAI_TIET_KIEM(MaLoaiTietKiem), --Mã
loi ti mết ki
NgayLaiNhapGoc date, -- N t toán s sau ngày ếu trường hp khách hàng không t
đến h n s vn thì t động gia h i ti n g i = g c m ốc cũ + lãi, loại ti t kiế m gi
nguyên.
KyTraLai int, -- N ng h n tr n qui ếu trườ p khách hàng ch lãi đinh k thì c
định thêm k tr h n) lãi (< k
HanGuiGop int, -- N ng h n g nh ếu trườ p khách hàng ch i góp thì cần qui đị
thêm h n g nh k h n) ửi đị (< k
TinhTrangSuDung 1bit DEFAULT ,
NgayGuiGopTiepTheo date, -- i góp ti p theo n i góp Ngày g ế ếu g
NgayNhanLaiDinhKyTiepTheo date, -- Ngày nh nh k ti u g i ận lãi đị ếp theo nế
l .ấy lãi định k
)
|Nhóm 03
Ràng buộc mã khách hàng khi thêm khách hàng
-- Đặt ràng buc mã khách hàng được t o t ng. độ
USE QUANLYTAIKHOANTIETKIEM
CREATE TABLE KHACH_HANG
ADD CONSTRAINT AUTO_IDKHACHHANG
DEFAULT FOR DBO AUTO_IDCustomer. () MaKhachHang;
GO
Ràng buộc mã sổ khi thêm sổ
-- ng. c mã s c t o t Đặt ràng bu đượ độ
USE QUANLYTAIKHOANTIETKIEM
CREATE TABLE TAI_KHOAN_TIET_KIEM
ADD CONSTRAINT AUTO_IDSTKs
DEFAULT FOR DBO AUTO_IDSTK. () MaSoTK;
GO
Trigger kiểm tra và điều chỉnh một số ràng buộc liên quan đến loại tiết kiệm của sổ
-- Trigger ki nh m ràng bu n lo i ti t kiểm tra và điều ch t s ộc liên quan đế ế m c a s
CREATE TRIGGER Them_LTK ON LOAI_TIET_KIEM
AFTER INSERT
AS
DECLARE varchar varchar varchar int @maLoaiTK (10), @maHinhthucgui (10), @maHinhthuctralai (10), @kyHan
SELECT @maLoaiTK=nl. , = . ,MaLoaiTietKiem @maHinhthucgui nl MaHinhThucGui
@maHinhthuctralai MaHinhThucTraLai=nl. , @kyHan=nl.KyHan
FROM inserted nl
BEGIN
if @maHinhthucgui ='HTG_G'
BEGIN
--Vi hình thc gi góp thì hình th c tr lãi m nh là tr sau và k h n ph i trên ặc đị
6 tháng
LOAI_TIET_KIEM MaHinhThucTraLai MaLoaiTietKiem UPDATE SET ='HTTL_S' WHERE =@maLoaiTK;
@kyHan 6 if <
UPDATE LOAI_TIET_KIEM KyHan MaLoaiTietKiem SET =6 WHERE =@maLoaiTK;
END
if @kyHan 0 =
-- N h c g i không k hếu k ạn là 0 thì đây là hình thứ n
LOAI_TIET_KIEM MaHinhThucTraLai MaLoaiTietKiem UPDATE SET ='HTTL_S' WHERE =@maLoaiTK;
END
GO
Trigger khi xóa nhân viên thì sẽ đánh dấu nhân viên nghỉ và xóa tài khoản đăng
nhập của người đó khỏi hệ thống
-- Trigger khi xóa nhân viên thì s u nhân viên ngh và xóa tài kho p c đánh dấ ản đăng nhậ ủa người đó
kh th ng i h
CREATE TRIGGER XoaNhanVien ON NHAN_VIEN
INSTEAD DELETE OF
AS
DECLARE varchar @maNV (10)
SELECT @maNV=ol.MaNhanVien
FROM deleted ol
SET ON XACT_ABORT
BEGIN TRAN
BEGIN TRY
-- C p nh t tình tr ng tình vi c của nhân viên là đã nghỉ
NHAN_VIEN TinhTrangLamViec MaNhanVien UPDATE SET =0 WHERE =@maNV;
@tenUser DECLARE varchar(15);
|Nhóm 03
@tenUser TenDangNhap DANG_NHAP MaNhanVien @maNV SELECT = FROM WHERE =
-- Xóa user c a nhân viên
@sql DECLARE varchar(100)
@sql @tenUser SET = 'DROP USER '+
@sql exec
-- Xóa nhân viên kh i phân nhóm
PHAN_NHOM MaNhanVien DELETE FROM WHERE =@maNV;
-- Xóa tài kho n login c a nhân viên kh i server
@sql @tenUser SET = 'DROP LOGIN '+
@sql exec
-- Xóa tài kho n p c a nhân viên kh đăng nhậ i bảng Đăng nhập
DANG_NHAP MaNhanVien DELETE FROM WHERE =@maNV;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
GO
Trigger tạo một user trên SQL khi thêm một nhân viên
CREATE TRIGGER CreateSQLAccount ON DANG_NHAP
AFTER INSERT
AS
DECLARE nvarchar nvarchar @userName (30), @passWord (10)
SELECT @userName=nl. , .TenDangNhap @passWord=nl MatKhau
FROM inserted nl
BEGIN
DECLARE @sqlString nvarchar(2000)
-- T o tài kho i dùng và m t kh u là tài kho c t o trên ản login cho nhân viên, tên ngườ ản đượ
b pảng Đăng nhậ
SET @sqlString @userName @passWord = 'CREATE LOGIN [' + +'] WITH PASSWORD='''+ +''',
DEFAULT_DATABASE=[QUANLYTAIKHOANTIETKIEM], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
EXEC (@sqlString)
-- T o tài kho i v i dùng trùng v i tên ản người dùng đố ới nhân viên đó trên database (tên ngườ
login)
SET @sqlString @userName @userName = 'CREATE USER ' + +' FOR LOGIN '+
EXEC (@sqlString)
END
GO
Trigger kiểm tra và điều chỉnh một số ràng buộc liên quan đến loại tiết kiệm của sổ
CREATE TRIGGER Them_LTK ON LOAI_TIET_KIEM
AFTER INSERT
AS
DECLARE varchar varchar varchar int @maLoaiTK (10), @maHinhthucgui (10), @maHinhthuctralai (10), @kyHan
SELECT @maLoaiTK=nl. , = . ,MaLoaiTietKiem @maHinhthucgui nl MaHinhThucGui
@maHinhthuctralai MaHinhThucTraLai=nl. , @kyHan=nl.KyHan
FROM inserted nl
BEGIN
if @maHinhthucgui ='HTG_G'
BEGIN
--Vi hình thc gi góp thì hình th c tr lãi m nh là tr sau và k h n ph i trên ặc đị
6 tháng
LOAI_TIET_KIEM MaHinhThucTraLai MaLoaiTietKiem UPDATE SET ='HTTL_S' WHERE =@maLoaiTK;
@kyHan 6 if <
UPDATE LOAI_TIET_KIEM KyHan MaLoaiTietKiem SET =6 WHERE =@maLoaiTK;
END
if @kyHan 0 =
-- N h c g i không k hếu k ạn là 0 thì đây là hình thứ n
LOAI_TIET_KIEM MaHinhThucTraLai MaLoaiTietKiem UPDATE SET ='HTTL_S' WHERE =@maLoaiTK;
END
GO
Trigger Kiểm tra các thông tin về sổ tiết kiệm trước khi thêm một sổ mới.
CREATE ON TRIGGER THEM_TAI_KHOAN_TIET_KIEM TAI_KHOAN_TIET_KIEM
|Nhóm 03
AFTER INSERT
AS
DECLARE @maTK varchar(15), @maLoaiTK @kyTralai @hanGuigop @kyHanso varchar(10), int, int, int
SELECT @maTK=nl MaSoTK nl. , = @maLoaiTK .MaLoaiTietKiem KyTraLai, @kyTralai=nl. , @hanGuigop=nl HanGuiGop.
FROM inserted nl
BEGIN
BEGIN TRAN
BEGIN TRY
@kyHan @maHinhthuctralai @maHinhthucgui DECLARE int, varchar(10), varchar(10);
KyHan MaLoaiTietKiemSET @kyHan= (SELECT from LOAI_TIET_KIEM where =@maLoaiTK);
TAI_KHOAN_TIET_KIEM UPDATE SET NgayLaiNhapGoc=NgayMoSo where MaSoTK=@maTK;
0 if @kyHan=
UPDATE TAI_KHOAN_TIET_KIEM NgayTatToan KyTraLai SET NgayDenHan=null, =null, =null,
HanGuiGop=null where MaSoTK =@maTK;
else
-- i s có k hĐối v n
BEGIN
-- a sTính ngày đến hn c
UPDATE TAI_KHOAN_TIET_KIEM SET NgayDenHan= (DATEADD day, 30* ,@kyHan NgayMoSo) where
MaSoTK=@maTK;
SET @maHinhthuctralai= (SELECT LOAI_TIET_KIEM MaHinhThucTraLai from WHERE
MaLoaiTietKiem @maLoaiTK= );
SET @maHinhthucgui= (SELECT from MaHinhThucGui LOAI_TIET_KIEM WHERE
MaLoaiTietKiem @maLoaiTK= );
if @maHinhthucgui='HTG_1L'
BEGIN
-- i g i lãi tr c ho sau:Đối v trướ c tr
if ( =@maHinhthuctralai 'HTTL_S') ( OR @maHinhthuctralai= )'HTTL_T'
UPDATE TAI_KHOAN_TIET_KIEM @kyHan MaSoTK SET KyTraLai= where =@maTK;
else
-- i trĐối v lãi định k
if ( > )@kyTralai @kyHan or (@kyHan @kyTralai % !=0) or (@kyTralai=null)
UPDATE TAI_KHOAN_TIET_KIEM SET KyTraLai=1 where MaSoTK @maTK= ;
-- Tính ngày l u tiên cấy lãi đầ a s tiết ki nh kệm đị
UPDATE TAI_KHOAN_TIET_KIEM SET NgayNhanLaiDinhKyTiepTheo= ( ,DATEADD day
30* ,@kyTralai NgayMoSo NgayGuiGopTiepTheo), =null = MaSoTKwhere @maTK;
END
else
BEGIN
if (@hanGuigop>@kyHan) @kyHan or ( % @hanGuigop !=0) or (@hanGuigop=null)
UPDATE TAI_KHOAN_TIET_KIEM SET HanGuiGop=1 where
MaSoTK=@maTK;
-- Tính ngày g p theo ci góp tiế a s gi góp
UPDATE TAI_KHOAN_TIET_KIEM SET NgayGuiGopTiepTheo= ( ,DATEADD day 30*@hanGuigop,
NgayMoSo), NgayNhanLaiDinhKyTiepTheo=null ; where MaSoTK=@maTK
END
END
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
END
GO
Trigger Kiểm tra khi một sổ tiết kiệm đã tất toán (đóng sổ) thì sẽ đóng tình trạng sử
dụng của chủ sổ (nếu chỉ có 1 sổ)
CREATE TRIGGER DongSo ON TAI_KHOAN_TIET_KIEM
AFTER UPDATE
AS
DECLARE varchar bit @maSo (15), @trangThai
SELECT @maSo=nl. , = .MaSoTK @trangThai nl TinhTrangSuDung
FROM inserted nl
BEGIN
DECLARE @num_Chu @index @TEMP int, int=1, varchar(10);
if (@trangThai 0= )
BEGIN
@chuMaso Id ChuSo DECLARE TABLE ( int not null primary key identity(1,1), varchar(10),
SoSo int);
@chuMaso SoSo LAY_CHU_SO SoLuongSo INSERT INTO ( ,ChuSo ) SELECT * FROM (@maSo) WHERE =1;
@num_Chu SET = @@ROWCOUNT;
@index @num_Chu WHILE <= -- Countdown
BEGIN
SELECT @TEMP ChuSo @chuMaso = FROM WHERE Id=@index;
UPDATE KHACH_HANG DangSuDung MaKhachHang SET =0 WHERE =@TEMP;
SET @index @index 1 = + ;
END
END
| 1/72

Preview text:

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN HỆ THỐNG THÔNG TIN 🙞🙞🙞🙞🙞
ĐỀ TÀI CUỐI KỲ MÔN HỆ QUẢN TRỊ CSDL TÊN ĐỀ TÀI:
QUẢN LÝ TÀI KHOẢN TIẾT KIỆM NGÂN HÀNG
TS. Nguyễn Thành Sơn Lớp HP: Nhóm thực hiện: Học kỳ: Năm học:
Thành phố Hồ Chí Minh, tháng 11, năm 2022
DANH SÁCH SINH VIÊN NHÓM THỰC HIỆN
HỌC KÌ 1 NĂM HỌC 2022
Đề tài: Quản lý tài khoản tiết kiệm ngân hàng Lê Thị Kim Lệ Nguyễn Thị Bích Liên Nguyễn Thị Cẩm Nguyên Phùng Thị Thùy Trang NHẬN XÉT CỦA GV
Tp. Hồ Chí Minh, ngày …., tháng 11, năm 2022 Giảng viên chấm điểm Contents LỜI NÓI ĐẦU
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG Đặc tả đề tài Mô tả bài toán
Nghiệp vụ của bài toán
Mô tả các chức năng của bài toán
Một số hình thức gửi tiết kiệm
Phương pháp tính lãi suất
Phương thức tính lãi
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Thiết kế cơ sở dữ liệu mức quan niệm.
Thiết kế cơ sở dữ liệu mức logic. Các ràng buộc cần có
Cài đặt CSDL và các ràng buộc
4.1. Tạo bảng và các ràng buộc đơn giản. Các ràng buộc khác
Trigger kiểm tra các ràng buộc
CHƯƠNG 3. THIẾT KẾ CÁC CHỨC NĂNG
Kết nối cơ sở dữ liệu Xem thông tin danh mục Quản lý nhân viên Quản lý Sổ tiết kiệm
Quản lý Giao dịch tiết kiệm
CHƯƠNG 4. TẠO USER VÀ PHÂN QUYỀN
CHƯƠNG 5. THIẾT KẾ GIAO DIỆN HỆ THỐNG LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy
Nguyễn Thành Sơn đã giúp chúng em hoàn thành bài báo cáo cuối kì bộ môn Hệ quản trị
cơ sở dữ liệu này. Nhờ những kiến thức thầy truyền đạt mà chúng em đã nắm chắc hơn
được những kiến thức căn bản, nền tảng cho việc khi xây dựng một hệ thống quản trị cơ sở
dữ liệu. Thông qua đồ án này, nhóm em xin trình bày lại quá trình phát triển của một hệ
thống quản trị cơ sở dữ liệu, cũng như lập trình một đồ án liên quan.
Trong quá trình thực hiện đồ án môn học, khó tránh khỏi những sai sót. Do đó nhóm
chúng em rất mong sự góp ý đến từ thầy để bài làm của nhóm chúng em được hoàn thiện
hơn, phát triển và đầy đủ hơn. Kính chúc thầy sức khỏe, hạnh phúc thành công trên con
đường sự nghiệp giảng dạy
Cuối cùng chúng em cũng chân thành cảm ơn các thầy cô và các bạn cùng tham gia
học bộ môn Hệ quản trị sơ sở dữ liệu đã nhiệt tình giúp đỡ động viên chúng em trong trình
thực hiện đồ án cuối kì. |Nhóm 03 LỜI NÓI ĐẦU
Trong nhiều năm trở lại đây, ngành công nghệ
thực sự đã len lỏi vào từng
ngóc ngách của đời sống xã hội. Bất kể một lĩnh vực hay ngành nghề nào cũng đều ứng
dụng các công nghệ thông tin. CNTT đã và đang đóng vai trò quan trọng trong đời sống
kinh tế, xã hội của nhiều quốc gia trên thế giới và Việt Nam cũng vậy, ứng dụng của ngành
này có rất nhiều trong đời sống hằng ngày.
Không thể phủ nhận rằng các hệ thống quản lý dữ liệu, thông tin dần trở thành công
cụ đắc lực của nhiều doanh nghiệp. Đặc biệt phải kể đến lĩnh vực ngân hàng hiện nay
công tác quản lý dữ liệu, công nghệ thông tin giúp cho quá trình quản lý dữ liệu đạt hiệu
quả cao trong việc giảm tối thiểu về nhân lực, thời gian cũng như tránh thất lạc, sai sót dữ
liệu thay vì việc quản lý bằng giấy tờ bằng phương pháp cổ truyền như trước đây.
Chính vì những lý do đó, ứng dụng của Công nghệ thông tin đối với công tác quản
lý dữ liệu trong ngân đóng một vai trò hết sức quan trọng. Và để làm rõ hơn về ứng dụng
của Công nghệ thông tin đối với công tác quản lý trong thực tế nhóm chúng em lựa chọn đề
“Quản lý tài khoản tiết kiệm Ngân hàng” để nghiên cứu và phát triển ứng dụng của
việc quản lý hệ thống dữ liệu trong môn học Hệ quản trị cơ sở dữ liệu. |Nhóm 03
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG Đặ ả đề
Một ngân hàng cần có hệ thống quản lý tài khoản tiết kiệm. Một hệ thống quản lý
tài khoản tiết kiệm cần lưu trữ những dữ liệu như sau:
Ngân hàng quản lý nhiều chi nhánh, mỗi Chi nhánh có Tên chi nhánh, Mã chi nhánh,
Địa chỉ. Mỗi chi nhánh thì có nhiều nhân viên,…
Mỗi nhân viên có các thông tin: Mã nhân viên, Họ tên, Ngày sinh, Địa chỉ, Điện
thoại. Mỗi nhân viên được cấp tên đăng nhập và mật khẩu để đăng nhập vào hệ thống. Mỗi
nhân viên sẽ có chức vụ và quyền hạn khác nhau nên thuộc các nhóm người dùng và có phân quyền khác nhau.
ông tin về nhóm người dùng thì gồm có: Mã nhóm người dùng, Tên nhóm người
dùng. Có các nhóm người dùng sau: Nhân viên giao dịch và Giám đốc.
Nhóm người dùng thì được phân chia ra những quyền riêng biệt. Thông tin về nhóm
quyền: Mã quyền, Tên quyền. Các nhóm người dùng được phân cho một hoặc nhiều quyền.
Một Chi nhánh thì quản lý nhiều tài khoản tiết kiệm và điều cần thiết với mỗi sổ là
thông tin Khách hàng gửi tiết kiệm. Thông tin của khách hàng gồm: Mã khách hàng, Tên,
Số điện thoại, Địa chỉ, số CCCD, Nơi cấp, Ngày cấp.
Một khách hàng có thể mở một hoặc nhiều sổ tiết kiệm. Thông tin của mỗi sổ tiết
kiệm: Mã sổ tiết kiệm, Ngày mở sổ, Ngày đến hạn, Ngày tất toán, Loại tiền gửi, Tình trạng.
Tình trạng của sổ có thể là: Còn hiệu lực, Đã tất toán, Phong tỏa.
Mỗi một sổ tiết kiệm sẽ thuộc một loại tiết kiệm duy nhất, phân biệt bởi mã loại tiết
kiệm. Mã loại tiết kiệm qui định hình thức gửi tiết kiệm, kỳ hạn, hình thức trả lãi, lãi suất.
Có các hình thức gửi tiết kiệm sau:
Tiền gửi tiết kiệm trả lãi định kỳ
Tiền gửi tiết kiệm trả lãi trước
Tiền gửi tiết kiệm trả lãi sau
Tiền gửi tiết kiệm gửi góp
Tiền gửi tiết kiệm một lần
|Nhóm 03
Kỳ hạn: Không kỳ hạn, 1 tháng, 2 tháng, …, 36 tháng.
Lãi suất tiết kiệm được quy định bởi: Hình thức gửi tiết kiệm, Kỳ hạn, Kỳ trả lãi.
Mỗi sổ tiết kiệm sẽ phát sinh một hoặc nhiều phát sinh giao dịch tiết kiệm. Thông
tin của mỗi giao dịch tiết kiệm gồm: Mã số giao dịch, Ngày giao dịch, Mã sổ tiết kiệm, Mã
loại giao dịch, Mã chi nhánh giao dịch, Mã nhân viên giao dịch, Số tiền giao dịch. Mã loại
giao dịch cho biết loại giao dịch nào được thực hiện, có các loại giao dịch sau: Gửi tiền, Rút
tiền lãi, Tất toán, Lãi nhập gốc, Tái ký gửi. ệ ụ ủ Gửi tiết kiệm
Khách hàng xuất trình giấy chứng minh. Kế Toán hướng dẫn khách hàng điền đầy
đủ thông tin trên “giấy đề nghị gửi tiền”. Thông tin “giấy đề nghị gửi tiền” gồm có: họ tên,
điện thoại, địa chỉ, số CMND, ngày cấp, nơi cấp, số tiền gửi, kỳ hạn gửi, hình thức rút lãi.
Kế Toán Trưởng kiểm tra các thông tin trên giấy đề nghị của khách hàng, giấy nộp tiền,
phiếu lưu, Sổ tiết kiệm phải khớp nhau và ký tên lên Sổ Tiết Kiệm. Giám Đốc ký tên lên
giấy nộp tiền, Sổ tiết kiệm. Thủ quỹ nhận giấy nộp tiền, Sổ tiết kiệm, phiếu lưu tiền gửi, chờ Kiểm ngân thu.
Kiểm ngân sau khi thu xong, lập bảng kê nộp tiền, ký tên lên bảng kê nộp và chuyển
bảng kê cho thủ quỹ. Thủ quỹ kiểm tra số tiền trên bảng kê, giấy nộp tiền, phiếu lưu, Sổ tiết
kiệm. Nếu khớp đúng số tiền, ký tên lên giấy nộp tiền và bảng kê nộp, vào sổ theo dõi. Nếu
không khớp đúng số tiền phải báo cho Kế toán biết để điều chỉnh lại. Cho khách hàng ký
tên lên giấy nộp tiền, bảng kê nộp, đăng ký chữ ký mẫu lên phiếu lưu, ký tên lên Sổ Tiết
Kiệm, phiếu lưu (bên phần kiểm soát), ký nhận Sổ Tiết Kiệm. Sau khi xong cho khách hàng
ký nhận sổ và trả sổ c
Sau đó ký tên lên góc trái chứng từ, đóng dấu đã thu tiền và vào sổ theo dõi thu chi,
giữ lại bảng kê nộp tiền để tổng hợp (cuối ngày giao lại cho Thủ quỹ). Thủ quỹ vào sổ quỹ.
Giấy nộp tiền cuối ngày Thủ quỹ chuyển qua bộ phận kết hợp chứng từ.
Kiểm tra các yếu tố trên giấy gửi tiền. Ký chữ ký mẫu lên phiếu lưu tiền gửi (hoặc
các ký hiệu khác). Nhân viên ngân hàng in Giấy nộp tiền, Phiếu lưu, Sổ tiền gửi. Rút tiết kiệm |Nhóm 03
Khách hàng đến rút tiền mang Sổ tiết kiệm, CMND (hộ chiếu) đã đăng ký lúc gửi
tiền và thông báo đến Kế toán số tiền cần rút (vốn, lãi).
Trường hợp rút hoàn toàn: KT sẽ căn cứ vào ngày đáo hạn, số tiền gửi, lãi suất trên
sổ, lập Phiếu tính lãi, in Giấy lãnh tiền, Phiếu chi lãi, in Sổ tiền gửi, ghi Phiếu lưu tiền gửi,
ký tên chuyển qua cho Kế toán Trưởng.
Trường hợp khách hàng gửi lại đúng số tiền và định kỳ trên Sổ tiết kiệm: Kế toán sử
dụng lại Sổ tiết kiệm cũ, Phiếu lưu cũ, lập Giấy nộp tiền, Giấy lĩnh tiền, Phiếu chi lãi, in Sổ
tiết kiệm, ghi Thẻ lưu tài khoản, chuyển cho Kế toán trưởng.
Trường hợp khách hàng gửi lại thay đổi số tiền: Kế toán thực hiện như trường hợp
rút hoàn toàn, sau đó làm giống như trường hợp gửi tiền, chuyển cho Kế toán trưởng
Kế toán trưởng kiểm tra lại ngày đáo hạn, cách tính lãi trên Phiếu tính lãi, Giấy lĩnh
tiền, Phiếu chi lãi, Số dư trên Sổ tiền gửi và Phiếu lưu. Cho khách ký tên lên chứng từ, đối
chiếu chữ ký của khách hàng trên chứng từ Thẻ lưu, nếu đúng chữ ký, khách hàng ký tên
lên Sổ tiết kiệm và Thẻ lưu, chi tiền cho khách hàng và trả Sổ tiết kiệm cho khách hàng,
nếu không đúng phải báo cho Kế toán để kiểm tra lại, chi xong ký tên lên góc trái chứng từ
và đóng dấu “Đã chi tiền” vào Sổ theo dõi, gữi lại Bảng kê để tổng hợp cuối ngày. ả ức năng củ
Đối với Người quản trị:
Thêm quyền, xóa quyền, phân quyền cho nhóm người dùng, xóa quyền khỏi nhóm người dùng. khỏi phân nhóm.
Đối với Giao dịch viên –
chỉnh sửa thông tin khách hàng, thêm đồng sở hữu, mở sổ tiết
kiệm, thực hiện các giao dịch rút, gửi lãi, vốn, tất toán, phong tỏa, xóa sổ, tái ký tục, chuyển quyền sử dụng sổ.
Tra cứu thông tin khách hàng, sổ tiết kiệm.
Phân quyền: quyền admin toàn quyền với hệ thống. Còn nhân viên không thể tham gia vào
việc quyền của các tài khoản khác. |Nhóm 03 ộ ố ứ ử ế ệ
Đối với hình thức gửi có kỳ hạn
Gửi tiết kiệm hàng tháng (tiết kiệm gửi góp): Hình thức này chỉ có hình thức lãi trả
sau. Như vậy, số tiền gốc sẽ tăng lên sau mỗi kỳ gửi góp, mà không phải là một số cố định
như hình thức tiết kiệm thông thường. Số tiền lãi cũng được tính trên cơ sở số tiền gốc tăng
lên đó. Lãi suất áp dụng cho loại tiền gửi này thấp hơn lãi suất tiền gửi tiết kiệm thông
thường. Quý khách sẽ không được rút tiền trước hạn, khi đến hạn nếu quý khách không đến
rút tiền, số dư không được chuyển thêm kỳ hạn gửi tiếp theo mà được tính lãi với lãi suất không kỳ hạn.
Đối với hình thức gửi một lần có 3 hình thức trả lãi như: trả trước, trả định kì và trả
Tiền gửi tiết kiệm trả lãi trước Quý khách nhận được tiền lãi ngay tại thời điểm gửi
tiền. Lãi suất áp dụng cho hình thức tiền gửi này thấp hơn lãi suất tiền gửi cùng kỳ hạn lĩnh
lãi cuối kỳ. Loại tiền gửi này cũng không hỗ trợ quý khách rút gốc hoặc rút một phần gốc
trước hạn. Tiền gửi khi đến hạn mà quý khách không rút ra sẽ được chuyển thêm kỳ hạn tiếp theo.
Tiền gửi tiết kiệm trả lãi định kỳ (hàng tháng/ hàng quý): Loại tiền gửi này rất thuận
tiện cho quý khách cần phải dùng tiền lãi thu được từ việc gửi tiền tiết kiệm của mình, để
sử dụng chi tiêu định kỳ hàng tháng, hàng quý…, quý khách không cần chờ khi đến hạn
mới rút được tiền lãi. Các quy định khác cũng giống như tiền gửi tiết kiệm thông thường.
Tiền gửi tiết kiệm trả lãi sau: Nhận tiền lãi khi ngày đến hạn. Hình thức tiền gửi này
cũng được nhập lãi một lần vào cuối kỳ, tự động chuyển thêm một kỳ hạn tiếp theo nếu quý
khách không rút tiền khi đến hạn.
Đối với hình thức gửi tiết kiệm không kỳ hạn (gửi một lần)
Tiền gửi tiết kiệm gửi một lần (rút gốc linh hoạt) Loại tiền gửi tiết kiệm này cũng
được nhập lãi một lần vào cuối kỳ và tự động quay vòng khi đến hạn. Tuy nhiên, trong kỳ
nếu quý khách có nhu cầu rút một phần gốc trước hạn thì phần tiền rút ra được tính lãi suấ
không kỳ hạn, phần còn lại gửi tiếp vẫn được áp dụng lãi suất có kỳ hạn kể từ ngày gửi.
Phương pháp tính lãi suấ
Công thức tính lãi cho loại tiết kiệm có kỳ hạn |Nhóm 03
Tiền lãi = Số dư * Số tháng gửi * Lãi suất
Khách hàng gửi 10 triệu với kỳ hạn 2 tháng, lãi suất 1.2%/ tháng.
Tiền lãi = 10000000 * 2* 1.2% = 240000
Công thức tính lãi cho loại tiết kiệm không kỳ hạn
Tiền lãi = (Số dư * Lãi suất) / 30 * Số ngày
Với số tiền gửi không kỳ hạn là 10 triệu.
Ngày gửi: 1/4/20009, ngày tất toán 6/4/20009.
Giả sử lãi suất trong thời điểm khách hàng rút 0.6%
Tiền lãi = (10000000 * 0.6%) / 30 * 5 = 10 Phương thứ
Tiền gửi không kỳ hạn: Tiền lãi được nhập vào gốc tháng hoặc quý vào ngày đến hạn
(rút hết số tiền gửi) nếu khách hàng không đến lãnh lãi.
Tiền gửi có kỳ hạn: Tiền lãi được trả trước vào ngày khách hàng gửi tiền (đối với loại
tiết kiệm trả lãi trước); hoặc trả lãi định kỳ tháng, quý, 6 tháng, 1 năm (đối với loại tiết kiệm
trả lãi định kỳ); hoặc trả lãi cuối kỳ (đối với loại tiết kiệm trả lãi sau).
Rút vốn trước hạn (áp dụng lãi bậc thang):
Khách hàng gửi tiền có kỳ hạn khi có nhu cầu rút vốn trước hạn được áp dụng lãi suất
ở kỳ hạn tương đương với thời gian gửi thực tế hoặc mức lãi suất ở kỳ hạn ngắn hơn kế
trước (nếu Ngân hàng không huy động loại kỳ hạn tương đương thời gian khách hàng đã gửi)
VD : Khách hàng gửi 10 triệu loại tiết kiệm kỳ hạn 6 tháng lãnh lãi hàng tháng, lãi suất
Ngày gửi : 1/4/2009, ngày hết hạn: 1/10/2009.
Ngày đến rút : 9/8/20009 => thời gian thực gửi là: 4 tháng, 8 ngày. Nếu tại thời điểm đó
Ngân hàng huy động tiết kiệm 3 tháng (Lãi suất: 1.4%/ tháng) và không kỳ hạn lãi suất
0.6%/ tháng, tiết kiệm 1 tháng lãi suất 1.1%/ tháng.
. Trả lãi kỳ hạn 3 tháng : 10000000 * 3 * 1.4% = 420000
. Trả lãi kỳ hạn 1 tháng : 10000000 * 1 * 1.1% = 110000
. Trả lãi không kỳ hạn: (10000000 * 8 * 0.6%) / 30 = 16000 |Nhóm 03
Tổng cộng : 420000 + 110000 + 16000 = 546000 |Nhóm 03
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
ế ế cơ sở ữ ệ
Từ mô tả về dữ liệu cần có ở phần mô tả bài toán, hình thành được sơ đồ thực thể kết hợp
ế ế cơ sở ữ ệ
Từ sơ đồ thực thể kết hợp (ERD), ta có các lược đồ quan hệ: ● ● ● ● ● ● ● ● ● |Nhóm 03 ● ● ● ● ● ● |Nhóm 03 RÀNG BUỘC Ràng buộc khoá chính
Ràng buộc khoá ngoại MaNhanVien tham chiếu đến
Ràng buộc khoá chính MaGiaoDich, ràng buộc
khoá ngoại MaNhanVien và MaGiaoDich tham chiếu đến Ràng buộc khoá chính Ràng buộc khoá chính Ràng buộc khoá chính Ràng buộc khoá chính Ràng buộc khoá chính Ràng buộc khoá chính
buộc khoá ngoại MaHinhThucGui và
MaHinhThucTraLai tham chiếu tới Ràng buộc khoá chính ràng buộc
khoá ngoại MaChiNhanh tham chiếu đến Ràng buộc khoá chính
Ràng buộc khoá ngoại MaNhanVien,
MaNhomNguoiDung tham chiếu đến Ràng buộc khoá chính , ràng buộc khoá
ngoại MaSoTK tham chiếu đến
Ràng buộc khoá ngoại MaSoTK, MaKhachHang tham chiếu đến Ràng buộc khoá chính , ràng buộc khoá
ngoại MaChiNhanh, MaLoaiTien,
MaLoaiTietKiem tham chiếu đến Cài đặ
4.1. Tạo bảng và các ràng buộc đơn giản.
Bảng Chi nhánh CREATE TABLE CHI_NHANH ( MaChiNhanh varchar(10),
TenChiNhanh nvarchar(50) not null, DiaChi nvarchar(50) not null, primary key (MaChiNhanh) ) |Nhóm 03
Bảng Đăng nhập CREATE TABLE DANG_NHAP (
MaNhanVien varchar(10) primary key REFERENCES NHAN_VIEN(MaNhanVien),
TenDangNhap nvarchar(30) unique not null,
MatKhau varchar(30) not null check(len(MatKhau)>=6) )
Bảng Giao dịch tiết kiệm
CREATE TABLE GIAO_DICH_TIET_KIEM (
MaGiaoDich varchar(10) primary key,
MaSoTK varchar(15) references TAI_KHOAN_TIET_KIEM(MaSoTK),
SoTienGiaoDich money check (SoTienGiaoDich>=0),
NgayGiaoDich date check (DATEDIFF(day, NgayGiaoDich, GETDATE())>=0),
MaNhanVien varchar(10) REFERENCES NHAN_VIEN(MaNhanVien),
MaLoaiGiaoDich varchar(10) REFERENCES LOAI_GIAO_DICH(MaLoaiGiaoDich), NgayPhatSinhGiaoDich date,
DaThanhToan bit DEFAULT 0 -- Có một số giao dịch sẽ tự động phát sinh khi đến
thời hạn(lãi), giao dịch sẽ được đánh dấu đã thanh toán khi khách hàng đến giao dịch )
Bảng Hình thức gửi CREATE TABLE HINH_THUC_GUI (
MaHinhThucGui varchar(10) primary key,
TenHinhThucGui nvarchar(30) not null, HanMucGui money --VND )
Bảng Hình thức trả lãi
CREATE TABLE HINH_THUC_TRA_LAI (
MaHinhThucTraLai varchar(10) primary key,
TenHinhThucTraLai nvarchar(50), )
Bảng Khách hàng CREATE TABLE KHACH_HANG (
MaKhachHang varchar(10) primary key, HoTen nvarchar(30) not null,
NgaySinh date check (DATEDIFF(year, NgaySinh, GETDATE())>=15),
SDT varchar(11) not null check(len(SDT)=10),
MaDinhDanh varchar(15) UNIQUE check (len(MaDinhDanh)=9 or len(MaDinhDanh)=12),
NgayCap date, check (DATEDIFF(year,NgaySinh,NgayCap)>=14), NoiCap nvarchar(100), DiaChi nvarchar(100), DangSuDung bit DEFAULT 1, |Nhóm 03
ChuKy VARBINARY (max) – hình ảnh chữ ký của khách hàng )
Bảng Loại giao dịch CREATE TABLE LOAI_GIAO_DICH (
MaLoaiGiaoDich varchar(10) primary key,
TenLoaiGiaoDich nvarchar(30) not null, LienQuanSoDu bit )
Bảng Loại tiền CREATE TABLE LOAI_TIEN (
MaLoaiTien varchar(10) primary key,
LoaiTien nvarchar(15) not null, TiGiaVND money )
Bảng Loại tiết kiệm
CREATE TABLE LOAI_TIET_KIEM (
MaLoaiTietKiem varchar(10) primary key,
MaHinhThucGui varchar(10) references HINH_THUC_GUI(MaHinhThucGui),
MaHinhThucTraLai varchar(10) references HINH_THUC_TRA_LAI(MaHinhThucTraLai),
KyHan int check(KyHan>=0 and KyHan<=36),
LaiSuat float check (LaiSuat>0) )
Bảng Nhân viên CREATE TABLE NHAN_VIEN ( MaNhanVien varchar(10) , HoTen nvarchar(30)not null, NgaySinh date not null,
MaDinhDanh varchar(15) check (len(MaDinhDanh)=9 or len(MaDinhDanh)=12),
SDT varchar(11) check (len(SDT)=10), primary key (MaNhanVien),
MaChiNhanh varchar(10) references CHI_NHANH(MaChiNhanh) ON UPDATE CASCADE,
TinhTrangLamViec bit DEFAULT 1 )
Bảng Nhóm người dùng CREATE TABLE NHOM_NGUOI_DUNG ( MaNhomNguoiDung varchar(10), TenNhom nvarchar(30), TenRole varchar(20), primary key (MaNhomNguoiDung) ) |Nhóm 03
Bảng Phân nhóm CREATE TABLE PHAN_NHOM (
MaNhanVien varchar(10) primary key references NHAN_VIEN (MaNhanVien),
MaNhomNguoiDung varchar(10) references NHOM_NGUOI_DUNG (MaNhomNguoiDung) ON DELETE SET NULL )
Bảng Số dư tài khoản CREATE TABLE SO_DU_TAI_KHOAN ( MaSoDu varchar(10),
MaSoTK varchar(15) REFERENCES TAI_KHOAN_TIET_KIEM(MaSoTK), NgayGhiNhanSoDu date, SoDu money, PRIMARY KEY(MaSoDu, MaSoTK), )
Bảng Sở hữu CREATE TABLE SO_HUU (
MaSoTK varchar(15) REFERENCES TAI_KHOAN_TIET_KIEM(MaSoTK),
MaKhachHang varchar(10) references KHACH_HANG(MaKhachHang),
PRIMARY KEY (MaSoTK, MaKhachHang) )
Bảng Tài khoản tiết kiệm
CREATE TABLE TAI_KHOAN_TIET_KIEM (
MaSoTK varchar(15) PRIMARY KEY, NgayMoSo date,
NgayDenHan date, -- Ngày Đến Hạn của sổ là ngày cuối sổ được tính lãi (Ngày
Khách hàng được rút tiền gốc và đúng lãi)
NgayTatToan date, -- Ngày khách hàng đến rút tất cả tiền lãi lần tiền gốc
MaChiNhanh varchar(10) references CHI_NHANH(MaChiNhanh), --Mã chi nhánh mở sổ
MaLoaiTien varchar(10) references LOAI_TIEN(MaLoaiTien), -- Mã loại tiền gửi
MaLoaiTietKiem varchar(10) references LOAI_TIET_KIEM(MaLoaiTietKiem), --Mã loại tiết kiệm
NgayLaiNhapGoc date, -- Nếu trường hợp khách hàng không tất toán sổ sau ngày
đến hạn thì tự động gia hạn sổ với tiền gốc mới = gốc cũ + lãi, loại tiết kiệm giữ nguyên.
KyTraLai int, -- Nếu trường hợp khách hàng chọn trả lãi đinh kỳ thì cần qui
định thêm kỳ trả lãi (< kỳ hạn)
HanGuiGop int, -- Nếu trường hợp khách hàng chọn gửi góp thì cần qui định
thêm hạn gửi định kỳ (< kỳ hạn)
TinhTrangSuDung bit DEFAULT 1,
NgayGuiGopTiepTheo date, -- Ngày gửi góp tiếp theo nếu gửi góp
NgayNhanLaiDinhKyTiepTheo date, -- Ngày nhận lãi định kỳ tiếp theo nếu gửi lấy lãi định kỳ. ) |Nhóm 03
Ràng buộc mã khách hàng khi thêm khách hàng
-- Đặt ràng buộc mã khách hàng được tạo tự động. USE QUANLYTAIKHOANTIETKIEM CREATE TABLE KHACH_HANG
ADD CONSTRAINT AUTO_IDKHACHHANG
DEFAULT DBO.AUTO_IDCustomer() FOR MaKhachHang; GO
Ràng buộc mã sổ khi thêm sổ
-- Đặt ràng buộc mã sổ được tạo tự động. USE QUANLYTAIKHOANTIETKIEM
CREATE TABLE TAI_KHOAN_TIET_KIEM ADD CONSTRAINT AUTO_IDSTKs
DEFAULT DBO.AUTO_IDSTK() FOR MaSoTK; GO
Trigger kiểm tra và điều chỉnh một số ràng buộc liên quan đến loại tiết kiệm của sổ
-- Trigger kiểm tra và điều chỉnh một số ràng buộc liên quan đến loại tiết kiệm của sổ
CREATE TRIGGER Them_LTK ON LOAI_TIET_KIEM AFTER INSERT AS
DECLARE @maLoaiTK varchar(10), @maHinhthucgui varchar(10), @maHinhthuctralai varchar(10), @kyHan int
SELECT @maLoaiTK=nl.MaLoaiTietKiem, @maHinhthucgui=nl.MaHinhThucGui,
@maHinhthuctralai=nl.MaHinhThucTraLai, @kyHan=nl.KyHan FROM inserted nl BEGIN if @maHinhthucgui='HTG_G' BEGIN
--Với hình thức gửi góp thì hình thức trả lãi mặc định là trả sau và kỳ hạn phải trên 6 tháng
UPDATE LOAI_TIET_KIEM SET MaHinhThucTraLai='HTTL_S' WHERE MaLoaiTietKiem=@maLoaiTK; i f @kyHan<6
UPDATE LOAI_TIET_KIEM SET KyHan=6 WHERE MaLoaiTietKiem=@maLoaiTK; END if @kyHan=0
-- Nếu kỳ hạn là 0 thì đây là hình thức gửi không kỳ hạn
UPDATE LOAI_TIET_KIEM SET MaHinhThucTraLai='HTTL_S' WHERE MaLoaiTietKiem=@maLoaiTK; END GO
Trigger khi xóa nhân viên thì sẽ đánh dấu nhân viên nghỉ và xóa tài khoản đăng
nhập của người đó khỏi hệ thống
-- Trigger khi xóa nhân viên thì sẽ đánh dấu nhân viên nghỉ và xóa tài khoản đăng nhập của người đó khỏi hệ thống
CREATE TRIGGER XoaNhanVien ON NHAN_VIEN INSTEAD OF DELETE AS DECLARE @maNV varchar(10) SELECT @maNV=ol.MaNhanVien FROM deleted ol SET XACT_ABORT ON BEGIN TRAN BEGIN TRY
-- Cập nhật tình trạng tình việc của nhân viên là đã nghỉ UPDATE NHAN_VIEN SE
T TinhTrangLamViec=0 WHERE MaNhanVien=@maNV; DECLARE @tenUser varchar(15) ; |Nhóm 03
SELECT @tenUser=TenDangNhap FROM DANG_NHAP WHERE MaNhanVien=@maNV
-- Xóa user của nhân viên DECLARE @sql varchar(100) SE
T @sql = 'DROP USER '+ @tenUser exe c @sql
-- Xóa nhân viên khỏi phân nhóm
DELETE FROM PHAN_NHOM WHERE MaNhanVien=@maNV;
-- Xóa tài khoản login của nhân viên khỏi server SE
T @sql = 'DROP LOGIN '+ @tenUser exe c @sql
-- Xóa tài khoản đăng nhập của nhân viên khỏi bảng Đăng nhập
DELETE FROM DANG_NHAP WHERE MaNhanVien=@maNV; COMMIT TRAN END TRY BEGIN CATCH ROLLBACK END CATCH GO
Trigger tạo một user trên SQL khi thêm một nhân viên
CREATE TRIGGER CreateSQLAccount ON DANG_NHAP AFTER INSERT AS
DECLARE @userName nvarchar(30), @passWord nvarchar(10)
SELECT @userName=nl.TenDangNhap, @passWord=n . l MatKhau FROM inserted nl BEGIN
DECLARE @sqlString nvarchar(2000)
-- Tạo tài khoản login cho nhân viên, tên người dùng và mật khẩu là tài khoản được tạo trên bảng Đăng nhập
SET @sqlString= 'CREATE LOGIN [' + @userName +'] WITH PASSWORD='''+ @passWord +''',
DEFAULT_DATABASE=[QUANLYTAIKHOANTIETKIEM], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF' EXEC (@sqlString)
-- Tạo tài khoản người dùng đối với nhân viên đó trên database (tên người dùng trùng với tên login)
SET @sqlString= 'CREATE USER ' + @userName +' FOR LOGIN '+ @userName EXEC (@sqlString) END GO
Trigger kiểm tra và điều chỉnh một số ràng buộc liên quan đến loại tiết kiệm của sổ
CREATE TRIGGER Them_LTK ON LOAI_TIET_KIEM AFTER INSERT AS
DECLARE @maLoaiTK varchar(10), @maHinhthucgui varchar(10), @maHinhthuctralai varchar(10), @kyHan int
SELECT @maLoaiTK=nl.MaLoaiTietKiem, @maHinhthucgui=nl.MaHinhThucGui,
@maHinhthuctralai=nl.MaHinhThucTraLai, @kyHan=nl.KyHan FROM inserted nl BEGIN if @maHinhthucgui='HTG_G' BEGIN
--Với hình thức gửi góp thì hình thức trả lãi mặc định là trả sau và kỳ hạn phải trên 6 tháng
UPDATE LOAI_TIET_KIEM SET MaHinhThucTraLai='HTTL_S' WHERE MaLoaiTietKiem=@maLoaiTK; i f @kyHan<6
UPDATE LOAI_TIET_KIEM SET KyHan=6 WHERE MaLoaiTietKiem=@maLoaiTK; END if @kyHan=0
-- Nếu kỳ hạn là 0 thì đây là hình thức gửi không kỳ hạn
UPDATE LOAI_TIET_KIEM SET MaHinhThucTraLai='HTTL_S' WHERE MaLoaiTietKiem=@maLoaiTK; END GO
Trigger Kiểm tra các thông tin về sổ tiết kiệm trước khi thêm một sổ mới.
CREATE TRIGGER THEM_TAI_KHOAN_TIET_KIEM O N TAI_KHOAN_TIET_KIEM |Nhóm 03 AFTER INSERT AS
DECLARE @maTK varchar(15), @maLoaiTK varchar(10)
, @kyTralai int, @hanGuigop int, @kyHanso in t
SELECT @maTK=nl.MaSoTK, @maLoaiTK=nl.MaLoaiTietKiem, @kyTralai=nl.KyTraLai, @hanGuigop=nl.HanGuiGop FROM inserted nl BEGIN BEGIN TRA N BEGIN TR Y DECLAR
E @kyHan int, @maHinhthuctralai varchar(10) , @maHinhthucgui varchar(10) ; SE T @kyHan= (SELECT KyHan fro m LOAI_TIET_KIEM wher e MaLoaiTietKiem=@maLoaiTK); UPDAT E TAI_KHOAN_TIET_KIEM SE
T NgayLaiNhapGoc=NgayMoSo where MaSoTK=@maTK; i f @kyHan=0 UPDATE TAI_KHOAN_TIET_KIEM SE
T NgayDenHan=null, NgayTatToan=null, KyTraLai=null,
HanGuiGop=null where MaSoTK=@maTK; els e
-- Đối với sổ có kỳ hạn BEGI N
-- Tính ngày đến hạn của sổ UPDATE TAI_KHOAN_TIET_KIEM SE
T NgayDenHan=DATEADD(day, 30*@kyHan, NgayMoSo) where MaSoTK=@maTK;
SET @maHinhthuctralai= (SELECT MaHinhThucTraLai fro m LOAI_TIET_KIEM WHERE MaLoaiTietKiem=@maLoaiTK);
SET @maHinhthucgui= (SELECT MaHinhThucGui from LOAI_TIET_KIEM WHER E MaLoaiTietKiem=@maLoaiTK); if @maHinhthucgui='HTG_1L' BEGIN
-- Đối với gửi lãi trả trước hoặc trả sau:
if (@maHinhthuctralai='HTTL_S') OR (@maHinhthuctralai='HTTL_T') UPDATE TAI_KHOAN_TIET_KIEM SE T KyTraLai=@kyHan wher e MaSoTK=@maTK; else
-- Đối với trả lãi định kỳ
if (@kyTralai>@kyHan) or (@kyHan % @kyTralai !=0) or (@kyTralai=null ) UPDATE TAI_KHOAN_TIET_KIEM SE
T KyTraLai=1 where MaSoTK=@maTK;
-- Tính ngày lấy lãi đầu tiên của sổ tiết kiệm định kỳ UPDATE TAI_KHOAN_TIET_KIEM SE
T NgayNhanLaiDinhKyTiepTheo=DATEADD(da , y 30*@kyTralai, NgayMoSo)
, NgayGuiGopTiepTheo=null wher e MaSoTK=@maTK; END else BEGIN
if (@hanGuigop>@kyHan) or (@kyHan % @hanGuigop !=0) or (@hanGuigop=null) UPDATE TAI_KHOAN_TIET_KIEM SE T HanGuiGop=1 where MaSoTK=@maTK;
-- Tính ngày gửi góp tiếp theo của sổ gửi góp UPDATE TAI_KHOAN_TIET_KIEM SE
T NgayGuiGopTiepTheo=DATEADD(day, 30*@hanGuigop,
NgayMoSo), NgayNhanLaiDinhKyTiepTheo=null where MaSoTK=@maT ; K END EN D COMMI T TRAN EN D TR Y BEGI N CATCH ROLLBACK EN D CATC H END GO
Trigger Kiểm tra khi một sổ tiết kiệm đã tất toán (đóng sổ) thì sẽ đóng tình trạng sử
dụng của chủ sổ (nếu chỉ có 1 sổ)
CREATE TRIGGER DongSo ON TAI_KHOAN_TIET_KIEM AFTER UPDATE AS
DECLARE @maSo varchar(15), @trangThai bit
SELECT @maSo=nl.MaSoTK, @trangThai=n . l TinhTrangSuDung FROM inserted nl BEGIN
DECLARE @num_Chu int, @index int=1, @TEMP varchar(10) ; if (@trangThai=0) BEGIN DECLARE @chuMaso TABLE (Id in
t not null primary key identity(1,1), ChuSo varchar(10) , SoSo int) ;
INSERT INTO @chuMaso (ChuSo, SoSo) SELECT * FROM LAY_CHU_SO(@maSo) WHERE SoLuongSo=1; SE T @num_Chu = @@ROWCOUNT;
WHILE @index<=@num_Chu -- Countdown BEGIN
SELECT @TEMP= ChuSo FROM @chuMaso WHERE Id=@index; UPDATE KHACH_HANG SE
T DangSuDung=0 WHERE MaKhachHang=@TEMP; SET @index = @index + 1; EN D END |Nhóm 03