【アンチパターンその1】えびでんす新卒エンジニアが独立するまでの過程を発信しています。まとめ:ジェイウォーク(交差無視)こんにちは、えびじゅん(@ebijun1007)です。本シリーズでは、エンジニアなら必ず読むべきと言われている名著「SQLアンチパターン」から、システム開発に役立つアンチパターンを紹介します。1回目の本記事では、データベース論理設計のアンチパターンその1「jaywalk(ジェイウォーク)」について解説します。↓の画像を見て違和感や気持ち悪さを感じますか?ブログ記事(article)と編集者(author_id)を紐づけるテーブルです特になんとも思わなかったり、気持ち悪さはあるけどどう直して良いかはわからないという方はぜひ続きを読んでみてください。-weblio-横断歩道を無視して道路を横切るとか、そういった意味もあるみたいですがほ〜ん、で?DB設計に交通規則やら信号でもあるんかいな?っ思いますよね実はあったんですよ。ジェイウォーク=交差テーブルを使っていないという意味SQLアンチパターンにおけるジェイウォークは交差テーブルを使っていないという意味です。交差点を避けるのと、交差テーブルを避けるのを掛けてジェイウォークと名付けたようです。簡易的なテーブルを作りながら、ジェイウォークが発生している状況と、それを解決するために使う交差テーブルについて簡単に説明します。ジェイウォークが発生している状況まず適当なテーブルを作ります。イメージはブログ記事(article)と編集者(author)を管理するテーブル記事1を編集できるのはidが100の編集者、記事2を編集できるのはidが101の編集者という、ブログ記事と編集者が1対1になる状態です。ここまでは普通のテーブル構造です。既存のテーブル構造をイジることなく、author_idを追加しただけの簡単な修正です。残念なことにジェイウォークが発生してしまっています。何がイケてないの?1つのセルに複数の情報(2人分の編集者id)が詰まってしまっています。検索しにくい更新しにくいindex効かないという状態になります。データベース失格レベルです。どんな風に修正するのがよかったか?ジェイウォークの解決方法(=交差テーブルの使い方)ここでようやく交差テーブルの登場です。1つのテーブルにまとめていた情報を、交差テーブルに切り出します。することで、綺麗なテーブル構造を維持することができます。編集者を増やしたい場合は、交差テーブル(画像の場合だとarticle_author_table)のレコードを増やすだけで済みます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。未分類ABOUTこの記事をかいた人ebijun青森県出身。公立はこだて未来大学に進学し、プログラミングを学びました。新卒で入社前にロシアに飛ばされかけましたが、なんやかんや都内でWebエンジニアとして働いています。色々なところを転々と旅しながら生きるのが夢です。【アンチパターンその1】Rails-Tutorial用のDockerコンテナを1発で作るシェルスクリプトエンジニアを目指す学生は【逆求人】を利用しましょうRECOMMENDこちらの記事も人気です。(8)プロフィールえびじゅんえびじゅんです。Web系ベンチャーでエンジニアしてる新卒です。3年ぐらい働いてスキルつけたら、仕事辞めて旅に出るのが夢です。