正确的mysql结构进行地理过滤

时间:2012-09-23 19:14:13

标签: mysql

我们正在重新安排我们的家庭租赁数据库,并有关注。我们有不同的apis,从房屋和公寓来来往往。从apis我们主要只有Country-> Region-> City(或village)结构。此外,我们有一个额外的国家公寓,我们有 Region-> City-> City Part-> Street Structure

所以我们制作了2个mysql方案。你可以批评一下,也许暗示一个更好的方法吗? First Sheme

第二个

Second Scheme

请你批评并提供更好的方法来做db,这会带来更好的性能,更少的连接等?我们不是mysql专家:((

此处观看的图片很小,所以链接

1st Scheme Image big one

2nd Scheme Image big one

1 个答案:

答案 0 :(得分:0)

整个架构都错了!您对数据库规范化有何了解?您的架构至少与第3范式的要求不匹配。 举个例子:

你有国家:

-CountryName1
-CountryName2
-CountryName3

您有区域:

-RegionOfCountry1_a
 ...
-RegionOfCountry3_a

你有城市:

-City_1_Of_Country1_Region_a
 ...
-City_3_Of_Country3_Region_a

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

-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个表。它提供了创建错误记录的可能性,例如:

*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**)*

这意味着下一步:您不了解规范化要求,或者您不预测传递依赖性

尝试做下一步

----------------
Table "**houses**"
----------------
id
houseNumber
description
*fk_city_id*
----------------

fk_city_id引用城市 .id:

----------------
table "**cities**"
----------------
id
name
*fk_region_id*
----------------

fk_region_id引用区域 .id:

----------------
table "**regions**"
----------------
id
name
*fk_country_id*
----------------

fk_country_id引用国家/地区 .id:

----------------
table "**countries**"
----------------
id
name
----------------

P.S。 >>抱歉我的英文不好