こんにちは!みなさんのお知恵をお借りしたいと思っています。
下記の要件を満たすDB設計をしたいです。
MySQL5.5 + Java 5で実装予定です。
システム概要
(1)ユーザはWebサイトにて、ポイントを購入し、ポイントを使用することでアイテムが購入できる。
(2)ポイントは常時、購入することが可能で、アイテムも同様に常時、購入可能である。
(3)ポイントには有効期限があり、購入日から有効期限(1年)が過ぎたポイントは無効となる。
(4)購入するポイント数はユーザが任意の値を入力することができる。
(5)アイテムを購入する際に必要なポイント数は、アイテムによって異なる。
(6)ポイントが消失するのは月末である。
(例.2013年7月に購入したポイントは2014年8月1日になると消失する)
(5)ユーザー数は300万程度
満たしたい要件
・現在のポイント残高はWebサイトにて常時閲覧可能としたい。
・当月に無効となるポイント数は常時閲覧可能としたい
・Webサイトをメンテナンスにして、バッチを流すなどの処理はなるべく避けたい。
お知恵を貸して頂けると幸いです。よろしくお願いします!
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ANO.2です。
うっかりしてました。
>⇒それを避けるためにバッチ処理を使わない設計にするとなると、
>ポイント残高テーブルを用意して、13か月分の項目を用意する。
の部分。月が変わると更新しなきゃいけないのですが、そのために
13か月分の項目に加えて、基準月を用意します。
基準月は、当月利用可能ポイントの当月がいつなのかを示します。
プログラムで読み込んだとき(ポイント照会も含む)
基準月が当月でなければ、13か月分の項目を順番にシフトして、
基準月を当月にして、更新してしまいます。
その後、画面表示なりの処理をする。
⇒集計がむちゃくちゃやりにくい構造になるので、やっぱり、
バッチ処理使ったほうがベターでしょうね。
注:集計ってなに?というと
今全員のポイント残高合計がいくら?
とか、顧客別のポイント一覧とかです。
No.2
- 回答日時:
要件を読んでいてまず、一番考える必要があるのは、
・ポイントには有効期限があり、購入日から有効期限(1年)が過ぎたポイントは無効となる。
ってことですね。
・販売サイトみたいなものですから、当然、返品もあるでしょう。
特に不良品返品で代替品がないので返金っていうケース。
ポイントを戻す必要あるのですが、
販売時は有効期限内だが、戻す時点で、有効期限が切れているポイントはどうします?
ま、有効期限を販売日から有効期限迄の日数で設定するのが親切ってものですが、
有効期限の例外ルールが出来上がってしまいます。
・ポイントが消失するのは月末である。
月末のいつ?
ポイント消失にバッチ処理を利用すると、バッチ処理中はシステム停止は不要でも、
決済停止しておかないと、不公平がでますよ。
(テーブルロックしてしまうと不公平はでないけど、
300万件処理する間に操作された決済処理がタイムアウトしないようにしておかないといけない。)
⇒それを避けるためにバッチ処理を使わない設計にするとなると、
ポイント残高テーブルを用意して、13か月分の項目を用意する。
例)
顧客A 当月利用可能ポイント、翌月利用可能ポイント・・・13ヶ月後利用可能ポイント
ポイント購入したら、当月利用可能ポイント~13ヶ月後利用可能ポイント迄全部に+
アイテム購入したら、当月利用可能ポイント~13ヶ月後利用可能ポイント迄全部に-
ポイント購入取り消しやアイテム購入取り消しは上記の逆。
なお、ポイント履歴の表示は書いていませんが必須の要件と思います。
それを実現するには上記のポイント残高テーブルと別にポイント履歴テーブルが必要。
例)
日付 顧客A 適用項目(ポイント購入/アイテム購入・・・) ポイント数(+/-両方)
とするか、
ポイント数を、受取ポイント数と支払ポイント数の2つにわけるか
(ポイント購入取消しなら受取ポイント数にマイナスの数字、
アイテム購入なら支払ポイントにプラスの数字 と表現が豊富なのでこっちのほうがいいかな。)
で、ひとつ疑問。
ポイント購入は、申し込んだら、ポイントがプラスされるのかな?
それとも、入金を待って、入金処理の最中にポイントをプラスするのかな?
たぶん、Webサイトなんだろうと思うので、ポイント購入申し込みと入金の2つの処理を独立させて
おかないと、申し込みはしたものの、入金できない(例えば銀行引き落としができないよぉとか)
場合に困るはずです。
・・・月末に申し込んで、月初に入金が済んだとき、有効期限はどっちで判定?
ま、カード決済のみで、カードの請求処理と連動させて、請求処理が成功したらポイントプラス
ということならあまり問題はでませんが、今度は、こちらのシステムが異常終了したときに
カードの請求を取り消す処理を考えておかないといけない問題もでてくるので・・・。
とまあ、質問を読んだときの感想、じゃない、ぱっと思いついたことを書きます。
(具体的にどうしようと思うのだが、こんな方法で大丈夫だろうかとかもう少し
ブレイクダウンしてあるほうが回答は書きやすいですね。
見当違いの方向かもと思いつつ上記の回答を書いちゃいますけど。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TikTokLiteで2台のスマホでポイ...
-
auの三太郎の日で先にaupayマー...
-
dポイント表示について
-
くらし応援事業商品券または電...
-
共同決済で付いたポイントにつ...
-
突然ポイントゼロに
-
ocnアプリ
-
取得ポイントの行方?
-
新潟市にある、ウオロクは原信...
-
ここで溜まったDポイントの使い方
-
vポイントpayの使い方
-
ドットと、ポイントの、違いを...
-
dポイントが増えてない
-
gooポイントって何の為にあるの...
-
SMART ICOCA
-
魔法のiらんどでのケータイ小説...
-
ハンディGPSについて質問で...
-
ポイント表示がそのままになっとる
-
ベストアンサー数が、とうとう7...
-
グーポイントは何か使えるんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
新潟市にある、ウオロクは原信...
-
くらし応援事業商品券または電...
-
vポイントpayの使い方
-
家で誰も私の味方がいません。...
-
TikTokLiteで2台のスマホでポイ...
-
ACCESS クエリ 正数の...
-
楽天ポイントは、代引き商品購...
-
1パーセントはイッパーセント?
-
エントリポイントとエンドポイ...
-
計装工事について質問です。 ポ...
-
ビックカメラのポイントってそ...
-
auの三太郎の日で先にaupayマー...
-
ポイントを割り勘?
-
JIS規格のポイント・フォントに...
-
私のTポイントカードお姉ちゃん...
-
エクセルで勤続年数に応じたポ...
-
ドットと、ポイントの、違いを...
-
共同決済で付いたポイントにつ...
-
decision points:決定点→決定...
-
友人に頼まれた買い物分のポイント
おすすめ情報