PerlとMysqlでWebアプリケーションを構築しています。
その中で銀行口座のような入金・出金・残高・日付・摘要のような項目があります。
実際はお金ではなく、ポイントなので
入ポイント・出ポイント・残高ポイント・摘要です。
(日付・摘要はここでは問題ではありません)
そこで本題なのですが、こういったDBを設計する際にフィールドは
入ポイント・出ポイントの2つにして、残高は出力する際に計算するのがいいのか
それとも
入ポイント・出ポイント・残高ポイントの3つにして、インサートするさいに
毎回前残高を取得して、計算後インサートするのがいいのでしょうか?
※ちなみに会員用のシステムなのでその他にIDフィールドなどがあるのはここでは割愛しております。
不明な点や不足情報があればご指摘ください。
恐れ入りますがよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>ここでおっしゃっている源泉というのはどういった解釈をすればいいのでしょうか?
源泉は、そのデータが発生したそもそもの要因と考えていました。
>ブラウザ上で表示したい内容は~~
失礼しました。
売上の履歴も含めて表示させたいってことですね。
てっきり、1ユーザー1レコードで、出ポイントと入ポイントは
それぞれ変動するたびに計算するデータ構造だと思い込んでました。
すみません。(Yahooや楽天の残ポイント表示みたいな感じ)
select ( sum( 入ポイント ) - sum( 出ポイント) ) AS 残ポイント
from ターゲットのテーブル
group by ユーザーID
こんなかんじで・・・
履歴をそのまま表示させるということでしたら、
残ポイントがあったほうがいいかもしれませんねぇ・・・
ちなみに、私が上記設計をすると断見してしまったのは
Yahooポイントの獲得情報を真似てのことでした。
Yahooの場合、
◆合計表示場所
-----------------------------------
利用可能ポイント:9999
-----------------------------------
◆履歴
-----------------------------------
取引日:9/1 1000
取引日:9/2 -500
取引日:9/3 2000
取引日:9/4 -600
取引日:9/5 -200
-----------------------------------
こんな感じで履歴部分と合算部分がわかれてます。
ユーザー数が半端ないので、履歴部分は月単位、合算部分は夜間のストアド等で計算していると
推測します。
画面設計が既に出来上がっていて、エンドユーザーがどうしてもそういった表示をしたい
ということでしたら、後々のためにも残ポイント列を持たせておいたら安心ですね。
スタンダードというものを提示できずに申し訳ございません。
ありがとうございます。
>ちなみに、私が上記設計をすると断見してしまったのは・・・
いえ、目からうろこです。
私が勝手にこういったものは通帳のように毎回残高を表示するものかと
解釈していただけで履歴部分と合算部分をわけて表示すればいいということが
気がつきませんでした。
楽天ポイントの履歴を先ほど確認しましたらまさしく
ポイントの+か-しかないですね。
ありがとうございました。
助かりました。
すばらしい回答ですが、締め切らずもう少し他の回答もまってみます。
No.4
- 回答日時:
回答というより補足なので、参考までに読んでください。
>もちろんさかのぼって修正ということもありえますね。
そうしたシステムもあるかと思いますが、事実の記録に基づいたシステムでは基本的にはありません。
(データが確定する処理が何段階もあるような場合は途中修正ができるものもあります)
事実の訂正も訂正のデータを入力することによって記録します。
銀行の取引でもそうなっていますよね?(実際に紙に記録した通帳の訂正はできないので)
そうすることで、正確な事実の記録やデータ改竄の防止だけでなく、計算がシンプルになるというメリットもあります。
No.3
- 回答日時:
システム上の残高というのは最初からの積み上げです。
1/1 入:5000
2/1 出:500
3/1 入:1000
だとして、電算上さかのぼって処理をする可能性は十分あります
1/15 出:2000とあとから入れた場合、2/1の残高4500は2500に
3/1の残高5500は3500に更新されなくてはいけません。
そのような連鎖的な更新が起こらないよう、入出データのみで処理します
ただし、ご指摘の通りシステムの運用期間がながくなると相応の負荷がかかります
そこで、システム的にある期間以前には遡って処理できないような締め処理をいれます
そうすることで締めデータの残高とその後の入出データのみで現在の残高を表示できます
回答ありがとうございます。
なるほどですね。
もちろんさかのぼって修正ということもありえますね。
そのたびに全データを更新かけていたらたいへんですね。
一定の期間がきたら締めるという処理についてはたいへん勉強になりました。
参考にさせていただきます。
No.1
- 回答日時:
はじめまして。
いわゆる「ポイント残高」というのは計算によって導き出される数値ですよね。
源泉ではないので、基幹データとして扱う場合は不要だと思います。
残高の重要度によってかわると思いますが、
ポイントの残高をユーザーに指し示すだけの目的でつかうのであれば
入ポイント、出ポイントのテーブルをView化して
残ポイント込のテーブルを参照するようなアプリケーション設計に、私ならします。
わざわざ計算して入れるのも面倒だし、
源泉としてのデータじゃないものも使いたくない
という理由からです。
ただ、View設計が絡んでくる(このテーブルだけVIEWというのも反発のもとかと。)ので、そのへんの兼ね合いも含めて頑張ってください。
早速の回答ありがとうございます。
>いわゆる「ポイント残高」というのは計算によって導き出される数値ですよね。
はい、そのとおりです。
>源泉ではないので、基幹データとして扱う場合は不要だと思います。
すみません。
ここでおっしゃっている源泉というのはどういった解釈をすればいいのでしょうか?
>ポイントの残高をユーザーに指し示すだけの目的でつかうのであれば
>入ポイント、出ポイントのテーブルをView化して
>残ポイント込のテーブルを参照するようなアプリケーション設計に、私ならします。
ブラウザ上で表示したい内容は
入ポイント | 出ポイント | 残高ポイント
5000 | | 5000
| 500 | 4500
1000 | | 5500
のようになります。
いわゆるwhileで limit 0,50のように数を制限しながら出力しようかと思います。
会員一人あたりのレコードが数千とか膨大になったときに最初のレコードから数千行目のレコードを
ひとつひとつ計算しないと残高の表示はできないのでは?
わかりにくい説明かもしれません・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有高と在高
-
残高確認書の送付基準は・・・
-
計算式(残高)がー(マイナス)に...
-
全財産が5万円です 40歳ですが...
-
自分はバイク乗り(中型バイク)...
-
あるATMで2台あった機械が1台に...
-
CD、ADとは何の略でしょうか
-
キャッシュカードを作ってない...
-
銀行窓口のささいな態度にカチ...
-
銀行員の友人が私の預金額を調...
-
銀行員がお札を4枚ずつ数えるの...
-
銀行員のパンチラについて。女...
-
【日銀の金利上昇政策】で日本...
-
やってしまった。
-
ローソンでバイトをすることに...
-
UFJ銀行のエコ通帳の過去分って...
-
銀行員の来る理由
-
銀行員は他行を見れるの?
-
銀行の支店長って誰でもなれるの?
-
隠し金、どこがいい?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有高と在高
-
初歩的な質問で申し訳ありませ...
-
銀行のことです。 三井住友銀行...
-
与信残高、受信残高について
-
銀行口座の残高がマイナスにな...
-
残高確認書について
-
楽天プリペイドSIMの残高確認
-
暗証番号なしで通帳カードに入...
-
エクセル:未入力の行は合計を...
-
この問題についに「負の残高」...
-
FBとEBについて
-
残高確認書のかきかた
-
決算時の定期預金の利子について
-
切手の残数管理をしたいです
-
通帳にマイナスがつくのは何故?
-
仮受金が残ったままになっていた
-
借金をしてまで、趣味をする旦...
-
新聞の口座引き落としについて
-
固定資産の減価償却時の消費税...
-
図書券(カード)から穴が消えた?
おすすめ情報