我想设计一个关于公交车站的数据库。这个城市大约有60辆公共汽车,每一辆都包含这些信息:
此数据库必须高效搜索,例如,当用户想要列出通过A和B站的公交车时,它必须快速运行。
在我的第一个想法中,我想将电台放在一个单独的表中,包括StationId和Station,然后电台列表将包含那些StationIds。我拜访它可能有用,但不确定它是否有效。
我该如何设计这个数据库?
非常感谢。
答案 0 :(得分:11)
您是否查看了Database Answers以查看是否有符合您要求的架构?
答案 1 :(得分:5)
我必须解决这个问题而且我用过这个:
订单强> - 号码 - 姓名
<强>站强> - 名称 - 纬度 - 经度 - is_terminal
<强>度假强> - 约会 - 说明
<强>路线强> - line_id - from_terminal:station_id - to_terminal:station_id
路线时间表 - route_id - is_holiday_schedule - starting_at
路线停止 - route_id - station_id - enlapsed_time_from_start:以分钟为单位
它看起来对你有好处吗?
答案 2 :(得分:4)
根据伦敦公共汽车旅行的一些随机想法在我的青年时代,因为我认为这可能相当复杂。
您可能需要以下实体:
答案 3 :(得分:1)
(这听起来像是家庭作业,所以我不会给出完整的答案。)
似乎你只需要使用3个表之间的公共汽车和停靠点之间的多对多关系。具有两个内部联接的查询将为您提供在两个特定站点停止的总线。
答案 4 :(得分:1)
我会破解它。
bus_id int
path varchar(max)
如果公共汽车经过以下车站(按此顺序):
01
03
09
17
28
然后我将路径设置为
的记录放入'-01-03-09-17-28-'
如果有人想要从03到28号车站找到公交车,那么我的选择声明是
select * from buses where path like '%-03-%-28-%'
不可扩展,不优雅,但死得很简单,并且在尝试寻找路线时不会像狂热的表一样流失。当然,它只有在有一条公共汽车通过这两个电台的情况下才有效。
答案 5 :(得分:0)
你所想的是好的,在某些情况下它可能有效也可能没有效率。我认为你应该创建表作为table1(BusID,BusName)表2(站点列表,总线ID)。我认为这会有所帮助。并尝试在这两个表之间使用连接来获得结果。如果可能的话还有一件事是尝试规范化可以帮助你的表格。
答案 6 :(得分:0)
我要去3张桌子:
总线 站 bus_stations
“bus”代表名称的含义,“station”代表工作站ID和名称,“bus_stations”连接其他2个表,具有bus_id,station_id_from station_id_to
这可能比你真正需要的更复杂,但是如果你需要知道公共汽车的完整轨迹,并且从巫婆站到达“B站”时会有一辆公共汽车,很有用。
但是,60辆公共汽车的性能不会对性能造成太大影响。