Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
SQL中的笛卡尔坐标系_Sql_Tsql - Fatal编程技术网

SQL中的笛卡尔坐标系

SQL中的笛卡尔坐标系,sql,tsql,Sql,Tsql,在MS SQL表格中保存笛卡尔坐标的最佳方法是什么?至少有三列具有适当精度的x、y和z值。比如说, CREATE TABLE Coordinates ( ID int IDENTITY(1,1) not null PRIMARY KEY, X int not null, Y int not null, Z int not null ); 您可以根据需要添加其他列;例如,名为Name的VARCHAR列可能会有所帮助。您可能还需要X、Y和Z上的索引: CREATE INDEX IX

在MS SQL表格中保存笛卡尔坐标的最佳方法是什么?

至少有三列具有适当精度的x、y和z值。比如说,

CREATE TABLE Coordinates
(
  ID int IDENTITY(1,1) not null PRIMARY KEY,
  X int not null,
  Y int not null,
  Z int not null
);
您可以根据需要添加其他列;例如,名为
Name
VARCHAR
列可能会有所帮助。您可能还需要X、Y和Z上的索引:

CREATE INDEX IX_Coordinates_XYZ ON Coordinates (X, Y, Z)
最后,如果不希望数据中存在重复项,您可能希望也可能不希望在该数据上添加唯一约束(可能与“名称”列一起)

我不知道你还有什么选择;将坐标存储在一列中显然是个坏主意(无论是尝试用文本分隔坐标还是将坐标存储为XML)。为什么?因为任何时候你都必须在SQL中操作它们,这将更具挑战性/成本更高,如果你的客户需要这种格式的它们,那么让SQL这样做是很简单的,例如:

SELECT TOP 10 x,y,z FROM Coordinates FOR XML AUTO;

如果需要对坐标进行分组,请添加另一列(例如,
区域
列)。使用一个数字(
int
bigint
)性能会更好,但如果性能不是那么重要,您也可以使用
UNIQUEIDENTIFIER
VARCHAR
NVARCHAR

可能需要为一个id保存多个坐标(如region),您建议哪一个,编辑关系表或几何图形类型以添加该信息。只需添加另一列(或根据需要添加任意多的列)。但是,如果要使用此区域数据进行实时图形渲染,您可能最终会发现SQL并不是您的最佳选择—尽管SQL可以很好地用于存储/加载持久化状态。