首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计停车街道数据库?

如何设计停车街道数据库?
EN

Stack Overflow用户
提问于 2013-11-26 07:49:06
回答 3查看 1.6K关注 0票数 1

我试着设计包含路旁停车数据的数据库。停车场有全球定位系统坐标,时间限制按日,星期规则(有些日子是允许的,其他限制),免费或付费的状态。最后,我需要做一些查询,可以指定停车的标准。对于第一次透支,我尝试这样做:

代码语言:javascript
运行
复制
Pakring
-------
parkingId  
Lat
Long
Days (1234567)
Time -- already here comes trouble

但是它没有规范化,而且很快就溢出了数据库。如何以最好的方式设计数据?

更新目前有两种方法,第一种方法是:

我尝试使用多到多链接的限制表。(这是几天和几个月的例子)。但是查询会很复杂,我现在不知道如何将时间和白天联系起来。第二种方法是:

使用一个带有Type字段的受限表,这将具有优先级。但这个解决方案也没有正常化。只是想弄清楚我有什么数据。

代码语言:javascript
运行
复制
PakingId Coords String Description(NO PARKING11:30AM TO 1PM THURS)

我想告诉用户他在哪里可以找到街道停车场,按地区,时间和日数。感谢你的帮助和时间。

EN

回答 3

Stack Overflow用户

发布于 2013-11-26 09:18:14

这似乎是一项艰巨的任务。只是一些想法。

你只关心路边停车吗?停车场有多层,所以除非你待在街上,否则GPS坐标就无法工作。

坐标的精度是多少?用其他标准来识别每个停车位会更容易吗?就像油漆过的停车广场的唯一标识符。(但如果人们不把车停在广场上怎么办?)或者由于非法停车,GPS坐标精度不准确/不够精确?你也打算保存停车罚单的记录吗?)

对于您需要考虑的表格或信息,您有一些想法:

  1. time:营业时间
  2. :可能是不同时间间隔的不同价格?
  3. exceptions:假日、维护(也许不是很重要,您可以只让停车位状态处于活动状态/不活动状态)
  4. 停车位:id (GPS/随机id),状态

上面的三或四个表可以通过中间表连接,该表揭示了每个可能的停车时间的停车位特性(就像所有可能的组合的原型)。该信息可以链接到另一个表中,在该表中,您可以保存实际停车事件的记录(例如,如果需要,您可以保存有或没有支付账单的人的记录)。

有很多东西会影响您的实现,所以您确实需要列出停车位的所有规则(以及事件?)。在了解了需要保存记录的事件的属性之后,可以在稍后完成(并重新处理)数据库结构。这是所有事情的关键:理解您需要做什么,这样您就可以设计和创建实现。如果实现(应用程序)不能工作,请更改实现。如果设计是错误的重新设计。如果你不取消整个过程(你真正需要的),你所做的每件事都注定会失败。(除非你非常幸运,但我不会指望运气.)

票数 1
EN

Stack Overflow用户

发布于 2013-11-26 08:00:03

尝试使用两个表,两个表之间有一个交集实体。

桌子停车场将有parking_id,lat和长柱。表限制将具有您在场景中使用的所有类型的限制,比如restriction_id、restriction_day、restriction_time和restriction_status,可能还有restriction_type。

然后,可以将这两个表与交集实体中的外键约束链接起来。

例如,parking_id有restriction_id。

这样,停车可以有多个限制,限制可以适用于多个停车场。

票数 0
EN

Stack Overflow用户

发布于 2013-11-26 08:14:07

正如您似乎听说过规范化,在Damien的评论之后,您应该使用不同的表来表示不同的东西。

然后,您应该考虑如何将这些表连接在一起,并在此过程中定义2之间的关系类型。可以是一对一的(这一种可以诱惑您将所有内容放在同一个表中,但链接表中的简单外键更干净),一对多(如果您将所有内容都放在一个表中,那么问题就会从这里开始,因为现在有几行链接表中有相同的外键,如果所有内容都在同一个表中,那么就必须将表中的字段隐藏起来),或者很多(您需要添加一个表才能在其他两个表之间建立链接,因此两个外键字段指向两个表中的记录)。

例如,在您的示例中,Parking表可以保存停车场名称、坐标等。第二个表TimeTable可以保存每个停车位的开始日期/时间,使用parkingId的外键(使其成为一对多的关系,1个停车位可以有多个开放框架)。例如,该表的字段可以是DayOfWeek (表示日期的数字)、openingTime、closingTime。这将允许您在同一天定义多个时间框架,或者一个时间框架(例如,如果总是打开的话),在本例中为这个停车位提供7条记录(=>一对多关系)。然后,你可以想象出第三张桌子上的Price,你把关于那个停车位的价格的数据(可能也是一对多的,有每小时收费/长期停留/.等的记录),等等,这取决于你需要代表的需求和不同的“物品”。

请注意,这些只是粗略的例子。数据库设计有时会非常棘手,这是我并不擅长的问题,但我认为这些建议可以帮助您更进一步,如果您陷入困境,还会带着另一个问题回来。

祝你好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20211288

复制
相关文章

相似问题

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