Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 移动应用程序的数据库结构,速度更快_Mysql_Sql_Node.js_Azure_Mobile - Fatal编程技术网

Mysql 移动应用程序的数据库结构,速度更快

Mysql 移动应用程序的数据库结构,速度更快,mysql,sql,node.js,azure,mobile,Mysql,Sql,Node.js,Azure,Mobile,也许这个问题有点复杂(这就是为什么我需要做一个简单的介绍) 我和我的团队正在开发一款带有Node js的移动应用程序。现在我们在数据库结构的一部分。我们的想法是在Azure SQL中实现。但是我们有几个关于数据库结构的问题。 我们提供5项服务(目前),其中每个用户可以分配多个服务(可能不是或全部)。根据它拥有的服务,用户将被重定向到一个屏幕,在该屏幕上,所有服务都将显示,只有那些被分配了颜色(以便能够单击)的服务和其他灰色的服务(以便他们无法单击) 哪个更好,为每个服务创建一列,还是以单列数组样

也许这个问题有点复杂(这就是为什么我需要做一个简单的介绍) 我和我的团队正在开发一款带有Node js的移动应用程序。现在我们在数据库结构的一部分。我们的想法是在Azure SQL中实现。但是我们有几个关于数据库结构的问题。 我们提供5项服务(目前),其中每个用户可以分配多个服务(可能不是或全部)。根据它拥有的服务,用户将被重定向到一个屏幕,在该屏幕上,所有服务都将显示,只有那些被分配了颜色(以便能够单击)的服务和其他灰色的服务(以便他们无法单击) 哪个更好,为每个服务创建一列,还是以单列数组样式创建所有服务? 比如说

服务1 |服务2 |服务3 |服务4 |服务5 |
真|假|真|真|假|真

服务

[服务1、服务2、服务3、服务4、服务5]

因为我认为,如果将来我们有x个服务,检查整个阵列并确定一个条件来验证它有什么服务,会使应用程序的延迟变慢,而不是点击某一列可能会使它更快

我希望这个问题已经被理解,对不起,如果玛丽。
这不是一个真正的azure SQL问题,而是一个关系数据库问题

通常,您应该避免使用这两种方法,并尝试使用数据库

您的数据库知道如何在没有任何性能影响的情况下查询多个数据库

根据我的经验,最好的选择是创建多对多表连接

因此,一个保存原始数据而不提及服务的表,可能称为实体

Id、数据、时间、活动

另一个保存与服务关系的表,称为EntitiesToServices

Id、ServiceId、OtherTableId

和第三个表,该表保存有关服务的数据,称为服务

Id,Name


这样,您可以自由地扩展所有的服务并添加更多的表,而不会有任何人互相干扰。

< P>如果您只需要一组最多64个真值/假值,请考虑一个类型为“代码> > SET的单列。类似地,您可以选择任意大小的
INT
(限制为64个标志)并打开/关闭每个“服务”。今天你有5个;正如你所说,明天会有更多

SET
的语法有点笨拙。使用
INT
进行此操作也是如此

它非常紧凑;这可能是奖金,也可能不是奖金

规范化(如另一个答案中所述)可能是一个更好的解决方案,尤其是当您需要为每个用户的每个服务存储更多的开/关时

请提供更多关于使用这些标志将采取的行动的详细信息;然后我们可以深入了解更多细节