Hemen öncesinde: Bu, bir mobil uygulamanın arka ucudur, bu nedenle saat dilimi ile ilgili soru şu şekilde ortaya çıkar.Çalışma saatleri için TIMESTAMP ZAMAN ZAMANI İHTİYACIM VAR MI?
Sadece bu kafamı alınamıyor. shop_times
numaralı telefonu kullanıyorum. Bu bilgileri günün hangi saatinden bir dükkanın açıldığı günün başka bir zamanına kadar saklıyorlar.
ben de bu shop_times
oldu veya geçerli olanı dönemde anlatır aralığını depolamak, hangi zamanda bir shop_offer
teklif edildi söylemek mümkün istediğimiz için. Bir shop_offer
kendisi Tüm bu aralıkları için TIMESTAMP WITH TIME ZONE
kullanıyorum anda. O geçerli olduğu bir dönem vardır ama gerçekten ihtiyacın varsa söyleyemem.
kullanıcı Londra'da ve teklifler ve kullanılabilir olduklarında süreyi görmek istiyorsa, ben sadece ona bir dükkan sahibi tarafından tanımlanan tarih ve saati gönderebilir. Ben de aslında burada saat dilimi bilgilerini gerekmez düşünüyorum bu nedenle nereye bu kadar yerel saati görüntüleyebilir. Öte yandan
, saat dilimi bilgileri olmadan ben isteyemem, çünkü örneğin " kaç saat bu mevcut olduğunu" Mobil kullanıcının farklı bir saat diliminde olabileceğini bildirmek için2016-03-22 08:00:00
yeterli değildir. Ancak, saat dilimini sadece
shop
varlığımın içine kaydedebilirim. Sonuçta, saat dilimini belirleyen dükkanın yeri. Dolayısıyla, bir mobil kullanıcı bu soruyu sorarsa, ona sadece mağazanın saat dilimini gönderebilir ve bunun cevabını hesaplayabilir.
Yani .. Ben saat dilimi bilgileri olmadan veya dönem bilgisini saklamalıyım?
CREATE TABLE shop_times (
-- PRIMARY KEY
id BIGSERIAL NOT NULL,
shop_id BIGINT NOT NULL,
CONSTRAINT fk__shop_times__shop
FOREIGN KEY (shop_id)
REFERENCES shop(id),
PRIMARY KEY (id, shop_id),
-- ATTRIBUTES
valid_from_day TIMESTAMP WITH TIME ZONE NOT NULL,
valid_until_day TIMESTAMP WITH TIME ZONE NOT NULL,
time_from TIME WITHOUT TIME ZONE NOT NULL,
time_to TIME WITHOUT TIME ZONE NOT NULL,
-- CONSTRAINTS
CHECK(valid_from_day <= valid_until_day),
CHECK(time_from < time_to)
);
CREATE TABLE shop_offer_time_period (
-- PRIMARY KEY
shop_times_id BIGINT NOT NULL,
shop_offer_id BIGINT NOT NULL,
shop_id BIGINT NOT NULL,
CONSTRAINT fk__shop_offer_time_period__shop_times
FOREIGN KEY (shop_times_id, shop_id)
REFERENCES shop_times(id, shop_id),
CONSTRAINT fk__shop_offer_time_period__shop_offer
FOREIGN KEY (shop_offer_id, shop_id)
REFERENCES shop_offer(id, shop_id),
PRIMARY KEY (shop_times_id, shop_offer_id, shop_id),
-- ATTRIBUTES
valid_for_days_bitmask INT NOT NULL,
price REAL NOT NULL,
valid_from_day TIMESTAMP WITH TIME ZONE NOT NULL,
valid_until_day TIMESTAMP WITH TIME ZONE NOT NULL,
);