我不是数据库专家,我只是在构建一个原型应用程序,所以没有什么是真正重要的。
无论如何,这个应用程序是关于地铁的:这个地铁有很多线路,有时有些车站是共享的(例如,站3和4是2、7和9线的站)。
因此,我编写了一个SQLite stops表:
+---------+-------------+------+
| Field | Type | Auto |
+---------+-------------+------+
| id | integer | YES |
| name | varchar(20) | NO |
| lines | ? | NO |
+---------+-------------+------+什么是处理共享止损的最好方法?我的想法是创建一个lines表,然后在stops表的line字段中放置一个逗号分隔的lines.id列表。我不知道为什么,但我觉得还有更好的办法。
任何建议都会受到赞赏,并对这个真正的问题表示歉意。
发布于 2016-03-11 09:40:08
我将保持它的简单性,并使用一个表lines,该表具有ID (主键)以及行的其他元数据(如name):
线
(id, name)然后,为止损点创建一个表:
停止
(id, name)最后,您可以创建一个桥接器表,该表可以将线路与停止连接起来:
桥
(lineId, stopId)bridge表中的每条记录表示具有给定停止的一行。
请注意,使用CSV来表示一条有多个停止的行是完全不可行的,因为它使您的关系数据库的功能变得无用。
更新:
如果要记录给定行中停止的位置(并假设位置不同),可以使用下表:
stopNumbers
(lineId, stopId, stopPosition)可以通过知道线路的ID和停止的ID来获得停止位置。
发布于 2016-03-11 09:39:08
您需要一个多到多的关系,它存储在一个单独的表中,如下所示:
table lines_to_stops
line_fk
stop_fk这就是关系世界..。
请注意,数据库中的记录没有按任何特定顺序排列。如果您需要按任何特定的顺序设置止损点(您很可能会这样做),则还必须将此订单存储到数据库中:
table lines_to_stops
line_fk
stop_fk
order_in_linehttps://stackoverflow.com/questions/35936445
复制相似问题