Irohabook
0
357

web開発におけるMySQLの方針まとめ(外部キー制約の禁止、多対多の禁止など)

1 億件以上のデータを扱う中〜大規模のデータベースを設計している人に向けた MySQL の現実的な方針。

この記事は気づいたことをまとめたリストです。情報の正確性や妥当性は保証できません。

MySQL の最重要ルール

  1. 水平シャーディングを最初から考慮する
  2. すべてのテーブルで PRIMARY KEY を設定する
  3. NULL は許可しない
  4. 外部キー制約の禁止
  5. 多対多の禁止
  6. 一対一の禁止

MySQL の指針

  1. ビジネスロジックに相当するものは JSON で保存する

命名規則

  1. テーブル名は単数形にする
  2. カラム名はスネークケースにする
  3. 妙な接頭語をなるべくつけない
  4. 数値型は unsigned のありなしを厳格に定める
  5. datetime でなく timestamp にする

サンプル

`id`           int(11) unsigned    NOT NULL AUTO_INCREMENT,
`status`       tinyint(1) unsigned NOT NULL DEFAULT '0',
`author`       json                NOT NULL,
`title`        text                NOT NULL,
`date_created` timestamp           NOT NULL DEFAULT CURRENT_TIMESTAMP,
`date_updated` timestamp           NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

MySQL のシャーディング規則

  1. シャードのデータ数はだいたい同じになるようにする
  2. 剰余など原始的な方法でデータを分割する
次の記事

MySQLの基本