Database/WU Advice

I’m building an app where users search for appointments and each Appointment displayed includes details like Date and Time but also general information like Dentist Ratings, Office Reviews, and Office Address. The data is initially saved to Firebase/Firestore, and then pulled into Bubble for searches. For each user search, I expect to display no more than 10-20 appointment records.

Here’s what I’d like advice on:

  1. Data Structure: Should I save general details (e.g., ratings, reviews, address) directly within each Appointment record, or would it be more efficient to link each Appointment to separate Dentist and Office data types in the database? My goal is to maintain performance and minimize costs.

Currently using Option 1 below because I thought it would be faster for page load and filter options and avoid doing searches (e.g. doasearchfor appointments dental office address). But starting to wonder where I can be more efficient

  1. Example Structures:
    Option 1: All data in Appointment (Date, Time, Dentist Rating, dental Office name, Office Review, Office Address, Dentist name)
  • Option 2: Linked Data Types (Date, Time, dental Office, Dentist name. Then when displaying the appointment in a search do a search for that dentist office’s rating and address and dentists review
  1. Firebase vs. Bubble Storage: Since data is initially stored in Firebase, is it better to pull it directly into custom states in Bubble for each search, or should I store a copy in Bubble’s database for faster access? I’m aiming for a balance between cost, real-time updates, and performance.

I guess part of my concern is I am saving all this repetitive info to my bubble database in appointments (like dentist office address) when it already exists somewhere else in my database (under dentist offices). Also want to consider the WU costs when I do the API push to bubble from firebase.

Any guidance on the best structure and integration practices, especially given the expected search volume, would be much appreciated!