タグ

ブックマーク / tgk.hatenadiary.org (7)

  • SQLアンチパターン「健忘症的サロゲートキー」の提案 - 極北データモデリング

    SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る書の著者はサロゲートキーに対して消極的なのだから、「サロゲートキーの使い方がおかしい」とか言うのはお門違いなのかもしれないが... 健忘症的サロゲートキー 「SQLアンチパターン」第3章の記述を総合すると、著者はサロゲートキーについて以下のように考えていると思う。 自然キーの一意性・不変性が当てにならない場合に「自然キーの変更の影響を受けないようにする」という目的でサロゲートキーを導入する。 自然キーの重複を防ぐために、自然キーにUNIQUEインデックスを振ることを推奨する。 自然キーの代わりにサロゲートキーを外部キーにする。自然キーは他のテーブルに転

    SQLアンチパターン「健忘症的サロゲートキー」の提案 - 極北データモデリング
    t-wada
    t-wada 2013/03/21
    "自分で立てた前提を忘れている" "過去の事実を復元できない" "「自然キーとサロゲートキーのどっちがよいか」みたいな話はもう聞きたくねえんです" "もうちょっと解像度の高い議論があればぜひ伺いたい" #sqlap
  • SQLアンチパターン「IDリクワイアド」の再検討 - 極北データモデリング

    SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る話題のSQLアンチパターンの目次に「アンチパターン:すべてのテーブルにID列を用いる」とあるのを見て、大胆にもサロゲートキーを否定しているのかと思って読んでみたが、どうも主張がはっきりしない。論点が尽くされていないような... 「SQLアンチパターン」の主張 第3章には以下のようなことが書いてある。 「IDリクワイアド」アンチパターン IDリクワイアドは「すべてのテーブルに"id"という列名の無意味な連番の列を追加し、PRIMARY KEY制約を付与する」というパターンのこと。 何がいけないのか 自然キーにUNIQUE制約を付けないなら、自然キーの重複を

    SQLアンチパターン「IDリクワイアド」の再検討 - 極北データモデリング
    t-wada
    t-wada 2013/03/06
    "実際に工数がかさんでいるのなら、拒否反応を無視してよいわけがない" "「主キーが必要な理由」になっていない(ぜんぶUNIQUEインデックスで実現できるから)" "主キーにはDBMSによって変な制約が付くことがある" #sqlap
  • 2006-10-09

    例えば高校の建学の理念に「生徒の人格の陶冶を使命とする」と書いてあったとしても、お前性格悪いから留年なんて言われるわけがない。 だから建学の理念というのは建前。 高校が測定しているのは成績だけで、だから音は「教えたことを覚えさせるのが我々の使命」ということ。 うちの企業理念は「ITでお客様の成功に貢献すること」で、これが音なら「お客さんがうちのシステムを入れていくら儲かったか」を測定するはず。 これを測るのが難しいのは分かるが、「難しいからいくら儲けてもらったか調べません」というのなら企業理念は建前ということ。 受注金額と開発コストしか測定していないのなら「まず儲けるのはうちで、できればお客さんも儲かってくれたらいいなあ」あたりが音。 建前というものは要らないのかというと、絶対そんなことはない。すげえ重要。 ただ、建前はもろいから、みんなで必死に維持しようとしなくてはならない。何とか

    2006-10-09
    t-wada
    t-wada 2006/10/09
  • 極北データモデリング - ABD (Activity Based Modeling) の体系を想像する(1)

    羽生章洋氏のABD (Activity Based Modeling) とはいったい何か、唯一のまとまった資料 http://event.seasar.org/sc2006spring/viewAttachment.do?_pageName_=Materials%2FD4.ppt からその全体像を復元するシリーズ。 もちろんご人に伺えばいいんだけど、まずは自習から。 初回はざっと読んで分かった気になったことをメモする。全部俺理解だから正確な情報は原典を見てね。 今回は「ABDすると何が良くなるのか」という最重要な話題は避ける。それはABDで設計したデータベースに触ってから書く。 ABDで設計したら、データ構造はどうなる ABDでは、外部キーを、resourceだけでなくeventからも追放する。 つまり 売上ヘッダには顧客IDがない。 売上明細には商品IDがない。それどころか売上ヘッダI

    極北データモデリング - ABD (Activity Based Modeling) の体系を想像する(1)
    t-wada
    t-wada 2006/08/22
  • 楽々ERDレッスンを読む(2) - 第2部 RDBMS総論

    羽生氏の 楽々ERDレッスン (CodeZine BOOKS) のまとめ2回目*1。 第2部のポイントは、P-114からの「インピーダンスミスマッチの解決方法」。 その方法とは... P-115 お薦めしたいのがストアドプロシージャを利用することです。 では、ストアドプロシージャを使うと、どうしてインピーダンスミスマッチが解消するのか。 更新の改善 Javaの中でupdateステートメントを組み立てて実行するのを止め、ストアドプロシージャを作成して、Javaからは更新したいデータを引数として渡すのみにする。 そうすることで、Javaの中からデータベース関係の詳細を排除できる。これがストアドプロシージャ導入のメリットとされる。 P-117 「何という名前のストアドプロシージャを呼び出すのか」「パラメータの何番目に何を設定するのか」 だけを知っていれば、SQLは一切不要になります。そしてプロシ

    楽々ERDレッスンを読む(2) - 第2部 RDBMS総論
    t-wada
    t-wada 2006/08/07
  • 2006-06-02

    「一般的には、第3正規形まででよい」理由について書かれた貴重な記事をきちんと読んでみた。 素早く正規形を見抜く実践テクニック http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html 「なぜ第3正規形まででよいのか」の結論は以下の通り: テーブル構造からビジネスルールを排除すると、第3正規化までで正規化が完了する。 この記事でいうビジネスルールとは、要するに関数従属性・多値従属性・結合従属性とかのこと。 「ビジネスルールを排除する」とは、リアルワールドにあるxx従属性をDB上の制約として実装しないこと。 つまり、「ビジネスルール」という表現を避けて、ものすごく砕いて書くと、こういうこと: とりあえず第3正規形にして、まだ非完全正規形のテーブルがあったら、サロゲートキーを付ける。 そしたら完全正規形になる。 だ

    2006-06-02
    t-wada
    t-wada 2006/06/02
  • 楽々ERDレッスンを読む(1) - 第1部 DB設計総論 - 極北データモデリング

    羽生 章洋「楽々ERDレッスン (CodeZine BOOKS)」を読了したので3回に分けてまとめ。 まず第1部「DB設計総論」。 浅海氏智晴氏はこの第1部について「上級者向け」と書いてらっしゃるが、そんなことはない。 初めてDB設計をやる人は絶対に読んだ方がいいと思う。で、ここに書いてあることを論破できないなら、書いてある通りにした方がいいと思う。そういう意味で初心者向き。 第1部の要点は データ構造の設計時に、アイデンティファイア(ID)を導入する。 外部キーにするのはコードではなくアイデンティファイア。 これに尽きる。 で、なぜそう考えなくてはならないのか、が60ページにわたって詳細に書いてある。 コードとは 第1部で言う「コード」とは、コンピュータシステムの外で、ビジネス上の意味を持つ符号のこと。 携帯の請求書に印字された顧客番号とか、通販カタログの商品に与えられた商品コードとか、

    楽々ERDレッスンを読む(1) - 第1部 DB設計総論 - 極北データモデリング
    t-wada
    t-wada 2006/05/30
  • 1