【发布时间】:2016-11-18 10:25:37
【问题描述】:
我正在尝试为智能供暖设备唐楼监控系统设计无 sql 数据库。该建筑有一个主要的供暖系统,通过跟踪公寓内的温度为每间公寓供暖。出于这个原因,每间公寓都有一个温度计,它不断地向主系统发送温度。这个想法是让一名管理员可以跟踪来自主系统的所有报告,还可以分别查看每间公寓的温度。租户只能看到他自己的公寓温度。
管理员可以管理许多建筑物,而一栋建筑物可以有许多公寓,并且只有一个主要的智能供暖系统。现在我假设一间公寓只能有一个温度计。我可以用 sql 设计数据库,但我必须使用 NoSql,而且我没有太多设计复杂的 nosql 数据库的经验。
我试图设计建筑系列,但我认为这是完全错误的。我是否应该为管理员和租户分开收藏,然后为建筑物和公寓收藏,如果是,那么如何加入?也许有人知道一些例子,我可以看看并有一些想法?
`{
建筑:1,
address: '这里的地址',
公寓: [
{ 没有:'1',楼层:'0'},
{没有:'2',楼层:'1'},
{ 没有:'3',楼层:'2'}
],
thermometer : [
{ id : ObjectID('AAAA'), apartmentNo: '3'},
{ id: ObjectID('F17C'), apartmentNo: '2'},
{ id: ObjectID('D2AA'), apartmentNo: '1'}
],
mainHeatingSys: [
{ thermId : ObjectID('AAAA')},
{ thermId: ObjectID('F17C')},
{ thermId: ObjectID('D2AA')
// etc
]
}`
【问题讨论】:
-
有很多种方法来设计一个面向文档的数据库,而且很大程度上取决于你的应用程序的查询需求。一个非常广泛的、征求意见的问题,并且与 StackOverflow 无关。仅供参考,您的问题是以文档为中心的;没有“nosql”模式,因为 NoSQL 数据库有很多种:键/值、文档、列、图。
-
不理解“取决于您应用的查询需求”?我描述了我需要拥有什么以及管理员和租户应该从 db 获得什么。如果我可以按照我定义的规则检索数据(管理员应该获取主系统和每个公寓数据,租户只有他自己的公寓数据)我不在乎我使用哪种方式,除非它使我的应用程序工作更高效。根据我提供的这些信息,您可以轻松创建 mysql 数据库,所以我认为 NoSql 也是如此。