首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建行/停止关系

如何创建行/停止关系
EN

Stack Overflow用户
提问于 2016-03-11 09:28:25
回答 2查看 24关注 0票数 1

我不是数据库专家,我只是在构建一个原型应用程序,所以没有什么是真正重要的。

无论如何,这个应用程序是关于地铁的:这个地铁有很多线路,有时有些车站是共享的(例如,站3和4是2、7和9线的站)。

因此,我编写了一个SQLite stops表:

代码语言:javascript
复制
    +---------+-------------+------+
    | Field   | Type        | Auto | 
    +---------+-------------+------+
    | id      | integer     | YES  |
    | name    | varchar(20) | NO   |
    | lines   | ?           | NO   |         
    +---------+-------------+------+

什么是处理共享止损的最好方法?我的想法是创建一个lines表,然后在stops表的line字段中放置一个逗号分隔的lines.id列表。我不知道为什么,但我觉得还有更好的办法。

任何建议都会受到赞赏,并对这个真正的问题表示歉意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-11 09:40:08

我将保持它的简单性,并使用一个表lines,该表具有ID (主键)以及行的其他元数据(如name):

线

代码语言:javascript
复制
(id, name)

然后,为止损点创建一个表:

停止

代码语言:javascript
复制
(id, name)

最后,您可以创建一个桥接器表,该表可以将线路与停止连接起来:

代码语言:javascript
复制
(lineId, stopId)

bridge表中的每条记录表示具有给定停止的一行。

请注意,使用CSV来表示一条有多个停止的行是完全不可行的,因为它使您的关系数据库的功能变得无用。

更新:

如果要记录给定行中停止的位置(并假设位置不同),可以使用下表:

stopNumbers

代码语言:javascript
复制
(lineId, stopId, stopPosition)

可以通过知道线路的ID和停止的ID来获得停止位置。

票数 0
EN

Stack Overflow用户

发布于 2016-03-11 09:39:08

您需要一个多到多的关系,它存储在一个单独的表中,如下所示:

代码语言:javascript
复制
table lines_to_stops
line_fk
stop_fk

这就是关系世界..。

请注意,数据库中的记录没有按任何特定顺序排列。如果您需要按任何特定的顺序设置止损点(您很可能会这样做),则还必须将此订单存储到数据库中:

代码语言:javascript
复制
table lines_to_stops
line_fk
stop_fk
order_in_line
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35936445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档