タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

ERDに関するtorazukaのブックマーク (6)

  • 論理設計2 (関西DB勉強会) DecoBoco

    torazuka
    torazuka 2011/08/01
    関西DB勉強会さんの発表資料。T字形ER技法解説。(PDF直)
  • 代理キーは「スタイル」ではなく「テクニック」 - 設計者の発言

    データモデリングでは、複合キーに代わって単一項目の代理キー(サロゲートキー)を導入することがある。これは「モデリング上のテクニックのひとつ」ではあるが「モデリングのスタイル(基方針)」とみなすべきではない。その根拠を説明しよう。 まず、倉庫が複数あるとして、倉庫にはさまざまな商品が保管されるとする。それぞれの商品は倉庫毎の特定の棚に保管される(つまり、商品と倉庫の組み合わせで棚が決まる)ことになっているとする(在庫管理では典型的な業務要件だ)。この関係をデータモデルで表すとモデル1のようになる。横浜第1倉庫でA01の棚に保管されることになっている商品100の現在庫が250個であることが示されている。 このモデルをサロゲートキーにこだわって変形するとモデル2のようになる。 2つのモデルの形式上の違いはどこにあるのだろう。モデル1では、倉庫コード、棚記号、品番が一次識別子として置かれているゆ

    代理キーは「スタイル」ではなく「テクニック」 - 設計者の発言
    torazuka
    torazuka 2011/07/20
    サロゲートキーありきで(=スタイルとして)設計してはいかんというお話。
  • 「複合キー」と実装用フレームワーク - 設計者の発言

    テーブルの主キーの設定に関して「複合キーと代理キーのどちらが適切か」という議論がある。私の立場は明確で、 分析段階では必要に応じて複合キーを用いながらモデリングし、実装段階で環境の事情に応じて代理キーを導入すればよい。もちろん、モデルのとおりに実装することが許されるならば、それがいちばんよい。 というものだ。根拠を説明しよう。 以下のようなデータ要件があるとする。記号ではイメージしにくいという読者には、テーブルAが「社員」で、Cが「趣味」で、ACが「社員の趣味」と想像してもらえばよい。その場合の属性eは、各社員の各趣味に対する「好みの度合い(-2は大嫌い、2は大好き、とか)」くらいと考えてもらえばよい。要は a,b,c,d,e の5つの管理項目が見出され、項目間に b=F(a)、d=F(c)、e=F(a,c) の関数従属性が認められたという例だ。 [A] {a},  b + 100 aaa

    「複合キー」と実装用フレームワーク - 設計者の発言
    torazuka
    torazuka 2011/07/20
    "避けるべきなのは、個別の実装用フレームワークの枠組みを通して論理設計のあり方を帰納的に把握しようとすること" こういうメタな視点も持ってなかった。肝に銘じる。
  • ナチュラルキーを主キーにしてはいけない - 設計者の発言

    定期的に複合主キーの話題が盛り上がるのは楽しい。好きな話題なので便乗しよう。 「複合主キーを許すべきかどうか」の議論に関して私が理解できないのが、なぜか「ナチュラルキーを主キー(一次識別子)に含めてはいけない」という話とセットで語られがちな点だ。もちろん、ナチュラルキーを主キーに含めてはいけない。だめ、ゼッタイ。しかしこれは複合主キーの必要性とは無関係な議論であって、複合主キーを回避すべき理由にはならない。 ■ナチュラルキーと人工キー ナチュラルキーについて、公開中の販売管理システムのモデルで説明しよう。まず、商品マスタの主キーは「内部商品№」である。これは、追加されるたびに自動的に発番されてセットされる項目で、ユーザの目には触れない「人工キー」だ。「Row ID」と思ってもらえばいい。 [商品] 内部商品№、品名、{品番}、... いっぽうユーザの目に触れる項目は、「二次識別子」とされて

    ナチュラルキーを主キーにしてはいけない - 設計者の発言
    torazuka
    torazuka 2011/07/20
    2つ目の実装の危うさとして指摘されている内容を、忘れていた。論理要件から離れるほど、データの異常を抑制する機構が必要になるんだなぁ。
  • Rails時代のテーブル設計について - プログラマでありたい

    職でDB関係の設計やチューニングをすることもあるのですが、それについて最近思うこと。RailsやSeasarとかフレームワークは進化しつづけているのに、テーブル設計の方法論については進化に乗り遅れているんでないのというところ。例えばアプリ側の視点からすれば、業務コードを主キーに使うような下のような設計はもうありえないと思います。(ビジネスルールで決まる受注番号と、受注明細番号を主キーにする) 主キーには業務上で一意に識別されているコードではなく、意味もないIDを使いましょうというのが今の主流だと思います。(ですよね?)上記の図のケースだと、下のような形に置き換えるのが適当かと思います。 ただ屋でテーブル設計のとか読んでも、ほとんど10年前の設計のまま。(上の図のケースです。)私が知る限り、最近のフレームワークにまっちするようなテーブル設計の仕方を教えてくれるは、羽生さんの楽々ERD

    Rails時代のテーブル設計について - プログラマでありたい
    torazuka
    torazuka 2011/07/16
    そうか、そういえば、フラグってどう考えればいいのかな。
  • 楽々ERDレッスン一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    楽々ERDレッスン一覧
    torazuka
    torazuka 2011/07/16
    via sh2さん
  • 1