タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

sqlとpostgresqlに関するk-holyのブックマーク (2)

  • PostgreSQLで時間枠を適切に扱う設計 - そーだいなるらくがき帳

    はじめに Googleカレンダーのような時間枠を扱うシステムを設計する際、開始・終了時刻を管理するロジックは容易ではない。 しかし、PostgreSQLには 範囲型 があり、この機能を活用することで、開始時刻(begin_at)と終了時刻(end_at)を1つのカラムで扱えるようになる。 そこで稿では、範囲型を用いた設計と、その利点を紹介する。 時間枠を扱う難しさ まず前提として時間枠の扱いがなぜ難しいかを紹介する。 ソフトウェアデザインでやっている連載、実戦データベースリファクタリングの 【12】厄介な時間枠に向き合う でも紹介したが、時間の範囲を比較するときが難しい。 範囲の重なりには以下の種類がある。 包含:範囲Aが範囲Bを完全に含む 重複:範囲Aと範囲Bに共通点がある 隣接:範囲Aと範囲Bが隣り合う 時間枠の扱いはSQLに限らず、プログラミングの題材として難易度が高い。 特に重複

    PostgreSQLで時間枠を適切に扱う設計 - そーだいなるらくがき帳
    k-holy
    k-holy 2024/12/10
    範囲型便利そう…インデックスが効いて、排他制約でダブルブッキング排除も保証できるのか。ビューとして実装することでアプリケーションからも扱いやすくなる。なるほど…新規案件はPostgreSQLにしよ…。
  • 履歴テーブルから最新の1件を取ってくる方法 - そーだいなるらくがき帳

    例えば次のようなテーブルがあったとする。 -- PostgreSQL CREATE TABLE history ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL, data TEXT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- MySQL CREATE TABLE history ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, data TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT INTO history (user_id, data, created_at) VALUES (1, 'First

    履歴テーブルから最新の1件を取ってくる方法 - そーだいなるらくがき帳
    k-holy
    k-holy 2024/12/10
    いまだに脳がSQL92で止まってる上に長らくMySQLばかりだったので、Window関数全然使いこなせてない…。DISTINCT ONめちゃ便利そう。新規案件はPostgreSQLにしよ…。
  • 1