# suchanya-pangam/room-booking-database-design architecture

> Architecture diagram of the GitHub repository suchanya-pangam/room-booking-database-design, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/suchanya-pangam/room-booking-database-design
- Repository: https://github.com/suchanya-pangam/room-booking-database-design

## Overview

DataSci Booking is a PostgreSQL database design for a room-booking system, not a connected web application. Its intended workflow is to record a room request, apply booking and approval rules, track room occupancy, and expose only public availability; a separate equipment-loan workflow tracks returns and reports. The README also documents identity separation, runtime grants, and data-retention maintenance. The graph reflects those documented capabilities, but SQL source was not sampled, so it does not assert undocumented table-level wiring or backend implementation.

Main entry points: [`sql/schema.sql`](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql) (Room booking), [`sql/runtime-grants.sql`](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/runtime-grants.sql) (Runtime grants), [`sql/maintenance.sql`](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/maintenance.sql) (Retention policy)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_booking["Rooms &amp; bookings"]
  node_booking_record["Room booking<br/>[schema.sql]"]
  node_room["Room inventory<br/>[schema.sql]"]
  node_room_closure["Room closures<br/>[schema.sql]"]
  node_approval_rules["Approval rules<br/>[schema.sql]"]
  node_availability["Public availability<br/>[schema.sql]"]
end

subgraph group_equipment["Equipment lifecycle"]
  node_equipment["Equipment inventory<br/>[schema.sql]"]
  node_loan["Equipment loan<br/>[schema.sql]"]
  node_return_report["Return reports<br/>[schema.sql]"]
end

subgraph group_identity["Identity &amp; access"]
  node_profile["User profiles<br/>[schema.sql]"]
  node_login["Login accounts<br/>[schema.sql]"]
  node_eligible_roster["Eligible-user roster<br/>[schema.sql]"]
  node_settings["System settings<br/>[schema.sql]"]
end

subgraph group_operations["Database operations"]
  node_schema["Schema definition<br/>[schema.sql]"]
  node_database[("Booking database<br/>[schema.sql]")]
  node_grants["Runtime grants<br/>[runtime-grants.sql]"]
  node_maintenance["Retention policy<br/>[maintenance.sql]"]
end

node_requester(("Room requester"))
node_approver(("Designated approver"))
node_visitor(("Public visitor"))
node_backend["Backend service"]

node_schema -->|"defines"| node_database
node_backend -.->|"submits requests"| node_booking_record
node_booking_record -->|"reserves"| node_room
node_booking_record -->|"applies"| node_approval_rules
node_approval_rules -.->|"routes pending approvals"| node_approver
node_booking_record -->|"checks conflicts"| node_room_closure
node_visitor -.->|"views"| node_availability
node_availability -->|"reads availability"| node_room
node_backend -.->|"records loans"| node_loan
node_loan -->|"tracks items"| node_equipment
node_loan -->|"matches returns"| node_return_report
node_backend -.->|"manages profiles"| node_profile
node_profile -->|"pairs one-to-one"| node_login
node_eligible_roster -->|"seeds eligible users"| node_profile
node_settings -->|"identifies approver"| node_approver
node_grants -->|"limits runtime access"| node_database
node_maintenance -->|"cleans retained data"| node_database

click node_schema "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_database "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_booking_record "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_room "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_room_closure "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_approval_rules "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_availability "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_equipment "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_loan "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_return_report "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_profile "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_login "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_eligible_roster "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_settings "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql"
click node_grants "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/runtime-grants.sql"
click node_maintenance "https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/maintenance.sql"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_booking_record,node_room,node_room_closure,node_approval_rules,node_availability toneBlue
class node_equipment,node_loan,node_return_report toneAmber
class node_profile,node_login,node_eligible_roster,node_settings,node_requester toneMint
class node_schema,node_database,node_grants,node_maintenance toneRose
class node_approver,node_visitor,node_backend toneIndigo
```

## Components

### Rooms & bookings

- [Room booking](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Room inventory](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Room closures](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Approval rules](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Public availability](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`

### Equipment lifecycle

- [Equipment inventory](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Equipment loan](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Return reports](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`

### Identity & access

- [User profiles](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Login accounts](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Eligible-user roster](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [System settings](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`

### Database operations

- [Schema definition](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Booking database](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/schema.sql): `sql/schema.sql`
- [Runtime grants](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/runtime-grants.sql): `sql/runtime-grants.sql`
- [Retention policy](https://github.com/suchanya-pangam/room-booking-database-design/blob/main/sql/maintenance.sql): `sql/maintenance.sql`

### Other components

- **Room requester**
- **Designated approver**
- **Public visitor**
- **Backend service**

## Connections

- Schema definition → Booking database: defines
- Backend service → Room booking: submits requests
- Room booking → Room inventory: reserves
- Room booking → Approval rules: applies
- Approval rules → Designated approver: routes pending approvals
- Room booking → Room closures: checks conflicts
- Public visitor → Public availability: views
- Public availability → Room inventory: reads availability
- Backend service → Equipment loan: records loans
- Equipment loan → Equipment inventory: tracks items
- Equipment loan → Return reports: matches returns
- Backend service → User profiles: manages profiles
- User profiles → Login accounts: pairs one-to-one
- Eligible-user roster → User profiles: seeds eligible users
- System settings → Designated approver: identifies approver
- Runtime grants → Booking database: limits runtime access
- Retention policy → Booking database: cleans retained data
