私はユーザーを表すテーブルがあるとしましょう:id, name
。 テーブルは巨大で約1億行あります。 また、ユーザーにはいくつかの不動産があります。これはオプションのフィールドなので、ユーザーのごく一部(5%)が提供しています。だから私はまた、都市:id, name
とテーブルがあります。関係は1対多であり、ユーザーは都市を1つしか持てません。都市は多くのユーザーのための場所です。データベースの設計:接続
質問はどのように接続するのですか?
a)カラムcity_id
をusersテーブルに追加します。
b)3番目の結合表user_city: user_id,city_id
を作成する(aの場合にその膨大な数のNULLを省略することを目的に)。
また、アプリケーションはそうcity_id
列は任意の非外国人ユーザーが唯一の出生の街を(持っているので、いずれの場合
city_id列のインデックスにすべてのNULLを入れるのは無駄だと思うので(100 000 000ユーザーのうち10人しか出身都市を提供していない場合) RAMは限られているので、できるだけインデックスのサイズを最小限に抑えたい。 – Viacheslav
答えがあります:あなたの場合、スペースは時間よりも貴重です。 –