我正在为数据库创建表(使用Redshift)来存储从多个源恢复的多个移动应用程序的事件。 问题在于它不是非常用户友好/显式,因为它强制它们对多个表进行查询以恢复列的值以理解它在行中的含义,因为事件表的行中的大多数数据都是如此是整数。
CREATE TABLE source (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE application (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE platform (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE country (
id serial PRIMARY KEY,
value string NOT NULL
);
CREATE TABLE event (
id serial PRIMARY KEY,
source_id integer REFERENCES source(id),
application_id integer REFERENCES application(id),
platform_id integer REFERENCES platform(id),
country_id integer REFERENCES country(id),
...
updated_at date NOT NULL,
value decimal(100, 2) NOT NULL
);
例如,我想使用ENUM类型直接获取值,但我觉得它不太灵活。您认为我可以使用替代解决方案吗?
谢谢!
答案 0 :(得分:-2)
尝试将所有内容组合成一个这样的表
CREATE TABLE Values (
kind integer
id integer,
value string NOT NULL
);
将kind和id设置为主键,您可以按种类和ID查找和访问您的唯一数据,您的类型将是类型,ID将是特定ID,并且两者都将是唯一主键
例如kind可以是
source = 1,
application = 2,
platform = 3,
country = 4