Wypróbuj to podejście:
Sprawdź, który podmiot (lub podmioty) są bohaterami
Z „bohaterem” mam na myśli podmiot (y), wokół którego koncentruje się baza danych. Weźmy twój przykład. Bohaterem przykładu nieruchomości jest dom*.
Opracuj prawa własności
Przejrzyj inne podmioty, takie jak właściciel, agencja, zdjęcia i recenzje i zadaj sobie pytanie, czy jest sensowne umieszczanie ich informacji razem z domem. Czy miałbyś kaskadowe usuwanie któregoś z kluczy obcych w Twojej relacyjnej bazie danych? Jeśli tak, oznacza to własność.
Sprawdź, czy denormalizacja danych ma rzeczywiście znaczenie
Będziesz mieć dane agencji (i prawdopodobnie właściciela) rozmieszczone w wielu domach. Czy to ma znaczenie?
Twoja kolekcja domów prawdopodobnie będzie wyglądać tak:
house: {
owner,
agency,
images[], // recommend references to GridFS here
reviews[] // you probably won't get too many of these for a single house
}
*Właściwie jest to prawdopodobnie reklama domu (ponieważ domy są zazwyczaj reklamowane w witrynach z nieruchomościami i prawdopodobnie tym jesteś naprawdę zainteresowany), więc rozważ to