我目前拥有的数据库设计有两个不同的表,用于保存其中一个表中特定字段所需的信息。
create table EventInfo (
id serial NOT NULL CHECK (id > 0),
title LongNameValue NOT NULL,
startingTime timestamp,
duration
primary key (id),
foreign key (e_id) references Event(id)
);
create table Events (
id serial,
endTime timestamp,
primary key (id),
};
我的问题是,
是否可以从duration
计算endTime - startingtime
字段?另外,你会怎么做呢?我在考虑使用interval
。任何帮助将不胜感激!
答案 0 :(得分:1)
在设计数据库时,应记住只有原始的规范化数据才能进入表格。
当您将“计算”的数据存储在表格中时,您可能会陷入不一致的情况。
计算的数据应该进入视图,程序甚至是应用程序级别。
如果我是你,我将 endTime 放在 EventInfo 表中,并使用计算出的持续时间列构建一个视图。
答案 1 :(得分:0)
计算列只能从同一列的列生成。
不可能有两个不同的表
答案 2 :(得分:0)
您可以查看功能来执行此操作。如果你:
CREATE FUNCTION duration("EventInfo") RETURNS interval LANGUAGE SQL AS
$$ SELECT .... $$;
然后你可以:
SELECT e.duration FROM "EventInfo" e;
它将按预期工作。