2016-09-22 197 views
2

使用引用:PostgreSQL - 使用INHERITS而不是引用来建模OOP继承的优点和缺点?

CREATE TABLE Users (
    id  int  primary key, 
    name  text 
); 

CREATE TABLE Moderators (
    role  int, 
    userid int references Users(id) 
); 

使用INHERITS:

CREATE TABLE Users (
    id  int  primary key, 
    name  text 
); 

CREATE TABLE Moderators (
    role  int 
) INHERITS (Users); 

除了在查询语法的差异,是有这两个的表现有什么区别,可扩展性?

+1

是的有差异,但它取决于查询哪些类型的效果最好。使用引用的缺点是主持人数据分成两个表。但优点是所有的基本用户信息都在一张表中。通过继承,主持人的所有数据都在一个表中,并且“用户”表仅包含普通用户。就个人而言,我会使用一种类型的用户的设计,并给这些用户privliges。 – Eelke

回答

2

PostgreSQL中的继承是相当古老的artefact。在这些日子里PostgreSQL是关系数据库,它不是OOP数据库。

如果你的模型只有OOP,那么你可能不会碰到一些不需要的文物 - 但是当你尝试混合两种模型时,你可以触摸一些问题 - 引用完整性约束并不能很好地支持继承,也许你可以找到其他一些陷阱。面向对象的方式不被使用,不是首选 - 它只是历史的人造物。