Room types carry what a guest chooses (a double, a suite); rooms are the physical inventory assigned at check-in. Rates set a nightly price for a room type over a date range, so a booking records the price it was actually quoted. A booking has a primary guest and may list others, and payments accumulate against it until it is settled.
$ npx vela create my-app --schema hotel-bookingsEvery collection, field and relation above becomes a PocketBase migration in the new project. Change any of it afterwards with vela generate migration --ai, which opens this same diagram as an editor.