ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

DB

排他的リソースに対するスケジュールの重複判定をSQLでシュッとやる

DB

突然ですが、排他的にしか利用できないリソースに対するスケジュールの重複判定の問題を考えてみようと思います。 典型的には「ある会議室では同時に複数の会議を開催できない」というようなスケジューリングの問題です。 ある既存のスケジュールを下の図の…

関係モデル(Relational model)における剰余について

浮かんだ疑問 relational modelでdivideは定義されるのに、modulo(?)はなぜ定義されてないんだろう。R mod S = R - S × (R ÷ S)とかで定義できる気がする。 #数学わからん— Shunsuke OSA (@s_osa_) 2015, 3月 10 リレーショナルデータベース入門[新訂版] p.7…

RDB/SQLの制約を増やしたい

NOT NULLとかUNIQUEみたいな感じでIMMUTABLE制約欲しい。— Shunsuke OSA (@s_osa_) 2015, 2月 12 IMMUTABLE制約:UPDATEできない PERMANENT制約:DELETEできない みたいな制約があると、個人的にハッピーになれる気がする。

RailsにおけるDB制約のワナ

DBに制約を張る このようなテーブルがあったとします。 CREATE TABLE products( id serial NOT NULL, code varchar NOT NULL, price integer NOT NULL CHECK (price > 0), CONSTRAINT pk_products PRIMARY KEY (id) ); 各カラムにNOT NULL制約 priceにCHECK…

論理削除の必要性をひねり出そうとして失敗した

DB

はじめに このエントリは僕の平凡な考えを淡々と書いたものです。過度な期待はしないでください。 あと、部屋は明るくしてディスプレイから30センチは離れて見やがってください。 物理削除したくない! 外部キー制約を張っていない場合 削除したレコードを参…

「サロゲートキー vs 複合キー」という間違った対立

DB

DB設計についてググっていると、「サロゲートキーは使うべきではない」や「複合キーは使うべきではない」といったDBのキーに関する論争をよく見かけます。 それらを見ていると、多くの議論で「これって対比の軸がズレてないか?」と思いました。 正しい対比 …

RDBの素晴らしさに気づき始めたという話

リレーショナル・データベースの設計について思ったことをうだうだと書いてみます。 「そんな基本的なことを……」 「しかも、間違ってるし」 とかいろいろあると思うので、指摘していただけると嬉しいです。 そもそもの問題 僕がDBを触り始めたのはRailsでWeb…

PostgreSQL用データベース設計ツール3選

PostgreSQLを使ったわりと大きめのデータベースを設計することになったので、ER図を作成するツールについて調べました。 自分のために調べたことのメモなので「MySQLは?」とか訊かれても基本的にわかりません。 対象とするツール GUI Database Design Tools…