我在设计数据库时遇到以下问题: 在我的EER图中,我有超类型实体A,有2个子类型实体B和C.
表格式如下所示:
Create table A {
attributes of A here,
ID int
}
Create table B {
attributes of B here,
ID int SERIAL
}
Create table C {
attributes of C here,
ID int SERIAL
表B和C中的ID引用表A来维护超类型关系。 我有一个数据列表,其中包含除了在读取数据时我必须自己创建的ID之外的所有属性(使用" create table as" -statement)。 我有这个问题:当我读入数据时,B和C的ID属性都从1开始计数到.... 我以为我希望B和C的ID不同。
我尝试在表A中添加" SERIAL" -keyword,但接下来是我的问题:如何将该ID转换为B或C?
答案 0 :(得分:2)
使用继承而不是一对多关系?
http://www.postgresql.org/docs/current/static/ddl-inherit.html
或者你可以在两个表中使用相同的序列
CREATE SEQUENCE A_seq;
CREATE TABLE B (
id INT NOT null DEFAULT nextval('A_seq'::regclass) PRIMARY KEY
);
CREATE TABLE C (
id INT NOT NULL DEFAULT nextval('A_seq'::regclass) PRIMARY KEY
)