sql >> データベース >  >> RDS >> PostgreSQL

開店時間をSQLデータベースに保存するにはどうすればよいですか?

    非常に柔軟で十分に正規化された方法は、各開始期間を1つの行としてテーブルに格納することです。開始期間は、開始する平日、開始する時刻、および継続する期間としてエンコードできます。各営業期間は、外部キーを介してレストランにリンクされています。

    CREATE TABLE opening_period
                 (restaurant integer,
                  weekday integer,
                  time time,
                  duration interval,
                  PRIMARY KEY (restaurant,
                               weekday,
                               time,
                               duration),
                  FOREIGN KEY (restaurant)
                              REFERENCES restaurant
                                         (id)
                              ON DELETE CASCADE,
                  CHECK (weekday >= 0
                         AND weekday < 7),
                  -- prevent overlapping opening periods
                  EXCLUDE USING gist (restaurant WITH =,
                                      tsrange('epoch'::timestamp + time + weekday * INTERVAL '1 days',
                                              'epoch'::timestamp + time + weekday * INTERVAL '1 days' + duration,
                                              '[)') WITH &&));
    



    1. ソース列のいずれかがtrueの場合、ブール値をtrueに集約します

    2. CodeigniterでmysqlANDORクエリを組み合わせる

    3. なぜ外部注文が正しく機能しないのですか?

    4. MySQLの数値に先行ゼロを追加する方法