2016-03-20 6 views
0

これがこの質問をする適切なフォーラムであるかどうかはわかりませんが、ここに投稿する技術的な質問と思われます。テーブルデータベース内の階層

インタビュー中に質問されました。

私たちは4つのテーブルを持っています。国、市、区、副区。どのようにそれらのデータベースの階層を作る(1つの方法は、子テーブルに親の外部参照を追加しています...しかし、他の方法は何ですか?)

私は他の方法を見つけることができないすべての情報を追加する1つのテーブルですが、質問は '階層を作る方法'でしたか?つまり、複数の表が含まれていることを意味します。

他にも何ができるのか教えてください。

+0

はhttp://stackoverflow.com/a/35699997/562459を参照してください –

+0

インタビュアーは「、尋ねたwithou子テーブルの親の外部参照 "を作成し、上記のスレッドで提供されている解決策には親の参照があります。 –

+0

* "子テーブルの親の外部参照なし" *:これはあなたの質問にはありません。たぶんあなたは質問全体を明確かつ明示的に含めるように編集するべきでしょう。 –

答えて

0

Tgereは多くのアプローチです。いくつかのビューの正常化の観点から、いくつかのパフォーマンスとビューの使用しやすい点から良いです。それらのいくつか:

  • 自己参照:

enter image description here

  • コードが情報を保持しています。例えば123000のために - 地区123

enter image description here

  • の 001サブ地区最も正規化された方法(リンク地区、都市 subdistrict市に変更することができる)
  • - 地区、123001であります

enter image description here

+0

インタビュアーが「子テーブルに親の外部参照を作成せずに」、3つのソリューションすべてに親の参照があるかどうか、または解決方法が間違っているかどうかを尋ねるときに解決策を理解できませんでしたか? –

+0

@HappyDev、詳しい説明をお願いします!いくつの表が必要ですか? 1の場合は、すべての情報を1つのテーブルに入れてください。正規化されたストアが絶対にあります。 1つ以上のテーブルにする必要がある場合は、あるテーブルのデータを他のテーブルに参照する必要があります。 FKを使用したくない場合は、例2)のようなアプローチを使うことができます。ここでは、子と親がコード123000と123001を持っています – burzhuy