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!
Môn: Hệ quản trị cơ sở dữ liệu (DBMS330284)
Trường: Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
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