最近MySQLを勉強しだし、データベースをwebに反映させたいのですが、正規化について、どう考えていいかよくわからないことがあったので質問させて頂きます。
現在、MySQLに入れたデータ(商品名、説明、商品の属性1、商品の属性2、商品の属性3)を反映させたいと思っています。以下が現在の仕様と、やりたいこと、わからないことです。
-
データ量は現在300件で、今後増える予定ですが、どんなに増えても2000件くらいまでです。
-
今のところ、PHPとMySQLの組合せで作ろうと考えています。都道府県、市町村名はフォームのselectで選ぶため、表記ゆれはありません。
-
現在は1つのテーブルに全てまとめていて、プライマリーキーはidです
-
元々はエクセル(csv)でローカルで管理していて、入力者は自分のみでしたが、今回、複数人入力(web上のフォームから)が出来るようにしたいと考えています。
やりたいこと
0. 都道府県単位での統計データを反映させたい
0. 次に、各都道府県内の市町村レベルの統計データを反映させたい
0. 商品名は被る場合があるが、属性と、都道府県、市町村の違いで識別したい(場所、名前、属性のどれか1つでも違っていたら、重複していない物として識別)
0. 各属性、都道府県、市町村で検索が出来るようにしたい
わからないこと
0. 現在はすべて同じテーブルにデータを置いています(Excelなどと変わらない状態)が、そもそも正規化が必要かどうか
0. MySQL上でどのような正規化をしたらよいのかわからない(下記に考えてみた正規化を貼ります)
0. 地図を使うため、PostgreSQLの方がよいと言われたが、まだ使った事がないため、1000件程度のデータベースを作成する場合でも、PostgreSQL方がいいのか、また、 PostgreSQLがいい場合、どの言語(PHP,Javascript,など)と組合せて作るのがいいのかも教えて頂けたら幸いです。
現在の状態(Excelのまま)
id | 商品名 | 商品の形 | 商品の色 | 都道府県 | 市町村 | 都道府県の統計データ | 市町村の統計データ |
---|---|---|---|---|---|---|---|
01 | 商品01 | 丸型 | 赤 | 北海道 | 北海道の市町村01 | 統計データ | 統計データ |
-- | 商品最後 | 三角 | 青 | 沖縄 | 沖縄の市町村最後 | 統計データ | 統計データ |
変更後の状態(どう正規化するのか検討中)
id | 商品名 |
---|---|
01 | 商品01 |
-- | 商品最後 |
id_property01 | 商品の形 |
---|---|
01 | 丸型 |
02 | 三角 |
03 | 四角 |
-- | -- |
-- | 最後の形 |
id_property02 | 商品の色 |
---|---|
01 | 赤 |
02 | 青 |
03 | 黄色 |
-- | -- |
-- | 最後の色 |
id_prefecture | 都道府県 | 都道府県の統計データ |
---|---|---|
01 | 北海道 | 統計データ |
02 | 青森 | 統計データ |
-- | 以下都道府県続く | 統計データ |
47 | 沖縄 | 統計データ |
id_municipality_town | 市町村 | 市町村の統計データ |
---|---|---|
01 | 北海道の市町村01 | 統計データ |
02 | 北海道の市町村01 | 統計データ |
-- | 以下市町村名続く | 統計データ |
-- | 沖縄の市町村最後の番号 | 統計データ |
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/13 04:18
2017/11/13 04:29
2017/11/13 04:55