DM Report
DM Report
A Bank Management System is a software platform that helps manage the day-to-day operations of
a bank or financial institution efficiently. This system centralizes key banking processes such as
customer account management, transaction processing, loan management, financial record keeping,
and reporting. It provides a secure and reliable environment for handling a large volume of data and
transactions, ensuring compliance with regulatory requirements.
The main objective of a Bank Management System is to streamline operations, reduce manual
efforts, enhance customer experience, and maintain the security of sensitive financial data.
2.Enlist Requirements for Bank Management System
2. Transaction Management
3. Loan Management
- Multi-factor authentication.
These requirements ensure efficient operations, customer satisfaction, security, and regulatory
compliance for the bank.
3.ER-DIAGRAM OF BANK MANAGEMENT SYSTEM
4. Normalization of database bank management system
Normalization is the process of organizing a database to reduce redundancy and improve data
integrity. For a Bank Management System , we would follow the standard normalization steps to
ensure efficiency and consistency in data storage and relationships.
Here’s the normalization of the Bank Management System database through the different normal
forms (1NF, 2NF, 3NF):
---
In 1NF , we ensure that each table has a unique identifier (Primary Key), and each column contains
atomic values (no repeating groups or arrays).
Tables in 1NF:
Customer Table
- Customer_ID (PK)
- Name
- Address
- Contact_Number
- Date_of_Birth
- KYC_Status
---
2nd Normal Form (2NF)
In 2NF , we remove partial dependencies, i.e., all non-key attributes must depend on the entire
primary key (if the table has a composite primary key). Also, any attributes that do not depend on
the primary key are moved to a separate table.
- For all tables, their primary keys are single-column, so we check if any attributes depend only on
part of the primary key.
- Transaction Table :
All attributes (Date, Amount, Transaction_Type) depend only on the `Transaction_ID`, so no changes
are needed.
- Account Table :
---
In 3NF , we remove transitive dependencies, where non-key attributes are dependent on other
non-key attributes. All non-key attributes must depend only on the primary key.
- Account_Number (PK)
- Account_Type
- Balance
- Interest_Rate
- Customer_ID (FK)
4. Loan ↔ Loan Repayment : One-to-Many (One loan can have multiple repayments).
5. Customer ↔ Card : One-to-Many (One customer can have multiple debit/credit cards).
8. Transaction ↔ Audit : One-to-One (One transaction can be linked to one audit record).
---
5. Scenarious and how data fetched queries
In a Bank Management System , different scenarios arise when managing customer accounts, transactions, loans, and other
bank-related activities. Here are some common scenarios and the corresponding SQL queries to fetch data from the
normalized database:
---
A bank employee wants to fetch the details of a specific customer using their Customer ID.
Query :
```sql
SELECT
FROM Customer
```
---
Query :
```sql
FROM Account
```
A customer wants to view the transaction history of their specific bank account.
Query :
```sql
FROM Transaction
WHERE Account_Number = 'ACC12345'
```
---
A bank employee wants to see all active loans for a customer, including the type and remaining amount.
Query :
```sql
FROM Loan
```
---
Query :
```sql
FROM Loan_Repayment
```
---
In a Bank Management System , relational algebra queries are used to perform operations on
relational databases. Here are some relational algebra queries based on different scenarios:
Schema:
---
Scenario: Retrieve the details of all accounts belonging to a customer with `Customer_ID = 'C001'`.
```
```
- Explanation:
---
2. Fetch Transaction History for an Account
Scenario: Retrieve the transaction history for the account with `Account_Number = 'A12345'`.
```
```
- Explanation:
- `σ(Account_Number = 'A12345') (Transaction)` filters the transactions for the specific account.
---
Scenario: Fetch all active loans for the customer with `Customer_ID = 'C001'` (loans where
`End_Date > current_date`).
```
```
- Explanation:
- `σ(Customer_ID = 'C001' ∧ End_Date > current_date) (Loan)` selects loans of the customer that are
still active.
```
```
- Explanation:
- `Account ⨝ Customer` is a natural join between the `Account` and `Customer` tables based on
`Customer_ID`.
- `σ(Balance < 500)` filters accounts with a balance less than 500.
---
Scenario: Retrieve the repayment history for the loan with `Loan_ID = 'L12345'`.
```
```
- Explanation:
- `σ(Loan_ID = 'L12345') (Loan_Repayment)` selects repayment records for the specified loan.
7. References:
• https://www.coursera.org/
• https://www.researchgate.net/
• https://stackoverflow.com/