SQL中的笛卡尔坐标系
在MS SQL表格中保存笛卡尔坐标的最佳方法是什么?至少有三列具有适当精度的x、y和z值。比如说,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
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可以很好地用于存储/加载持久化状态。