データベース設計

MySQLのCOLLATION(照合順序)とは何か

MySQLのCOLLATIONを理解しないと検索は壊れる COLLATIONは何を決めているのか _ci と _bin の違い 日本語で何が起きるのか LIKE検索が効かない本当の理由 ORDER BYが変わる理由 COLLATIONが複数存在する理由 よくある危険な状態 リスクと注意点 どう設定すべ…

文字コード問題はなぜDBで起きるのか

「文字コードの問題」はアプリのバグではない ブラウザからDBまでの流れを整理する UTF-8は1つではない 変換が発生する瞬間 なぜ表示時ではなく保存時に壊れるのか アプリケーションは文字を理解していない よくある典型的な事故 文字コードと検索の関係 リ…

絵文字で壊れるMySQLの正体

MySQLで絵文字を入れた瞬間に壊れる理由 なぜ絵文字だけが問題になるのか MySQLのutf8は本当のUTF-8ではない なぜアプリではなくDBで問題になるのか utf8mb4とは何か よくある失敗 なぜ昔のMySQLはutf8mb4ではなかったのか リスクと注意点 向いている構成・…

「MySQLは簡単」という言葉が危険な理由

「MySQLは簡単」と言われる理由 最初は動く、そして後から壊れる データが増えた瞬間に起きること 制約を書かないと、何も守ってくれない 外部キーを使わない文化 インデックスも自動では最適化されない ORMを使っても解決しない なぜ「簡単」が危険になるの…

なぜ昔のMySQLはいい加減だったのか

昔のMySQLは本当に“いい加減”だったのか MySQLが生まれた時代の前提 設計思想:止まらないことが最優先 GROUP BYの曖昧さ ゼロ日付とNULL なぜ問題にならなかったのか 変化:Webが業務システムになった いい加減だったのではなく、役割が違った 現在との違い…

MySQLのutf8とutf8mb4はなぜ混乱が続いたのか

MySQLのutf8問題は「文字コードの知識不足」ではなく設計の歴史 MySQLのutf8は3バイトUTF-8 何が保存できないのか なぜこんな仕様になったのか スマートフォン時代と絵文字 utf8mb4の登場 なぜ何年も混乱が続いたのか インデックス長制限 よく起きる実害 安…