Hello :)
Alors pour la lourdeur de la BDD, tu n'a pas une collection à loop (NoSQL, mais de toutes façons le NoSQL peut loop des millions de données), tu as une base de données relationnelle (SQL) Du coup pas de soucis de lourdeur à avoir, chaque ligne est indexée par un id, ta base de données ne va pas se fatiguer à parcourir ta base, elle va pointer vers l'index qui l'interesse directement, du coup tu peux faire une table unique hotels :p
Ce qui pourrait ralentir la base de donnée, ce n'est pas sa taille mais le nombre de requetes qu'il se prends en même temps, même si tu utilise plusieurs tables, la charge se fait au niveau du serveur, pas au niveau des tables, pour régler ce problème il faut utiliser un lod balancer (un répartisseur de charge) en gros ta base de donnée sera redondée sur plusieurs serveurs dans des datacenter différents (à la base c'est pour éviter les pertes de donées, par exemple un incendie dans un datacenter comme a subit OVH, tes données sont stockées dans encore 3autres datacenters OVH du coup c'est bon) ensuite le load balancer va montorer la charge que subit tes serveurs, et il va envoyer les requêtes sur le serveur le moins chargé, bon pas trop clair ce que je dis, tiens un dessin pour voir comment ça fonctionne Le dessin :p
Pour ta base de donnée, il faudrait un format de ce genre:
hotels:
- id
- name
- autres infos...
customers:
- id
- hotel_id # clé étrangère
- name
- autres infos...
Et pouur la requete SQL:
SELECT * from customers JOIN hotels ON customers.hotel_id = hotel.id WHERE customer.name = "Thomas"
Avec cette requete tu va uniquement sortir les hotel qui sont lié avec les client qui se nomment Thomas, les autres hotels seront ignorés donc pas de charge ^^