こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

データベースの基本的な設計

初心者です。店舗1000以上の電力供給会社の電力の使用量と使用料金を管理するデータベースの設計を考えています。
現在、自分が考えた案が下の画像です。(赤字:主キー)
現在ネックになっているのが、
供給会社ごとに、フィールドの内容と数がことなっており、例えば以下のようなフィールド、
供給会社Aは、お客様番号というフィールド名で、「6桁-2桁-6桁」
供給会社Bは、契約者番号というフィールド名で、「10桁」
供給会社Cは、お客様番号、契約者番号などのようなフィールドは存在せず。
になっているとします。
この場合、供給会社がすくなくとも100社以上あり、その分だけのテーブルを用意するという考えに行き着いたのですが、
これは正規化の考え方として正しいでしょうか。考え方1、2の考え方に欠点がある場合は、その指摘とベストな設計のご教授して欲しいです。

投稿日時 - 2018-03-09 14:12:17

QNo.9476117

困ってます

質問者が選んだベストアンサー

>業務とは関係ないです。

ということですので少しアドバイスすると、このデータベースは「何のために必要なのか」、つまり、目的を最初に設定しましょう。質問のようなデータをデータベースにしてやりたいことは何でしょうか?

ぱっと思いつくのは、全店の電力使用料金の月毎、4半期毎、年毎などの合計額を求める、各店ごとの年間の合計使用量を求める、使用量・料金の店舗毎月毎のランキングを求める…など考えられますよね。そうした時に、このテーブル設計でそれらのデータをSQLで出力できるか? と考えてみてください。

少なくとも、使用量と料金が電力会社毎にバラバラのテーブルに格納されていたら、何の用途にも使えないということがすぐにわかると思います。

投稿日時 - 2018-03-09 15:06:14

お礼

回答ありがとうございます。
供給会社番号からテーブルを特定できないから、
考え方1、2ともに基の部分からまちがっているということですね。
1から練り直してみたいと思います。

参考書などでよく見かける例では、フィールドがきれいに決めれた題材があると思いますが、
現実は、フィールドはもっと煩雑で一筋縄でいけない条件だったりすることは多々あると思います。
上記に似た例や、ほかにも参考になるような題材があればご教授願いたいです。

投稿日時 - 2018-03-09 16:42:24

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

データ・テーブルのフィールドは下記のように共通にして1種類でいいのでは?
供給会社によって存在しないフィールドはspace(または、"NO"などの文字)で管理してはどうでしょうか。
-----
供給会社番号
店舗番号
年月
明細番号
お客様番号
契約種別
契約電力
契約番号
契約種別
使用量
使用料金
-----

投稿日時 - 2018-03-09 17:01:41

お礼

回答ありがとうございます。1つに放り込むということですが、
供給会社が100会社存在する場合、100種類のフィールドが必要となり、
1つのテーブルに、使用量や金額は共通化できそうですが、契約番号などは、
最悪100個のフィールドが必要となり、非現実的にように見えます。
また、契約番号と無理やり共通化させると、異なる入力の定義(上記の例:6桁+2桁+6桁 と 10桁)が
同時に存在することになりそうです。

投稿日時 - 2018-03-09 17:17:48

ANo.1

念のため確認ですが、この内容、学校の課題とかではなく実際に業務として設計を受注している仕事だとしたら、お客様との契約上の守秘義務違反になると思うのですが、大丈夫なんですか?

投稿日時 - 2018-03-09 14:43:31

補足

業務とは関係ないです。
上記の項目はすべて、架空、適当に考えたフィールドです。
データベースを勉強している状況で、この場合を想定した場合を、
ふと考えたとき、疑問が生まれました。

投稿日時 - 2018-03-09 14:52:59

あなたにオススメの質問