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

PostgreSQL-使用继承而不是引用来建模OOP继承的优缺点?,sql,postgresql,relational-database,rdbms,Sql,Postgresql,Relational Database,Rdbms,使用参考资料: CREATE TABLE Users ( id int primary key, name text ); CREATE TABLE Moderators ( role int, userid int references Users(id) ); 使用继承: CREATE TABLE Users ( id int primary key, name text

使用参考资料:

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

CREATE TABLE Moderators (
    role     int,
    userid   int references Users(id)
);
使用继承:

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

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

除了查询语法上的差异外,这两者在性能和可伸缩性上有什么区别吗?

PostgreSQL中的继承是非常古老的产物。现在的PostgreSQL是关系数据库,而不是OOP数据库


如果您的模型只是面向对象的,那么您可能不会接触到一些不需要的人工制品-但是当您尝试混合使用这两个模型时,您可能会遇到一些问题-引用完整性约束无法很好地支持继承,并且您可能会发现一些其他问题。OOP方式不被使用,也不是首选方式——它只是历史文物。

是的,存在差异,但取决于查询类型,哪种查询效果最好。使用引用的缺点是版主数据分为两个表。但优点是所有基本用户信息都在一个表中。通过继承,版主的所有数据都在一个表中,用户表只包含普通用户。就我个人而言,我会使用一个单一用户类别的设计,并给予这些用户特权。