Перейти до основного вмісту

Data Model: Logical Schema

This document defines the logical data model for the Bus Ticket Booking System, including ER diagrams and schemas.


1. Entity Relationship Diagram

[User] 1—* [Booking] *—1 [Route]
1 1
| |
1 *
[Payment] [Seat]

2. Table Definitions

users

ColumnTypeConstraints
idUUIDPK
emailVARCHAR(255)UNIQUE, NOT NULL
passwordVARCHAR(255)NOT NULL
roleVARCHAR(50)DEFAULT 'USER'
created_atTIMESTAMPTZDEFAULT now()

routes

ColumnTypeConstraints
idUUIDPK
originVARCHAR(100)NOT NULL
destinationVARCHAR(100)NOT NULL
departureTIMESTAMPTZNOT NULL
arrivalTIMESTAMPTZNOT NULL

seats

ColumnTypeConstraints
idUUIDPK
route_idUUIDFK → routes(id), NOT NULL
numberVARCHAR(10)NOT NULL
lockedBOOLEANDEFAULT false

bookings

ColumnTypeConstraints
idUUIDPK
user_idUUIDFK → users(id), NOT NULL
route_idUUIDFK → routes(id), NOT NULL
seat_idUUIDFK → seats(id), NOT NULL
stateVARCHAR(20)CHECK (state IN (...)), NOT NULL, DEFAULT 'PENDING'
created_atTIMESTAMPTZDEFAULT now()

payments

ColumnTypeConstraints
idUUIDPK
booking_idUUIDFK → bookings(id), NOT NULL
amountNUMERIC(10,2)NOT NULL
statusVARCHAR(20)CHECK (status IN (...)), NOT NULL, DEFAULT 'PENDING'
gateway_idVARCHAR(255)External payment reference
created_atTIMESTAMPTZDEFAULT now()

  • Document Version: 1.0
  • Date: 2025-06-23
  • Author: ArturChernets