5404某ITスタートアップで代表をやっています。基本的には技術関連の事を書きます。中国地方DB勉強会っていう控えめに言っても最高の勉強会があるんだけどそこで排他制約について教えてもらいました。第20回の中国地方DB勉強会が開催されました。自分、去年の7月から、仕事上で設計をするような業務が増えてきまして。そこで、役立った制約について、まとめて発表をしました。仕事では、MySQLしか使った事ない僕ですが、今回はPostgreSQLを中心にした内容になってます。私事...排他制約って雑に説明すると重なりを拒否する制約です。僕は使った事なかったのですが勉強会の中で事例紹介を受けて、めっちゃ便利だったのでここでご紹介します。どんなときに使うの?実際にはどんなときに重なりを制御したいかというとよく使うのは次の2つ。図面の重なり時間の重なり1つ目は幾何学的な図面を表現するときです。実際にPostgreSQLは円や四角をSQLで表現できます。地図上で特定の座標から半径100メートルの円を書き、その中に特定の円(場所)があればErrorにするような制約が書けます。そもそもSQLで位置計算もめっちゃ便利なので是非使ってみてください。第20回の中国地方DB勉強会が開催されました。自分、去年の7月から、仕事上で設計をするような業務が増えてきまして。そこで、役立った制約について、まとめて発表をしました。仕事では、MySQLしか使った事ない僕ですが、今回はPostgreSQLを中心にした内容になってます。私事...そして2つ目が時間の範囲での重なりの表現です。PostgreSQLには範囲型というのがあります。これは時間や数値の範囲を1つのカラムで表現できます。有効期限を表現する時、一般的にはstart_atとend_atのそれぞれのカラムを作成するのではないでしょうか。いう検索は非常に面倒です。範囲と範囲の含有が簡単に検索できます。このように色んな演算子を用意しているので簡単に表現できます。