An end-to-end academic project pairing a 9-entity Entity-Relationship design for a retail bank with a working WPF desktop client on MySQL. The schema is modeled in two clusters — Customer Data (country, city, address, customer) and Branch (employee, store, account, payment, loan) — then implemented as operational tables (LoginInformation, clientinfo, Depositor, AllTransaction) driving a 24-window WPF application with role-based dashboards for Admin, Employee, and User.
The project takes a retail-banking scenario through the full database design lifecycle — requirements gathering, ER modeling, normalization, SQL DDL, and finally a desktop client that exercises the schema with real CRUD flows. The emphasis is on the design itself being complete and traceable, not just the front-end working.
The ER design is organized into two clusters. Customer Data (country → city → address → customer) captures who the bank's customers are and where they live; Branch (employee, store, account, payment, loan) captures the bank's internal operations. The two clusters connect through customer → account and employee/store relationships.
The WPF client implements the design with a simplified operational schema —
LoginInformation, clientinfo, Depositor,
currentaccount, and AllTransaction — accessed via
MySql.Data with direct ADO-style commands. Every form maps to a
real banking action: opening an account, choosing an account type
(savings / current / fixed), depositing, withdrawing, transferring, applying for a
loan, and reviewing the full transaction history.
Login routes by the Role column in LoginInformation:
Admin opens the admin dashboard with full CRUD plus
AdminShowAll reporting; Employee and User
get scoped dashboards tailored to their day-to-day tasks. The result is a small but
coherent design → code → UI walkthrough that demonstrates how a normalized
schema becomes a working application.
The project moves through the six classical stages of database design and then a full client implementation: requirements → ER model → normalized tables → SQL DDL → MySQL operational schema → WPF client. Each stage produces a concrete artifact in the repository (ER diagrams, schema reports, .mdf snapshots, XAML windows, C# data code).
country, city, address, customer. Branch cluster — Employee, store, Account, payment, Loan. Relationships and cardinalities are diagrammed (orange + green ER diagram in the repo).customer_id, staff_id, store_id, loan_id, …) and foreign keys to its neighbours (address.city_id, customer.address_id, payment.customer_id). Indexes are defined for join-heavy paths (idx_fk_store_id, idx_fk_address_id, idx_last_name).MyDataBase.mdf and the SaleCo MS Access database in the repo's Initial DataBase Design folder), with snapshots covering CREATE, INSERT, UPDATE, and a Customer × Account cross-join query.LoginInformation (role-based auth), clientinfo (customer master), Depositor (account balances and types), currentaccount (current-account specifics), and AllTransaction (chronological transaction log) — all served from a local MySQL instance.MySqlConnection / MySqlCommand / MySqlDataReader), with login routing to AdminMainWindow, EmployeMainWindow, or UserMainWindow based on the user's role.Two views of the project's structure rendered with Plotly.js. The first shows the ER schema breakdown — attributes per entity, colored by cluster (orange = Customer Data, green = Branch). The second shows the WPF client breakdown — how the 24 XAML windows distribute across the application's seven functional modules.
ⓘ Attribute counts are taken from the ER diagram included in the repo
(Initial DataBase Design / Database snapshots / Untitled1111.jpg) — a few
entities show "n more" in the diagram, so counts are rounded to the nearest visible
attribute. Window counts are direct file counts from the Bankmanagment/
directory.
.mdf
snapshots, 24 XAML windows, C# data-access code).
Role column from LoginInformation and dispatches
to AdminMainWindow, EmployeMainWindow, or
UserMainWindow, giving each role its own scoped dashboard.
Depositor and appending to
AllTransaction for an auditable history.
MySqlConnection /
MySqlCommand / MySqlDataReader — every form executes
parameterized-style SQL against the local MySQL instance, with results bound
back into WPF controls.
AllTransaction, and the
BalanceEquity and AdminShowAll windows surface that history
for audit and reporting.
| Language | C# · XAML |
| Framework | WPF · .NET Framework 4.0 |
| IDE | Visual Studio |
| Database | MySQL (localhost · MySql.Data ADO) · MS Access & SSMS in design phase |
| Design | 9-entity ER (Customer Data + Branch clusters) · normalization · indexes |
| UI | 24 XAML windows across 7 modules · role-based routing |
| Roles | Admin · Employee · User |
| Auth | Role lookup from LoginInformation |
ER diagrams, schema reports, database snapshots, and the WPF client are all on GitHub.