- Các cu hình Client/Serve rấ
3.2.3 Phân tích về mặt cơ sở dữ liệu
Phân tích cơ sở dữ liệu của khách hàng và của ngân hàng
* Cơ sở dữ liệu của khách hàng
Một khách hàng khi mở một tài khoản tại một Ngân hàng nào đó sẽ được gán một số Tài khoản xác định duy nhất kèm theo một mã Password hay một số nhận dạng cá nhân PIN (Private Identification Number) mà chỉ duy nhất có người đó biết, và ứng với số tài khoản đó là một số tiền xác định (lớn hơn hoặc bằng một số tiền tối thiểu mà ngân hàng yêu cầu để có thể mở tài khoản ) do người đó gửi vào. Ngoài ra Ngân hàng sẽ phải lưu trữ các thông tin về khách hàng của mình như Tên, Ngày sinh, Số chứng minh nhân dân (CMND), Địa chỉ…. Từ những thông tin này, ta có thể đưa ra các bảng cơ sở dữ liệu lưu trữ các thông tin về khách hàng gồm có ba bảng như sau:
- Bảng Account:
Bảng này gồm có 4 trường:
+ Trường Account: Lưu giữ số tài khoản của khách hàng, đây là một trường có dạng số 10 chữ số. Giá trị của trường là duy nhất trong bảng, nó đóng vai trò là khoá chính.
+ Trường Password: Lưu giữ mật mã thâm nhập tài khoản của khách hàng, một
tài khoản sẽ có duy nhất một mã Password tại một thời điểm, ban đầu khi cấp số tài khoản cho khách hàng, tất cả các Password đều có một giá trị mặc định giống nhau, sau đó khách hàng có thể thay đổi giá trị này thành mã riêng của mình. Trường này cũng có dạng số có 5 chữ số.
+ Trường Balance: Trường này lưu giữ số tiền hiện có trong tài khoản của khách hàng, trường này là phụ thuộc hàm của trường Account hay một tài khoản tại một thời điểm chỉ có một giá trị tiền dư xác định. Đây cũng là môt trường có giá trị kiểu số.
+ Trường Allowed: Trong nhiều trường hợp, nhiều điều kiện lí do khác nhau, Ngân hàng có thể cho phép hoặc không cho phép rút tiền ra khỏi một tài khoản nào đó, ví dụ như trường hợp khách hàng phát hiện mình bị lộ mật khẩu, khách hàng sẽ báo cho Ngân hàng tạm ngưng việc cho phép rút tiền ra khỏi tài khoản của mình và có thể thay
đổi mật khẩu, hoặc trong trường hợp một tài khoản nào đó có liên quan tới một tổ chức hay cá nhân nào đó đang bị tình nghi cần bị phong toả hay khoá lại…. Do vậy chương trình cần phải có khả năng cho phép một tài khoản được phép rút tiền hay không. Điều này được thực hiện bằng cách bổ sung thêm một trường Allowed có dạng Boolean vào bảng. Giá trị True hay 1 tương ứng với việc cho phép còn giá trị False hay 0 tương ứng với việc không cho phép.
- Bảng UserInformation:
Bảng này lưu trữ thông tin về khách hàng ứng với một giá trị tài khoản xác định. Nó bao gồm các trường sau đây:
+ Trường Account: Là khoá chính của bảng, nó xác định một khách hàng ứng với số tài khoản duy nhất có trong bảng Account ở trên.
+ Trường Name: Lưu trữ tên khách hàng ứng với số tài khoản đó. Trường này có dạng là một chuỗi Text có chiều dài 30 ký tự.
+ Trường Identification: Lưu giữ số CMND của khách hàng ứng với số tài khoản đó.
+ Trường Address: Lưu giữ địa chỉ của khách hàng. + Trường Tel: Lưu giữ số điện thoại của khách hàng. + Trường Fax : Lưu giữ số Fax của khách hàng. - Bảng Transaction:
Bảng này lưu trữ thông tin về các lần chuyển khoản giữa các tài khoản với nhau nhằm để giám sát và làm rõ ràng việc chuyển tiền từ tài khoản này sang tài khoản khác để cung cấp cho khách hàng khi họ yêu cầu cũng như làm căn cứ pháp lý nếu cần thiết. Bảng này bao gồm có 4 trường như sau:
+ Trường ID: Lưu giữ số thứ tự của các lần chuyển tiền giữa các tài khoản. + Trường Date: Lưu giữ thông tin về thời điểm thực hiện việc chuyển khoản.
+ Trường SourceAccount: Lưu giữ thông tin về số tài khoản nguồn của việc
chuyển khoản, tức là tài khoản xuất cho việc chuyển khoản này.
+ Trường DestAccount: Lưu giữ thông tin về số tài khoản đích của việc chuyển khoản, tức là tài khoản mà tiền được nhập vào.
+ Trường Amount: Lưu giữ thông tin về số tiền được chuyển trong lần chuyển
Sau đây là mối quan hệ giữa các bảng dữ liệu luu trữ thông tin người dùng. Thông tin của khách hàng là thông tin quan trọng nhất của hệ thống chính vì vậy mà nó cần được bảo vệ và đảm bảo độ chính xác an toàn cao. Mọi sai sót về thông tin của khách hàng đều gây ra mất uy tín của ngân hàng nên dữ liệu của khách hàng là ưu tiên số một trong cơ chế bảo mật cho cơ sở dữ liệu của hệ thống.
ID Date SoureAccount DestAccount Amount transaction Account Password Blance Allowed account Account Password Blance Allowed account ID Date SoureAccount DestAccount Amount user
Hình 3.9. Mô tả mối quan hệ của các bảng dữ liệu người dùng * Cơ sở dữ liệu của ngân hàng
Phần cơ sở dữ liệu này cung cấp các thông tin về các dịch vụ của Ngân hàng đối với khách hàng như thông tin về tỉ giá ngoại tệ, lãi suất tiền gửi, lãi suất tiền cho vay…. Phần dữ liệu này gồm có các bảng như sau:
- Bảng Exchange: Lưu giữ thông tin về tỉ giá trao đổi ngoại tệ so với đồng Việt Nam. Nó bao gồm các trường như sau:
+ Trường ForeignCurrency: Lưu giữ tên của đồng ngoại tệ.
+ Trường VND: Lưu giữ giá quy đổi của một đồng ngoại tệ sang đồng Việt Nam. - Bảng VNDDeposit: Lưu giữ các thông tin về lãi suất tiền gửi cho loại tiền Việt Nam ứng với các kỳ hạn khác nhau. Nó bao gồm có các trường như sau:
+ Trường ID: Đánh số các loại kỳ hạn.
+ Trường Term: Xác định loại kỳ hạn tiền gửi.
+ Trường AdvancedPayInterest: Lưu giữ thông tin về lãi suất tiền gửi loại trả trước ứng với các loại kỳ hạn xác định cho đồng Việt Nam.
+ Trường MonthlyInterest: Lưu giữ thông tin về lãi suất tiền gửi loại trả theo quý ứng với các loại kỳ hạn xác định cho đồng Việt Nam.
+ Trường OnceInterest: Lưu giữ thông tin về lãi suất tiền gửi loại trả một lần ứng với các loại kỳ hạn xác định cho đồng Việt Nam.
- Bảng ForeignDeposit: Lưu giữ các thông tin về lãi suất tiền gửi cho loại tiền ngoại tệ như đô la Mỹ, đồng Ero hoặc vàng mà ngân hàng hỗ trợ ứng với các kỳ hạn khác nhau. Nó bao gồm có các trường như sau:
+ Trường Name : lưu trữ tên các loại tiền được gửi + Trường ID: Đánh số các loại kỳ hạn.
+ Trường Term: Xác định loại kỳ hạn tiền gửi.
+ Trường ForVietnamese: Xác định lãi suất tiền gửi cho người Việt Nam ứng với từng loại tiền gửi và từng kỳ hạn.
+ Trường ForForeigner: Xác định lãi suất tiền gửi cho người nước ngoài ứng với từng loại tiền gửi và từng kỳ hạn.
- Bảng Loan: Lưu giữ thông tin về lãi suất tiền cho vay ứng với các kỳ hạn khác nhau. Nó bao gồm các trường như sau:
+ Trường ID: Đánh số các loại kỳ hạn.
+ Trường Term: Lưu giữ thông tin về loại kỳ hạn tiền cho vay.
+ Trường Term: Xác định kỳ hạn cho vay tiền. Giá trị của trường này hiện có hai loại là loại ngắn hạn (dưới 12 tháng) và loại trung hạn (trên 12 tháng).
+ Trường Private: Xác định lãi suất tiền cho cá nhân hay các doanh nghiệp cổ phần, tư nhân vay vốn.
+ Trường State: Xác định lãi suất tiền cho các doanh nghiệp nhà nước vay vốn. + Trường Instalments: Xác định lãi suất tiền cho cá nhân hay các doanh nghiệp theo hình thức trả góp.
- Bảng Directory:
Khi chương trình hoạt động, ngoài những thông tin mà khách hàng có thể truy cập qua tính năng truy cập cơ sở dữ liệu của chương trình một cách hoàn toàn tự động, khách hàng còn có thể quay số máy mở rộng đến một phòng ban hay cá nhân nào đó hoặc có thể được gặp trực tiếp các nhân viên trực để được biết thêm các thông tin yêu cầu thông qua tính năng Trợ giúp tự động của chương trình. Khi khách hàng không biết
số mở rộng thì có thể tra cứu danh bạ điện thoại của Ngân hàng thông qua điện thoại của mình. Do vậy cần phải lưu giữ thông tin về số điện thoại của các phòng ban, các cá nhân và các nhân viên trực trong cơ sở dữ liệu để chương trình có thể truy cập và chuyển tiếp cuộc gọi đến các số máy tương ứng khi có yêu cầu của khách hàng. Ngoài ra, chương trình cũng cần phải lưu trữ các thông tin để quản lý các nhân viên đó. Từ đó ta có một bảng Directory lưu trữ dữ liệu các phòng ban và cá nhân bao gồm các trường như sau:
+ Trường DepartmentID: Lưu giữ mã số phòng ban.
+ Trường DepartmentName: Lưu giữ tên các phòng ban trong Ngân hàng hay tên
cá nhân.
+ Trường Tel: Lưu giữ số điện thoại ứng với phòng ban hay cá nhân đó.
+ Trường PromptPath: mục đích để cho việc lập trình được ngắn gọn, và để cho chương trình có tính linh hoạt, có thể cấu hình lại tên phòng ban ứng với các số điện thoại mở rộng, việc truy xuất cơ sở dữ liệu để tra cứu danh bạ điện thoại được thực hiện bằng cách truy vấn tất cả các bản ghi của bảng Directory sử dụng vòng lặp, do vậy để đọc được tên phòng ban hay cá nhân ứng với số điện thoại nào đó thì cần phải đọc một file âm thanh ghi sẵn tương ứng với tên phòng ban hay cá nhân đó, tập tin này được đọc nhờ vào đường dẫn trỏ tới tập tin được lưu trong trường PromptPath.
- Bảng MBInformation:
Để tăng tính năng của hệ thống, khi có một cuộc gọi được chuyển tiếp đến một máy điện thoại mở rộng nào đó, nếu máy đó không trả lời thì hệ thống phải có khả năng cho phép người dùng để lại lời nhắn, ví dụ như trong trường hợp khẩn cấp khi bị lộ mật mã, khách hàng cần thông báo gấp để nhân viên trực có thể khoá tài khoản của khách hàng đó lại…. Do vậy ứng với mỗi số điện thoại sẽ có một mã số hộp thư thoại kèm theo Password của hộp thư đó. Người chủ hộp thư có thể đăng nhập từ xa vào hộp thư của mình để kiểm tra tin nhắn. Việc tách riêng bảng MBInformation và bảng
Directory là bởi lí do không phải tất cả các số máy mở rộng đều có hộp thư thoại, mà điều này tuỳ thuộc vào người quản trị hệ thống cấp quyền sử dụng chức năng hộp thư thoại cho các số máy mở rộng theo yêu cầu của từng Ngân hàng. Ta có bảng
MBInformation với các trường như sau:
+ Trường MailboxID: Lưu giữ mã số duy nhất của hộp thư thoại ứng với một số máy mở rộng xác định.
+ Trường Password: Mật khẩu để thâm nhập vào hộp thư thoại ứng với mã số
+ Trường ExtNumber: Lưu giữ số máy mở rộng tương ứng với hộp thư.
+ Trường TimeLimit: Trường này lưu giữ khoảng thời gian tối đa cho phép ghi một tin nhắn của khách hàng. Giá trị này có thể được cấu hình bởi người chủ hòm thư.
+ Trường CurrentSize: Để đảm bảo cho bộ nhớ của hệ thống không bị quá tải do lưu giữ quá nhiều tin nhắn, người quản trị hệ thống phải hạn chế dung lượng cho phép của mỗi hòm thư thông qua thông số SizeLimit. Trường CurrentSize lưu giữ dung lượng hiện tại của hộp thư để so sánh với thông số này, để khi dung lượng của hộp thư này đạt tới giá trị SizeLimit thì không cho phép người dùng để lại tin nhắn nữa, và lúc đó sẽ có thông báo yêu cầu người chủ hòm thư giải phóng tin nhắn của mình.
+ Trường NumOfMsg: Lưu giữ số lượng tin nhắn hiện có trong hộp thư, để thông báo khi người chủ hòm thư thực hiện việc kiểm tra thư.
Cơ sở dữ liệu lưu trữ các dữ liệu hệ thống
* Phân tích:
- Khi mở một tài khoản tại một Ngân hàng nào đó, thông thường Ngân hàng sẽ yêu cầu khách hàng luôn có một số tiền dư nhỏ nhất gọi là tiền duy trì tài khoản.
MinimumBalance xác định trong tài khoản của mình để duy trì tài khoản đó. Giá trị cụ thể của số tiền dư này là khác nhau tuỳ thuộc vào mỗi Ngân hàng và nó cũng có thể thay đổi tuỳ theo từng thời kỳ hoạt động hay chính sách của mỗi Ngân hàng. Ví dụ như trong thời gian ngân hàng cần khuyến khích khách hàng mở tài khoản thì số tiền duy trì tài khoản có thể hạ thấp xuống thậm chí là không cần. Do vậy chương trình phải có khả năng cho phép người điều hành hệ thống có thể cấu hình được thông số này.
- Để đảm bảo an ninh, tránh trường hợp khi một kẻ gian nào đó ăn cắp được mật mã của một tài khoản khách hàng sẽ chuyển hết tiền trong tài khoản của khách hàng đó sang tài khoản của mình, chương trình sẽ chỉ cho phép một tài khoản được rút tiền với số lần lớn nhất xác định MaxNum trong ngày và số tiền lớn nhất MaxAmount có thể rút cho mỗi lần. Tuy nhiên việc định ra một giá trị cụ thể cho các thông số này là một vấn đề khó khăn, nó tuỳ thuộc vào quy mô hoạt động của từng Ngân hàng, giá trị tiền có trong tài khoản của các khách hàng.Việc đặt giá trị của nó quá lớn sẽ gây tổn thất nặng nề cho khách hàng khi có người biết được mật mã của họ, còn nếu đặt giá trị này quá nhỏ sẽ gây khó khăn cho khách hàng khi họ thực sự cần chuyển một số tiền lớn sang một tài khoản của đối tác, khi đó khách hàng có thể đến Ngân hàng để thực hiện việc chuyển tiền như thường lệ. Do vậy chương trình phải cho phép người điều hành có thể thay đổi được các giá trị này tuỳ thuộc vào các chính sách cụ thể của mỗi Ngân hàng. Từ đó ta đưa ra bảng Parameter lưu trữ các thông số hệ thống như sau:
+ Trường MaxNum: Lưu giữ số lần rút tiền lớn nhất cho phép trong một ngày. + Trường MaxAmount: Lưu giữ số tiền tối đa cho phép rút một lần.
+ Trường MinimumBalance: Lưu giữ số tiền dư tối thiểu phải có trong một tài khoản để duy trì tài khoản đó.
+ Trường MsgRecordedDir: Lưu giữ đường dẫn tới thư mục chứa các tin nhắn
ghi được do khách hàng để lại.
+ Trường OGGDir: Lưu giữ đường dẫn tới thư mục chứa các file âm thanh thông báo cho người gọi để để lại lời nhắn khi không gặp được trực tiếp người chủ điện thoại.
+ Trường SizeLimit: Lưu giữ giá trị dung lượng tối đa cho phép đối với các hộp thư.
+ Trường MaxDuration: Lưu giữ thời gian tối đa cho phép lưu giữ một tin nhắn, nếu sau khoảng thời gian này mà người chủ hòm thư không xoá thì hệ thống sẽ tự động quét và xoá tin nhắn này.
+ Trường MaxNumOfMsg: Lưu giữ số tin nhắn tối đa cho phép của một hộp thư.
* Các yêu cầu với cơ sở dữ liệu của hệ thống
Cơ sở dữ liệu của hệ thống bao gồm cả cơ sở dữ liệu của khách hàng, của ngân hàng, và các dữ liệu lưu trữ. Các dữ liệu này là thông tin về tài khoản của khách hàng, thông tin về dịch vụ của ngân hàng, các thông số lưu trữ của hệ thống. Vì vậy cơ sở dữ liệu của hệ thống phải đảm bảo :
+ Tính bảo mật cao: Ngân hàng luôn liên quan đến các vấn đề tài chính do vậy nếu các thông tin bị lộ thì nó có thể gây thiệt hại lớn cho khách hàng và ảnh hưởng đến vấn đề uy tín của ngân hàng, khả năng kinh doanh của ngân hàng. Chính vì vậy mà vấn đề bảo mật là yếu tố hàng đầu được quan tâm đến trong cơ sở dữ liệu của hệ thống đặc biệt là cơ sở dữ liệu của khách hàng.
+ Khả năng cập nhật dữ liệu : các thông tin về tỷ giá lãi suất, cùng một số vấn đề