■ 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. ユーザーテーブル設計の例
- 安易なカラム追加の問題: ユーザーテーブルに
password
、line_id
、line_token
といった複数の認証情報を安易に追加すると、null
が増え、UNIQUE
制約が複雑になり、ビジネス側に不必要な制約を生み出す。- テーブル分割による解決: 認証情報ごとのライフサイクルが異なることを考慮し、
user
テーブルとauthentication
テーブルを分けるべきである。こうすることで、メールアドレス認証だけでなく、LINE認証などの新しい認証方式にも柔軟に対応できる。■ 4. まとめ
- データモデリングの価値: データモデリングのスキルは寿命が長く、複利で効く能力である。これは当面、AIに代替されない仕事である。
- 学びの重要性: データモデリングは正しく学べば身につくスキルである。過去の自分に誇れるよう、今、こだわり抜いた設計をすることが未来の自分を救うことになる。