トランザクショントークンもどき。
こんばんは。
UFOは何度か見ました、あに山です。
やったー!
一応一山越えたぞー!(T_T)/
って訳で、でかい課題を終わらせました。
昨日の日記に書いたランダム文字列生成もつっこんで、
トランザクショントークンもどきも
一応動作したみたいですよ(^^)
(↑って、口調が他人事(笑))
ER図書くのに良いようなんで。
ER図書くのに良いようなんで。たぶん。
WEB+DB PRESS vol.5 の
「さわって実感リレーショナルデータベース設計」に載ってた。
ER図がすこしばかし載っとります。
ER図を書くのに(しつこいですが)良いようなんで、
だけどなんかなぁ。イマイチなんだよなぁ。
CREATE文とか発行してくれるのは有難いんだけど。
小学生の時、漢字テストで0点取りました(笑)
漢字は苦手なんで、こーゆーの有難いです。
毎日見ているデイリーポータルZで知りました。
トランザクショントークンもどき…とは簡単な話で、
サーブレットの方で…
String uniqKey = RandomStringUtils.randomAlphanumeric(10);
request.getSession().setAttribute("uniqKey", uniqKey);
…なんてランダム文字列をセッションに入れておいて。
それを受け取ったJSP側で…
<input type="hidden" name="uniqKey" value="${uniqKey}" />
※EL式を使用してます↑
…などと書いておくと、次回Submitボタン押した時
サーブレットで…
String uniqKey = request.getParameter("uniqKey");
…とかって、そのフォームのパラメータを受け取れる、と。
そこに加えて、セッションにもあるキーを取ってきて…
String uniqKeyInSession = request.getSession().getAttribute("uniqKey");
…これとさっきのパラメータを比較し、
同じだったら実行、違ってたらスルーって話。
if (uniqKey.equal(uniqKeyInSession)) {
// 実行内容
} else {
// スルーなり、二重押し忠告アナウンス設定するなり
}
// ここでまた新たなランダム文字列をセッションにセットする
私はこれに加えて、リクエストを受け取った時刻もセッションに入れておいて、
次回のリクエスト時に、現在時刻と比較し
あまりにも時間が経ってなかった場合も、スルーして
二重押し防止しまくってます。
さて。
そんな訳で、お次の課題です。
この学校の良い所は、
途中までは皆同じ課題をこなすんだけど、
今回終わらせた課題の後は、
それぞれの研究したい方向に勉強させてくれるのでありまして。
私は何を選択したかって?
いや、そりゃバリバリ苦手意識持ってるSQLのお勉強です(^^;
かくして、先生の用意してくださった本と課題項目を
コツコツ作業して、2日で終わる内容の70%程終えました。
今は与えられた架空の状況に対して、
DBのテーブル設計やって、それ用のDAOクラス作ってるところです。
そのところで初めて、
第3正規化とER図って言葉が出てきて調べているのですが。
前者は理解したけど、後者を書くのが難しい。
なんつーか、どのテーブルを基準にするのか次第で
1対多とかの関係が逆になったりするんじゃないかと。
うーん、そこがイマイチ理解できてませんねぇ。
テーブル設計自体は終わったんだけどねぇ。
そこからさらにDAOの実装をしようとすると
VOの設計で少々問題が起きて、悩み中。
って事は、正規化が実はうまくいってないんじゃないかと思ったり。
結構手強いもんだねぇ…。