質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1389閲覧

mysql のデータ保存方法について(欠けている情報の補完)

blossan

総合スコア154

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/12/21 14:02

御世話になります。
mysqlのデータ保存方法についてお聞きしたいことがあります。
例えば、電気提供会社が、電気使用量をサイトで見やすくグラフで紹介するサービスを展開するとします。

電気提供会社は、電気を供給している世帯全ての電気使用量を毎日集計しています。
世帯はidとして特定できるようにしています。

今回は、A世帯(id=01)とB世帯(id=02)の電気使用量をデータベースに保存する場合、

id 使用量
01 100
02 200

と保存されます。二日目には、

id 使用量
01 100
02 200
01 150
02 120

と増えていきます。
この際、サイトへ世帯A,Bがユーザー登録しました。個人情報をログイン時に入力して頂き、先ほどのデータベースにデータを補完します。このユーザー登録時にidを入力してもらいます。

id 使用量 名前 住所
01 100 A子 〇〇
02 200 B子 ××
01 150 A子 〇〇
02 120 B子 ××

このように、既存のテーブルの追加する際のupdateという命令を使えばよろしいでしょうか?

また、今後電気使用量を蓄積する際に、

id 使用量 名前 住所
01 100 A子 〇〇
02 200 B子 ××
01 150 A子 〇〇
02 120 B子 ××
01 110
02 100

と追加されるところを、

id 使用量 名前 住所
01 100 A子 〇〇
02 200 B子 ××
01 150 A子 〇〇
02 120 B子 ××
01 110 【A子】【〇〇】
02 100 【B子】【××】

と補完しながらできると聞きました。これはそのまま追加すれば自然とできる仕様でしょうか?そのまま入力してもうまく実行できないため、他の命令文が必用なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ユーザテーブルと使用量テーブルに分けて保存します。

ユーザテーブル
id 名前 住所
01 A子 〇〇
02 B子 ××

使用量テーブル
id ユーザid 使用量
1 01 100
2 02 200
3 01 150
4 02 120
5 01 110
6 02 100

データを取得するときに、
ユーザテーブルと使用量テーブルをjoinすると
以下のようなデータがとれます。

id ユーザid 使用量 名前 住所
1 01 100 A子 〇〇
2 02 200 B子 ××
3 01 150 A子 〇〇
4 02 120 B子 ××
5 01 110 A子 〇〇
6 02 100 B子 ××

投稿2016/12/21 15:10

lightwill

総合スコア962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blossan

2016/12/21 23:58

この場合は、ユーザーテーブルがすでに出来上がっていることが前提でしょうか?使用量テーブル一つで勝手に判断するのは難しいということでしょうか?
tacsheaven

2016/12/22 00:40

一つにするのではなく、それぞれ別の意味を持つ情報なので、分けておくべきだ、ということです。 使用料テーブルに名前を入れても、重複して無駄(idから一意に定まるので)ですし、例えば世帯主が変わって継承するなどした場合に、いちいち使用料テーブルを全部更新するのは無駄だとわかるでしょう。 ※より実務に即して言えば、ユーザーテーブルに有効期間を入れるなどして、「●月分まではAさん、翌月からは息子さんのBさんが新しい契約者」といったことを表現できるようにするなど必要になってきますが MySQL というより、RDBMS 全般における基本である「データの正規化」という考え方です。
blossan

2016/12/22 00:42

はい、とても参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問