Mysql 移动应用程序的数据库结构,速度更快
也许这个问题有点复杂(这就是为什么我需要做一个简单的介绍) 我和我的团队正在开发一款带有Node js的移动应用程序。现在我们在数据库结构的一部分。我们的想法是在Azure SQL中实现。但是我们有几个关于数据库结构的问题。 我们提供5项服务(目前),其中每个用户可以分配多个服务(可能不是或全部)。根据它拥有的服务,用户将被重定向到一个屏幕,在该屏幕上,所有服务都将显示,只有那些被分配了颜色(以便能够单击)的服务和其他灰色的服务(以便他们无法单击) 哪个更好,为每个服务创建一列,还是以单列数组样式创建所有服务? 比如说 服务1 |服务2 |服务3 |服务4 |服务5 |Mysql 移动应用程序的数据库结构,速度更快,mysql,sql,node.js,azure,mobile,Mysql,Sql,Node.js,Azure,Mobile,也许这个问题有点复杂(这就是为什么我需要做一个简单的介绍) 我和我的团队正在开发一款带有Node js的移动应用程序。现在我们在数据库结构的一部分。我们的想法是在Azure SQL中实现。但是我们有几个关于数据库结构的问题。 我们提供5项服务(目前),其中每个用户可以分配多个服务(可能不是或全部)。根据它拥有的服务,用户将被重定向到一个屏幕,在该屏幕上,所有服务都将显示,只有那些被分配了颜色(以便能够单击)的服务和其他灰色的服务(以便他们无法单击) 哪个更好,为每个服务创建一列,还是以单列数组样
真|假|真|真|假|真 或 服务 [服务1、服务2、服务3、服务4、服务5] 因为我认为,如果将来我们有x个服务,检查整个阵列并确定一个条件来验证它有什么服务,会使应用程序的延迟变慢,而不是点击某一列可能会使它更快 我希望这个问题已经被理解,对不起,如果玛丽。
这不是一个真正的azure SQL问题,而是一个关系数据库问题 通常,您应该避免使用这两种方法,并尝试使用数据库 您的数据库知道如何在没有任何性能影响的情况下查询多个数据库 根据我的经验,最好的选择是创建多对多表连接 因此,一个保存原始数据而不提及服务的表,可能称为实体 Id、数据、时间、活动 另一个保存与服务关系的表,称为EntitiesToServices Id、ServiceId、OtherTableId 和第三个表,该表保存有关服务的数据,称为服务 Id,Name
这样,您可以自由地扩展所有的服务并添加更多的表,而不会有任何人互相干扰。
< P>如果您只需要一组最多64个真值/假值,请考虑一个类型为“代码> > SET的单列。类似地,您可以选择任意大小的INT
(限制为64个标志)并打开/关闭每个“服务”。今天你有5个;正如你所说,明天会有更多
SET
的语法有点笨拙。使用INT
进行此操作也是如此
它非常紧凑;这可能是奖金,也可能不是奖金
规范化(如另一个答案中所述)可能是一个更好的解决方案,尤其是当您需要为每个用户的每个服务存储更多的开/关时
请提供更多关于使用这些标志将采取的行动的详细信息;然后我们可以深入了解更多细节