mysql:12719
From: 川合孝典 <川合孝典 <gcd00051@xxxxxxxxxx>>
Date: Fri, 3 Feb 2006 15:22:45 +0900 (JST)
Subject: [mysql 12719] Re: テーブルデータの正規化方法
川合孝典です。 ----- Original Message ----- >Date: Fri, 3 Feb 2006 13:52:35 +0900 >From: "saori" <hibiki@xxxxxxxxxx> >Subject: [mysql 12715] Re: テーブルデータの正規化方法 >To: <ml@xxxxxxxxxx> > (中略) >地域の検索方法は、段階として2段階での検索を >考えておりまして、 >第一段階 >○○市 > >んで、○○市をクリックで、 >第二段階 >○○区 > >にしたいのです。 (中略) この場合、 「堺市」って「区」はないじゃないでしょうか? それに「大阪府」の扱いは? という疑問がありますけど。 問題は「地域」ってものをどう捕らえるかではないですか? 上の話からするとsaoriさんには「大阪市」と「福島区」との 間に階層関係が見えているんでしょうけれども、それが テーブルに反映されていないのが問題ですよね? (関西限定で考えると)「府県」「市町村」「区」に わかれてるんでしょうか。 ex. 大阪市浪速区 -> 大阪府/大阪市/福島区 京都府大山崎町 → 京都府/大山崎町/− #東京が入ると「千代田区」なんかは「東京都千代田区」ですから #「市区町村」でしょうけど。 そうなると「府県」「市町村」「区」で別々のテーブルにすると いうのが素直かもですね。 府県 府県 名称 --------------------------------- 1 大阪府 2 京都府 市町村 ID 府県 名称 --------------------------------- 1 1 大阪市 2 1 堺市 区 ID 府県 市町村 名称 --------------------------------- 1 1 1 都島区 2 1 1 福島区 配達地域 店舗KEY 府県 市町村 区 -------------------------- 1 1 1 2 # 大阪市福島区 1 1 2 Null # 堺市 といった感じ。 また1つのテーブルに入れるという考えもできるでしょう。 地域 府県 市町村 区 名称 最下位 --------------------------------- 1 0 0 大阪府 False 1 1 0 大阪市 False 1 1 1 都島区 True 1 1 2 福島区 True 1 2 0 堺市 True ※ 府県、市町村、区の3つの組み合わせでPRIMARY このとき 「配達地域」の堺市の区はNULLではなく0 「最下位」という項目を追加しましたが、下のレベルのあるなしを 示しています。配達地域に指定するとき、一番下のレベルしか 指定しちゃダメよ。とか検索のときに段階を分けるのに使うかな ってことで。 このほか 「都道府県はJISでもコードが振られているから別にするけど、 市町村と区はまとめたほうがわかりやすい」と考えるかもしれません。 テーブルの分け方は、そのものをどう見るかってことになるとは 思うので、あくまでも1つの考えってことで。
12710 2006-02-03 10:35 ["saori" <hibiki@xxxx] テーブルデータの正規化方法 12711 2006-02-03 11:59 ┣[小川 <mcn010@xxxxxxx] 12712 2006-02-03 12:10 ┣[川合孝典 <gcd00051@x] 12715 2006-02-03 13:52 ┃┗["saori" <hibiki@xxxx] 12716 2006-02-03 14:18 ┃ ┣[小川 <mcn010@xxxxxxx] 12718 2006-02-03 15:17 ┃ ┃┗["saori" <hibiki@xxxx] -> 12719 2006-02-03 15:22 ┃ ┗[川合孝典 <gcd00051@x] 12721 2006-02-03 20:05 ┃ ┗["saori" <hibiki@xxxx] 12713 2006-02-03 12:12 ┗[小川 <mcn010@xxxxxxx]