Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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
存储id';的数组/元组的正确方法是什么;在SQL Server中的列中_Sql_Sql Server_Arrays - Fatal编程技术网

存储id';的数组/元组的正确方法是什么;在SQL Server中的列中

存储id';的数组/元组的正确方法是什么;在SQL Server中的列中,sql,sql-server,arrays,Sql,Sql Server,Arrays,我正在重新设计一个本地IP管理站点,需要一些帮助。当前,存在与某个子网ID关联的外键建筑ID,以便客户端知道子网所在的建筑。然而,出现的一个问题是,一个子网可能被分割到多个建筑物中。现在,子网到构建模式不再适用,我对正确的管理方法感到困惑 一个立即浮现在脑海中并且看起来很糟糕的选项是将building id字段更改为一个逗号分隔的building id字符串。它很快而且有效,但它给我一种不好的感觉 我想到的另一个想法是创建BuildingIDTuple表,其中可能存在多行将子网id映射到buil

我正在重新设计一个本地IP管理站点,需要一些帮助。当前,存在与某个子网ID关联的外键建筑ID,以便客户端知道子网所在的建筑。然而,出现的一个问题是,一个子网可能被分割到多个建筑物中。现在,子网到构建模式不再适用,我对正确的管理方法感到困惑

一个立即浮现在脑海中并且看起来很糟糕的选项是将building id字段更改为一个逗号分隔的building id字符串。它很快而且有效,但它给我一种不好的感觉

我想到的另一个想法是创建BuildingIDTuple表,其中可能存在多行将子网id映射到buildingid

subnet id | building id
------------------------
    1     |      2 
    1     |      3
这种方法看起来更干净,更经得起未来的考验,但我也可以想象sql查询会带来很多麻烦

我认为理想的方法是在子网表中有一个建筑ID数组,但我认为这些不存在


那么,设计我正在做的事情的最佳方式是什么?任何帮助都将不胜感激

切勿在单个数据库列中存储一组值!!将它们拆分为一个新表,每个值作为一行!!否则,您将成为每次查询CSV值时将其拆分出来的奴隶。您的
BuildingIDTuple
表就是一条出路。查询并不困难,但您需要支持每个子网可能的多行提交。

只需创建额外的表,所需的连接就不会那么复杂


解析逗号分隔的列表或其他任何东西都会让你头疼。

我就是这么想的,但你们已经消除了所有疑问。谢谢大家!!