複数の(Teacher|Student)に紐付かないようにする。同時に紐付いてしまう可能性はある。テーブルの基底クラスを作れる場合は、【基底クラスに対して】外部参照するようにする。テーブルを拡張することを考える。アンチパターン例エイヤで一定数の列を追加してしまうパターン。探すクエリが複雑になります。同じ値が入ってしまう可能性があります。何より3つまでしか、興味のある分野を登録できません。下記のように従属テーブルを作成するのが、クエリも簡単に書け、拡張性も高い設計になる。メタデータトリプル(メタデータ大増殖):時間経過によってテーブルや列を増やすことを前提とした設計になっていないか?学校において「購入した備品を年ごとに効率的に参照したい」という要件があったとする。要件を満たすために、【年ごとに】購入した備品を格納するテーブルを作る(例:Equipment_2017)としてしまうのは、様々な問題に繋がる。年が変わるたびにテーブルを増やし、アプリケーションに修正を加える必要が出てくる。誤った年のテーブルにレコードが追加された場合に、それを移す際に一手間かかる。性を担保するのが難しく、同じ備品が複数のテーブルに挿入されることをDB側では防ぐことができない。(同様の問題は「テーブル」ではなく「列」でも発生する。参照性能を高めることだけ考えるのであれば、同一のテーブルで管理しつつも、年を表す列でパーティショニングする方法を用いる。主キーの従属テーブルを新たに定義する。まとめこの記事では、「SQLアンチパターン」の論理設計についてまとめました。第2弾「DB物理設計」編はこちらです。クエリ」編はこちらです。www.ketancho.net第4弾「アプリケーション設計」編はこちらです。www.ketancho.netまた、著者の方のお焚きあげ(今となってはこのパターンは少し違うよね)情報もあるそうなので、こちらについても最後にまとめられれば、と考えています。この記事は「私の理解はこうです」という内容になっています。気になる項目が見つかった方は、ぜひ本を読んでみてください。集中して読めば5時間程度で読み終わる内容だと思います。今年もよろしくお願いします。エ...2018-04-25「SQLアンチパターン」を避けるためのチェックリスト(サマリー版)これまで「SQLアンチパターン」本のまとめを書いてきました。はてなブログPro2児の父なITエンジニアです。好きなサッカーチームは川崎フロンターレです。その他、子育て、社会問題、シビックテック関連の記事についても書いていきたいと思います:)※各ポストは個人の意見であり、所属する組織の見解とは関係ありません。(1)月別アーカイブその他プライバシーポリシースターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。