在过去的几个月里,我一直在学习很多关于非规范化数据的知识,但我想知道在扁平化的架构世界中是否可以实现以下操作。我知道如何在 Firebase 中处理双向关系,但是三向关系呢?让我解释...
我的数据库中有 5 个项目services
,providers
、serviceAtProvider
、reviews
和users
。我希望能够添加providers
,services
反之亦然。
我还希望 aprovider
内部有一个特定页面service
,并希望有链接到该特定服务的提供者的评论。页面 url 可能看起来像这样 ( site.com/serviceId/providerId
)。评级是独一无二providerId
的serviceId
——你不能单独评价serviceId
s 或providerId
s。
我不知道如何去建立如此复杂的关系。我将如何加入该项目中的serviceId
and ?providerId
serviceAtProvider
这是我到目前为止所得到的:
"services": {
"service1": {
"name": "Hernia Repair",
"providers": {
"provider1": true,
"provider2": true
}
}
},
"providers": {
"provider1": { "name": "The Whittington Hospital" },
"provider2": { "name": "Homerton Hospital" }
},
"serviceAtProvider": {
"service1AtProvider1": { "rating": 4 },
"service1AtProvider2": { "rating": 3 }
},
"reviews": {
"service1AtProvider1": {
"review1": {
"body": "A review from user 1",
"user": "user1"
}
},
"service1AtProvider2": {
"review1": {
"body": "A review from user 2",
"user": "user2"
}
}
},
"users": {
"user1": { "name": "Ben Thomas" },
"user2": { "name": "Beatrix Potter" }
}
我不知道如何创建该serviceAtProvider
连接,或者我将如何访问一页上的service1.name
, provider1.name
, service1AtProvider1.rating
, 。reviews.service1AtProvider1
谁能解释如何做到这一点?
另外,有什么我应该遵循的最佳实践吗?
任何帮助表示赞赏。提前致谢!
更新
{
"availableServices": {
"service1": { "name": "Hernia Repair" },
"service2": { "name": "Chemotherapy" }
},
"services": {
"provider": {
"name": "The Whittington Hospital",
"service": {
"service1": {
"rating": 4,
"reviewId1": true
},
"service2": {
"rating": 3,
"reviewId2": true
},
}
}
},
"reviews": {
"reviewId1": {
"review1": {
"rating": 4,
"body": "A review from user 1",
"user": "user1"
}
}
},
"users": {
"user1": { "name": "Raphael Essoo-Snowdon" },
"user2": { "name": "Sharlyne Slassi" }
}
}