在MS SQL表中保存笛卡尔坐标的最佳方法是什么?
答案 0 :(得分:0)
至少有三列具有适合您的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
);
您可以根据需要添加其他列;例如,名为VARCHAR
的{{1}}列可能会有所帮助。您可能还需要X,Y和Z上的索引:
Name
最后,如果你不想在那里复制,你可能想要也可能不想对该数据添加一个唯一约束(可能与名称列一起使用)。
我不确定你有什么其他选择;将坐标存储在一个列中显然是个坏主意(无论是尝试用文本分隔它们还是将它们存储为XML)。为什么?因为任何时候你必须在SQL中操作它们,它将更具挑战性/更昂贵,如果你的客户端需要这种格式,那么让SQL这样做是微不足道的,例如:
CREATE INDEX IX_Coordinates_XYZ ON Coordinates (X, Y, Z)
如果您需要对coordiantes进行分组,请添加另一列(例如,SELECT TOP 10 x,y,z FROM Coordinates FOR XML AUTO;
列)。使用数字(Region
或int
)效果会更好,但如果效果不是很好,您还可以使用bigint
或UNIQUEIDENTIFIER
/ VARCHAR
关注的问题。