/note/tech

DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所

要約:

■ 1. AIとテーブル設計

  • AIによる代替は不可: AIはテーブル設計を完全に代替できない。なぜなら、AIはドメインを理解していないため、ダブルループ学習(前提を見直す)ができず、将来の変更を想像できないからである。
  • AIの利用方法: AIはシングルループ学習(結果に基づいて行動を変える)に長けている。この特性を活かし、AIには単純なタスクを任せ、設計の根本的な部分や前提を見直す作業は人間が担うべきである。
  • AIによるデータベースの肥大化: AIは「それっぽい」がEasyでDirtyな設計を提案する傾向がある。これに安易に従うと、開発速度は上がるが、データベースが急速に肥大化し、将来の仕様追加に耐えられなくなる。

■ 2. 正規化と「Simple is beautiful」の原則

  • 正規化の重要性: データベースの道は正規化に通じる。正規化のコツは「事実だけを保存する」「重複がない」「不整合がない」「nullがない」ことを意識することである。
  • Unix哲学との共通点: 正規化は、「Small is beautiful」(小さなものは美しい)や「Make each program do one thing well」(一つのことをうまくやらせる)というUnixの哲学に通じる。
  • SimpleとEasyの違い:
    • Simple: 変化に強い設計。一つの責務に集中させること。
    • Easy: 安易で楽な設計。場当たり的な対応。
  • 目指すべき設計: EasyではなくSimpleを目指すことで、変化に強い設計につながる。

■ 3. ユーザーテーブル設計の例

  • 安易なカラム追加の問題: ユーザーテーブルにemailpasswordline_idline_tokenといった複数の認証情報を安易に追加すると、nullが増え、UNIQUE制約が複雑になり、ビジネス側に不必要な制約を生み出す。
  • テーブル分割による解決: 認証情報ごとのライフサイクルが異なることを考慮し、userテーブルとauthenticationテーブルを分けるべきである。こうすることで、メールアドレス認証だけでなく、LINE認証などの新しい認証方式にも柔軟に対応できる。

■ 4. まとめ

  • データモデリングの価値: データモデリングのスキルは寿命が長く、複利で効く能力である。これは当面、AIに代替されない仕事である。
  • 学びの重要性: データモデリングは正しく学べば身につくスキルである。過去の自分に誇れるよう、今、こだわり抜いた設計をすることが未来の自分を救うことになる。