数据库距离城市表

发布于 2024-10-21 16:14:28 字数 239 浏览 1 评论 0原文

我需要一个数据库模型,它可以处理具有 2 个值的独占 PK。

假设我们有 3 个城市,它们都是相连的。

距离为:

(1)->(2) = (2)->(1) = 5
(1)->(3) = (3)->(1) = 3
(2)->(3) = (3)->(2) = 4

复杂的一点是我不想要重复的条目!

提前谢谢

I need a DB model, that can handle an exclusive PK with 2 values.

Lets say we have 3 cities and they are all connected.

The distances are:

(1)->(2) = (2)->(1) = 5
(1)->(3) = (3)->(1) = 3
(2)->(3) = (3)->(2) = 4

The complex point is that i dont want duplicate entries!

Thx in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

机场等船 2024-10-28 16:14:28

您需要三列。 SourceID、DestID 和距离。将较小的 ID 号存储在 SourceID 中,并在 (SourceID, DestID) 上创建唯一约束;

You need three columns. SourceID, DestID and Distance. Store in SourceID the smaller ID number and create a unique constraint on (SourceID, DestID);

另类 2024-10-28 16:14:28

强制执行命令以防止重复。无论您存储城市名称还是城市 ID 号,同样的策略都适用。

CREATE TABLE distances (
    start_city VARCHAR(35) NOT NULL CHECK (start_city < end_city),
    end_city   VARCHAR(35) NOT NULL,
    km_distant INTEGER     NOT NULL CHECK (km_distant > 0),
    PRIMARY KEY (start_city, end_city)
);

Enforce the order to prevent duplicates. The same tactic works whether you're storing city names or city id numbers.

CREATE TABLE distances (
    start_city VARCHAR(35) NOT NULL CHECK (start_city < end_city),
    end_city   VARCHAR(35) NOT NULL,
    km_distant INTEGER     NOT NULL CHECK (km_distant > 0),
    PRIMARY KEY (start_city, end_city)
);
一枫情书 2024-10-28 16:14:28

您可以使用纬度和经度来计算距离。请参阅此处

You can use latitude and longitude for calculate distances. See here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文