数据库设计:获得更多可读行

时间:2017-03-27 12:52:43

标签: sql postgresql database-design

我正在为数据库创建表(使用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类型直接获取值,但我觉得它不太灵活。您认为我可以使用替代解决方案吗?

谢谢!

1 个答案:

答案 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