0

賃貸住宅のデータベースを再編成しており、次のようなものがあります。家やアパートから来て着陸するさまざまなAPIがあります。apis からは、主に Country->Region->City(or Village) 構造しかありません。また、Region->City->City Part->Street Structure を持つ 1 つの追加の国用のアパートメントもあります。

したがって、2 つの mysql スキームを作成しました。少し批判して、より良い方法を示唆していただけますか? 最初のシーム

そして二枚目

第二のスキーム

批判して、データベースを実行するためのより良い方法を教えてください。これにより、パフォーマンスが向上し、結合が少なくなりますか? 私たちはmysqlの専門家ではありません:(((

ここで見るには画像が小さいので、リンク

1st スキーム画像 大きいもの

2nd スキーム画像 大きいもの

4

1 に答える 1

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

これらの 3 つのテーブルに「リンク」する外部キー(country_id、city_id、region_id)の制約を持つ家屋のテーブルがあります。次のような誤ったレコードを作成する可能性があります。

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

都市.idへの fk_city_id 参照:

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

リージョン.idへの fk_region_id 参照:

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

.idへの fk_country_id 参照:

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

PS >> 下手な英語でごめんなさい

于 2014-05-09T05:30:39.817 に答える