DATA WAREHOUSE

Hotel booking snowflake schema

This hotel booking snowflake schema records each stay in FactStay with its nights and room revenue. The fact links to check-in date, guest and room. Guest details connect to country, while room details connect through room type to property. These separate levels make it possible to report revenue by property, room type, guest country or arrival period without repeating descriptive values throughout the fact table. The model is useful for hospitality groups that maintain shared property and room-type hierarchies across locations. It also keeps local room details separate from the cross-property categories used for management reporting. This improves consistency when properties share a central reporting model across a portfolio.

UPDATED 2026-09-24
TYPEErd
EXAMPLEHotel booking snowflake schema
Make this diagram your own.

Open it in the AI editor with a prompt pre-filled — keep what works, change what doesn't.

CASE ANALYSIS

Scenario

Hotel stay reporting

Key decisions

  • Stay grain: Store one row per guest stay.
  • Guest geography: Keep country outside the guest row.
  • Room hierarchy: Separate room, type and property.

When to reuse this

Use this for occupancy and revenue reporting across multiple properties.

FAQ

Frequently asked questions

What is the fact table grain?01
Each FactStay row represents one guest stay.
Why separate room type from room?02
Many rooms can share a type, such as deluxe king.
Can this support property reporting?03
Yes. Room Type links to Property for property-level rollups.
Open this example in the editor →

Tweak it with chat, export PNG/SVG, or fork it for your own use case.