我正在尝试创建categories
和subcategories
的层次结构。 ENUM
类型对我来说最有意义,但我想弄清楚如何创建表来建模我的数据。我有一个categories
列表。我还有一个subcategories
列表,它与该类别有1对多的关系。这是我的ENUM
。
CREATE TYPE categories as ENUM('Casting', 'Cutting');
CREATE TYPE casting_subs as ENUM('Composite', 'Metal', 'Plastic', 'Rubber', 'Foam');
CREATE TYPE cutting_subs as ENUM('Die Cutting', 'Flame', 'Laser', 'Plasma', 'Saw', 'Waterjet');
如何创建用于建模数据的表?
答案 0 :(得分:0)
实际上,在这里使用枚举很有意义。如果那是你真正想要的,那就是你已经正确地做了,即没有桌子。你可能想要的是一个分层表:
create table categories (
id serial primary key,
parent int references categories (id),
name varchar not null
);
开始填写:
insert into categories (name)
values ('Casting'), ('Cutting');
然后使用相关的id填充子类别,例如:
insert into categories (parent, name)
values (1, 'Composite'), (1, 'Metal');
要查询完整层次结构,您可以使用CTE:
http://www.postgresql.org/docs/current/static/queries-with.html