首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于地理过滤的正确mysql结构

用于地理过滤的正确mysql结构
EN

Stack Overflow用户
提问于 2012-09-24 03:14:13
回答 1查看 207关注 0票数 0

我们正在重新整理我们的房屋租赁数据库,并有以下内容。我们有不同的apis,从房屋和公寓到土地。从apis中,我们主要有国家->地区->城市(或村庄)结构。我们还有一个额外国家的公寓,我们有区域->城市->城市部分->街道结构

因此,我们制定了两个mysql方案。你能稍微批评一下,或者暗示一下更好的方法吗?

和第二个

你能批评一下,也许可以给出一个更好的方法来做数据库,这将导致更好的性能,更少的连接等?我们不是mysql专家:((

在这里查看的图像很小,所以链接

1st Scheme Image big one

2nd Scheme Image big one

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-09 13:30:40

整个模式都是错误的!你对数据库规范化有什么了解?您的架构至少不符合第三范式的要求。以粒子为例:

您有以下国家/地区:

代码语言:javascript
复制
-CountryName1
-CountryName2
-CountryName3

您有以下区域:

代码语言:javascript
复制
-RegionOfCountry1_a
 ...
-RegionOfCountry3_a

你有城市:

代码语言:javascript
复制
-City_1_Of_Country1_Region_a
 ...
-City_3_Of_Country3_Region_a

在示例中,树视图中的数据将为:

代码语言:javascript
复制
-CountryName1
|_ -RegionOfCountry1_a
    |_ -CityOf_Country1_Region_a
       |_ -City_1_Of_Country1_Region_a
       |_ -City_2_Of_Country1_Region_a
       |_ -City_3_Of_Country1_Region_a
    |_ -CityOf_Country1_Region_b
       |_ -City_1_Of_Country1_Region_b
       |_ -City_2_Of_Country1_Region_b
       |_ -City_3_Of_Country1_Region_b
    |_ -CityOf_Country1_Region_c
       |_ -City_1_Of_Country1_Region_c
       |_ -City_2_Of_Country1_Region_c
       |_ -City_3_Of_Country1_Region_c
|_ -RegionOfCountry1_b
    |_ -CityOf_Country2_Region_a
       |_ -City_1_Of_Country2_Region_a
    |_ -CityOf_Country2_Region_b
       |_ -City_1_Of_Country2_Region_b
    |_ -CityOf_Country2_Region_c
       |_ -City_1_Of_Country2_Region_c
|_ -RegionOfCountry1_c
    |_ -CityOf_Country2_Region_a
       |_ -City_1_Of_Country2_Region_c
...
-CountryName2
|_ -SecondCountry
       |_ -MegaCityCountry3
...
-CountryName3
|_ -MegaRegionCountry3
       |_ -MegaCityCountry3

你有一个外键(country_id,city_id,region_id)的外键约束表,它“链接”到这3个表。它提供了创建错误记录的可能性,例如:

代码语言:javascript
复制
*name = "MyHouse with address data from a far galaxy"
country_id = CountryName**1**
region_id = RegionOfSecondCountry (from CountrName**2**)
city_id = MegaCityCountry3 (from -CountryName**3**)*

这意味着下一步:你不知道规范化需求,或者你不能预测传递依赖

尝试执行下一步操作

代码语言:javascript
复制
----------------
Table "**houses**"
----------------
id
houseNumber
description
*fk_city_id*
----------------

cities__.id:的fk_city_id引用

代码语言:javascript
复制
----------------
table "**cities**"
----------------
id
name
*fk_region_id*
----------------

regions__.id:的fk_region_id引用

代码语言:javascript
复制
----------------
table "**regions**"
----------------
id
name
*fk_country_id*
----------------

countries__.id:的fk_country_id引用

代码语言:javascript
复制
----------------
table "**countries**"
----------------
id
name
----------------

附言:>>为我糟糕的英语道歉

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

https://stackoverflow.com/questions/12555410

复制
相关文章

相似问题

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