【发布时间】:2015-11-23 19:26:31
【问题描述】:
我正在为持有当地酒精法的律师重新设计一个数据库。这个想法是,有人可以查看他们所在的县或市,并找出他们最后一次或第一次可以在酒吧喝酒或在商店买酒的时间。我遇到的问题是法律管辖权非常复杂。问题包括:
- 独立的城市(没有与之关联的县, 例如,马里兰州巴尔的摩)
- 一个城市名称可以跨越多个司法管辖区(例如,弗吉尼亚州福尔斯彻奇是一个独立城市,弗吉尼亚州福尔斯彻奇也是费尔法克斯县的一部分)
- 包含县的城市(纽约州纽约市, 例如,包含五个不同的县)
我想使用这个简单的模式,但情况并不那么简单:
state {
id (INT, PRIMARY KEY)
name_short (CHAR(2))
name_long (CHAR(14))
…}
county {
id (INT, PRIMARY KEY)
name (CHAR(30))
state_id (INT, FOREIGN KEY, REQUIRED)
…}
locality {
id (INT, PRIMARY KEY)
name (CHAR(30))
county_id (INT, FOREIGN KEY, CAN BE NULL)
state_id (INT, FOREIGN KEY, REQUIRED)
...}
hours {
id (INT, PRIMARY KEY)
locality_id (INT, FOREIGN KEY, CAN BE NULL)
county_id (INT, FOREIGN KEY, CAN BE NULL)
state_id (INT, FOREIGN KEY, REQUIRED)
beer_and_wine_or_liquor (INT => 1=beer and wine only, 2=liquor only, 3=both)
on_or_off_premises (INT => 1=on-premises only, 2=off-premises only, 3=both)
start_time (INT => seconds after Sunday 12am)
end_time (INT => seconds after Sunday 12am)
}
这个想法是查询一个城市并返回他们当地的酒精法。如果一个城市将其法律推迟到某个县,那么hours 中将根本没有该城市的条目,然后将在县级进行另一个查询。这可能会一直级联到州一级。这样就消除了数据冗余。如果每个城市都遵从县的法律,甚至可能没有必要在 locality 中输入每个城市。
- 问题 #1 通过允许
county_id在locality表中解决 为空。 - 问题 #2 通过允许使用多个位置来解决 相同的名称,但不同的县 ID。
- 问题 #3 仍然存在问题 我。我不知道如何解决它。有人能帮忙吗?或者 我应该让纽约市陷入特殊情况吗?
(请注意,我将其与 Google Maps API 一起使用,以根据地址、交叉点或纬度/经度确定一个人的城市和县(如果存在)。另请注意,邮政编码搜索不是一个选项,因为它们跨越司法管辖区.)
【问题讨论】:
标签: mysql google-maps database-schema