postgresql - 如何在数据库中存储点(x,y)?
问题描述
我需要将位置(x,y 点)存储在我的数据库中,点可以为空,X
并且Y
总是小于 999。目前我正在使用 EFCore Code First 和 Postgresql 数据库,但我想灵活一些这样我就可以在没有太多工作的情况下切换到 MSSql。我不打算离开 EF Core。
现在,我有两列:LocationX
和LocationY
,两者都是int?
类型。我不确定这是否是一个好的解决方案,因为从技术上讲 DB 允许 (X=2, Y=null),它应该是。它要么都是空的,要么都不是。
我的选择二是将其存储在一个字符串列中:"123x321",最大长度为 7。
有没有更好的办法?
谢谢,
解决方案
检查约束可用于强制两个列同时为 NULL 或 NOT NULL:
CREATE TABLE t(id INT,
x INT,
y INT,
CHECK((x IS NULL AND y IS NULL) OR (x IS NOT NULL AND y IS NOT NULL))
);
推荐阅读
- bioconductor - 为什么函数plotSex在编织时出错?
- c# - 在 C# 中创建导出函数并使用 csc.exe 进行编译
- python - Django如何从过滤后的数据中设置或更新数据
- python - Pandas:基于索引合并数据框和系列
- javascript - 使用 Fetch Api 从服务器获取数据后,选择框处于非活动状态
- swift - XCode12 导航栏
- node.js - Cookie 不会通过“Set-Cookie”标头在 chrome 中设置
- swift - 放入函数时,工作 Swift 代码返回“表达式类型不明确,没有更多上下文”
- php - PHP自动加载器在远程服务器上不起作用
- java - AES 密钥交换