サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
shiro-secret-base.com
ancestorには祖先としての自分自身のcomment_idを入れて、descendantにはその子孫に当たるcomment_idを入れています。 ツリー構造への参照や更新がしやすくなる このような閉包テーブルでコメント間の親子関係を保存しておくことで、いろんな要件を満たしたクエリ実行が簡単になります。 comment_id=1をスレッドとして、その子に当たるコメントを全て取得する場合 SELECT c.* FROM Comments c INNER JOIN TreePaths t ON c.comment_id = t.descendant WHERE t.ancestor = 1; comment_id=3を親とするコメント(comment_id=7)を新規追加したい場合 INSERT INTO TreePaths(ancestor, descendant) VALUES SELE
どうも、シローです。 今回は、特定の文字列に限定した列を定義する方法について、アンチパターン「サーティワンフレーバー」も一緒に紹介します。 特定の値を持ちうる列とは 例えばユーザ(Users)の権限(管理者かメンバーか)を表したい場合、Usersテーブルにメンバーの権限を表すuser_roleという列を定義するとします。 このuser_roleには管理者の場合はadmin、メンバーの場合はmemberという値を持ちそれ以外の値は格納しない(できない)ようにするにはどうすれば良いのか アンチパターン「サーティワンフレーバー」について 先にアンチパターンについて紹介します。 サーティワンフレーバーと呼ばれる設計方法では特定の値を入れるために 列にCHECK制約を入れる(MySQL8.0以降) 列をENUM型にする という手法を取りうることです。 僕の環境はMySQL5.7なのでENUM型のカラ
このページを最初にブックマークしてみませんか?
『shiro-secret-base.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く