我在为PostgreSQL项目创建模式时遇到问题。创建SQL模式(postgresql)
这是一个社交网站,如果有个人资料,每个个人资料都有三种类型:通用,教育和就业情况,因此每个个人资料都需要不同的属性......我们如何在一个表中完成所有操作?
create type ProfileTypeValue as enum
('generic', 'education', 'employment');
create Profiles (
id integer
type ProfileTypeValue
....?
primary key (id)
);
,因为例如,如果它是一个教育资料,然后我们需要有机构名称等,或者如果它是一个就业的个人资料,那么我们就需要有雇主的名字属性等
是它最好只有3个不同的表格,每个配置文件1个类型,不知道这是否可能...但我觉得我需要有一个if语句说明它是否为profile,包含这些属性,或者如果它的配置文件包含这些属性,等等
+1,非常好的答案。就个人而言,我会选择2.选项3可以在Postgres中使用'hstore'数据类型来完成,这种数据类型非常高效,并且可以被索引。 – 2011-03-27 09:08:28
评论中的错字:hstore用于选项4(键值存储):http://www.postgresql.org/docs/9.0/static/hstore.html。 – 2011-03-27 09:18:44
@Aleski:你说得对。谢谢 – 2011-03-27 09:35:31