Rental Property Management System Implementation Approach
RENTAL PROPERTY
MANAGEMENT SYSTEM
Implementation Approach Document
Course Database Management
Systems
Document Type Project Implementation
Plan
Project Type Full-Stack Web
Application
Database Management Systems Project | Page 1 of 13
Rental Property Management System Implementation Approach
1. Introduction
The Rental Property Management System (RPMS) is a full-stack web application built to digitize and
streamline the operations of property owners and tenants. This document outlines the complete
implementation approach — covering technology stack, database design, backend API, frontend
development, and deployment strategy.
This project serves as the DBMS course project, demonstrating real-world application of relational
database concepts such as normalization, foreign key relationships, joins, and transaction
management.
2. Technology Stack
2.1 Recommended Stack (MERN / LAMP options)
Layer Technology Purpose
Frontend HTML, CSS, JavaScript (or User interface and interaction
[Link])
Backend [Link] + [Link] (or PHP) REST API and business logic
Database MySQL / PostgreSQL Data storage and relationships
Authentication JWT Tokens / Sessions Secure login management
Hosting Localhost (XAMPP / WAMP) Development environment
2.2 Why This Stack?
• MySQL is ideal for relational data with foreign keys, joins, and ACID compliance
• [Link]/Express provides lightweight, fast REST API endpoints
• [Link] (or plain HTML+JS) enables dynamic dashboards without page reloads
• JWT ensures stateless, secure authentication for owners and tenants
Database Management Systems Project | Page 2 of 13
Rental Property Management System Implementation Approach
3. Database Design
3.1 Entity-Relationship Summary
The system is built around 5 core tables with clear foreign key relationships:
Table Name Primary Key Foreign Keys Description
Users user_id — Stores all users
(owners and tenants)
Properties property_id owner_id → Users Properties listed by
owners
Tenants tenant_id user_id → Users, property_id → Tenant assignments
Properties to properties
Payments payment_id tenant_id → Tenants Rent payment records
MaintenanceReque request_id tenant_id → Tenants, Maintenance tickets
sts property_id → Properties submitted by tenants
3.2 Table Schemas (DDL)
Users Table
SQL CREATE TABLE Users ( user_id INT PRIMARY KEY AUTO_INCREMENT, name
VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL, role ENUM('owner','tenant') NOT
NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Properties Table
SQL CREATE TABLE Properties ( property_id INT PRIMARY KEY
AUTO_INCREMENT, owner_id INT NOT NULL, title VARCHAR(150), address
TEXT, city VARCHAR(100), rent_amount DECIMAL(10,2), num_rooms INT,
description TEXT, FOREIGN KEY (owner_id) REFERENCES Users(user_id) ON
DELETE CASCADE );
Tenants Table
Database Management Systems Project | Page 3 of 13
Rental Property Management System Implementation Approach
SQL CREATE TABLE Tenants ( tenant_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL, property_id INT NOT NULL, phone VARCHAR(20),
lease_start DATE, lease_end DATE, FOREIGN KEY (user_id) REFERENCES
Users(user_id), FOREIGN KEY (property_id) REFERENCES
Properties(property_id) );
Payments Table
SQL CREATE TABLE Payments ( payment_id INT PRIMARY KEY
AUTO_INCREMENT, tenant_id INT NOT NULL, amount DECIMAL(10,2),
payment_date DATE, status ENUM('Paid','Pending') DEFAULT 'Pending',
FOREIGN KEY (tenant_id) REFERENCES Tenants(tenant_id) );
MaintenanceRequests Table
SQL CREATE TABLE MaintenanceRequests ( request_id INT PRIMARY KEY
AUTO_INCREMENT, tenant_id INT NOT NULL, property_id INT NOT NULL,
description TEXT, status ENUM('Pending','In Progress','Resolved') DEFAULT
'Pending', submitted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES Tenants(tenant_id), FOREIGN KEY
(property_id) REFERENCES Properties(property_id) );
Database Management Systems Project | Page 4 of 13
Rental Property Management System Implementation Approach
4. Backend Implementation
4.1 Project Structure
Folder rpms-backend/ ├── [Link] (entry point) ├── config/ │ └── [Link] (DB
connection) ├── routes/ │ ├── [Link] │ ├── [Link] │ ├── [Link]
│ ├── [Link] │ └── [Link] ├── middleware/ │ └──
[Link] └── [Link]
4.2 API Endpoints
Method Endpoint Access Description
POST /api/auth/register Public Register new user
POST /api/auth/login Public Login and receive JWT token
GET /api/properties Owner Get all properties for logged-in owner
POST /api/properties Owner Add a new property
PUT /api/properties/:id Owner Update property details
DELETE /api/properties/:id Owner Delete a property
GET /api/tenants Owner View tenants for owner's properties
POST /api/tenants Owner Assign a tenant to a property
GET /api/payments Owner/Tenant View payment records
POST /api/payments Owner Record a new rent payment
GET /api/maintenance Owner/Tenant View maintenance requests
POST /api/maintenance Tenant Submit a maintenance request
PUT /api/maintenance/:id Owner Update request status
4.3 Authentication Flow
1. User submits email and password via login form
2. Server queries the Users table to find matching email
3. Hashed password is verified using [Link]()
4. On success, a JWT token is generated with user_id and role as payload
5. Token is returned to the frontend and stored in localStorage
6. All protected routes validate the token using authMiddleware
Database Management Systems Project | Page 5 of 13
Rental Property Management System Implementation Approach
Database Management Systems Project | Page 6 of 13
Rental Property Management System Implementation Approach
5. Frontend Implementation
5.1 Page Structure
Page / Component Route Accessible By
Home / Landing Page / All users
Register Page /register Public
Login Page /login Public
Owner Dashboard /owner/dashboard Owners only
Add / Edit Property /owner/properties Owners only
Tenant Management /owner/tenants Owners only
Payment Tracker /owner/payments Owners only
Tenant Dashboard /tenant/dashboard Tenants only
My Property Info /tenant/property Tenants only
Maintenance Requests /tenant/maintenance Tenants only
5.2 Key UI Features
• Responsive design using CSS Grid / Flexbox or Bootstrap
• Role-based routing: owner and tenant see different dashboards after login
• Dynamic tables for properties, tenants, payments, and maintenance
• Modal forms for adding and editing records without full page reload
• Status badges for payment (Paid/Pending) and maintenance (Pending/In Progress/Resolved)
• Real-time feedback on form submission (success/error messages)
Database Management Systems Project | Page 7 of 13
Rental Property Management System Implementation Approach
6. DBMS Concepts Applied
6.1 Normalization
Normal Form Application in Project
1NF All columns contain atomic values — no repeating groups
2NF No partial dependencies — every non-key attribute depends on the full
primary key
3NF No transitive dependencies — attributes depend only on the primary key,
not on other non-key columns
6.2 Relationships and Joins
• One-to-Many: One Owner has many Properties
• One-to-Many: One Property has many Tenants over time
• One-to-Many: One Tenant has many Payments
• One-to-Many: One Tenant has many MaintenanceRequests
Example JOIN query — Owner viewing all tenants with property info:
SQL Query SELECT t.tenant_id, [Link] AS tenant_name, [Link] AS property, [Link],
t.lease_start, t.lease_end FROM Tenants t JOIN Users u ON t.user_id = u.user_id
JOIN Properties p ON t.property_id = p.property_id WHERE p.owner_id = 5;
6.3 Transactions
Transactions ensure data consistency in critical operations. Example: recording a payment updates
both the Payments table and optionally a ledger balance atomically.
SQL START TRANSACTION; INSERT INTO Payments (tenant_id, amount,
payment_date, status) VALUES (3, 15000.00, CURDATE(), 'Paid'); UPDATE
Tenants SET last_payment_date = CURDATE() WHERE tenant_id = 3; COMMIT;
6.4 Indexes
Database Management Systems Project | Page 8 of 13
Rental Property Management System Implementation Approach
• Index on [Link] — for fast login lookups
• Index on Properties.owner_id — for fast property retrieval per owner
• Index on Payments.tenant_id — for quick payment history queries
Database Management Systems Project | Page 9 of 13
Rental Property Management System Implementation Approach
7. Implementation Phases
Phase Tasks Duration
Phase 1: Planning Requirements gathering, ER diagram, schema design Week 1
Phase 2: Database Create database, define all tables and relationships using Week 2
Setup DDL
Phase 3: Backend Setup Express server, implement all REST API Week 3-4
Development endpoints, authentication
Phase 4: Frontend Build all HTML pages/React components, connect to API, Week 5-6
Development role-based routing
Phase 5: Testing Unit testing, integration testing, edge case handling Week 7
Phase 6: Finalize documentation, prepare presentation, demo Week 8
Documentation & rehearsal
Viva
Database Management Systems Project | Page 10 of 13
Rental Property Management System Implementation Approach
8. Security Considerations
Threat Mitigation Strategy
SQL Injection Use parameterized queries / prepared statements — never
concatenate raw input into SQL
Password Exposure Hash all passwords using bcrypt before storing in the database
Unauthorized Access JWT middleware verifies token on every protected route
Role Bypass Server-side role check on every API endpoint (not just frontend)
Data Leakage Owners can only query data belonging to their own properties
XSS Attacks Sanitize all user input on the frontend before rendering
Database Management Systems Project | Page 11 of 13
Rental Property Management System Implementation Approach
9. Sample Data (for Testing)
9.1 Insert Sample Owner
SQL INSERT INTO Users (name, email, password_hash, role) VALUES ('Ahmed
Khan', 'ahmed@[Link]', '$2b$10$hashedpassword', 'owner');
9.2 Insert Sample Property
SQL INSERT INTO Properties (owner_id, title, address, city, rent_amount,
num_rooms) VALUES (1, 'Sunshine Apartments - Unit 4B', '12 MG Road',
'Hyderabad', 18000.00, 3);
9.3 Insert Sample Payment
SQL INSERT INTO Payments (tenant_id, amount, payment_date, status) VALUES (1,
18000.00, '2025-03-01', 'Paid');
Database Management Systems Project | Page 12 of 13
Rental Property Management System Implementation Approach
10. Summary
The Rental Property Management System demonstrates a complete real-world application of Database
Management Systems concepts. The implementation approach covers:
• Relational database design with normalized tables and foreign key constraints
• Full CRUD operations on all five core entities
• Secure user authentication using JWT and bcrypt
• Role-based access control separating owner and tenant functionality
• Real-world SQL concepts: JOINs, transactions, indexes, and aggregate queries
• REST API backend with clearly defined endpoints
• Responsive frontend with role-based dashboards
This system is a practical demonstration of how DBMS principles translate into a production-grade web
application used for real property management workflows.
Database Management Systems Project | Page 13 of 13