我正在创建一个数据库来存储高速公路公交系统。基本上,这些公交车是人们从一个城市到另一个城市旅行的人。根据出发城市和目的地城市的不同,一个人可能必须乘坐几辆公交车才能到达他们想要的目的地。它与公共交通系统非常相似。主要区别在于,公交车由几个不同的公司运营,数据库应该允许应用程序根据出发城市和目的地城市查询公司信息。假设用户想要从罗马旅行到维也纳,需要乘坐3辆公交车。通过提供罗马作为出发城市,维也纳作为目的地,我的应用程序将生成一个查询,返回如下结果: Company1 (姓名、地址、联系号码),Company2(姓名、地址、联系号码),Company3 (姓名、地址、联系号码)。
到目前为止,我已经列出了4个表:
Company - id,name, companyid, address, ph#
City - id,name
Bus - id,companyid,stopid
Stop - id, cityid从那时起,我不确定还需要添加什么表,以便我的应用程序可以运行查询需要乘坐多辆公交车的行程。我很感谢你的意见。
发布于 2016-03-23 20:28:21
您需要的表和属性由您拥有的功能需求决定。因此,如果您只需要有关公交车、运营公交车的公司以及公交车停靠城市的信息,那么您的表可能包含足够的信息。如果您的需求变得更加复杂(或者如果有您没有明确说明的需求,因为您认为它们是不言而喻的),则可能缺少一些信息。
在你的设计中有一个正式的缺陷。我假设您的id属性应该为每条记录包含一个惟一的键。如果这是真的,那么每辆公交车将不会有超过一条记录,因此每辆公交车只能关联一个停靠站。此外,每个站点不会有多个记录,因此每个站点只能关联一个城市。因此,即使每辆公交车只连接两个城市,您也无法表达from- to -relationship。
有两种方法可以解决这个问题。如果在从A到B再到C的过程中,您并不关心连接它们的是不是同一条总线,那么定义一下就足够了
Bus - id, companyid, originid, destinationid并省略停止表。这样一来,旅行者就可以获得从罗马到维也纳的所有可用连接,但对于一个有弗洛伦萨的连锁店来说,不知道是在那里换乘公交车,还是静静地坐着。
如果你想让你的停靠点对象描述一条路线,它们应该有这样的结构
BusStop - id, busid, cityid, sequence其中,sequence属性将从0或1向上计算此公交车所访问的城市。
你的模型可能缺少的另一件事是距离或旅行时间的概念。可能会有从罗马经斯德哥尔摩到维也纳的联系,但我怀疑它是否很有吸引力。航空公司有时会提供这种之字形的路线,但对于公共汽车来说,这可能是不切实际的。类似的观察结果也适用于转接公交车的等待时间。从罗马经过佛罗伦萨、威尼斯、克拉根福和格拉茨去维也纳可能很好,但如果这意味着在这些地方都要等两天才能坐下一班公交车,那么骑自行车可能是一个很好的选择。像这样的需求可能会导致更复杂的数据模型。
https://stackoverflow.com/questions/36107698
复制相似问题