Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PostgreSQL:多个继承表(一对父母的一个子表)

PostgreSQL:多个继承表(一对父母的一个子表)
EN

Database Administration用户
提问于 2016-09-29 03:00:18
回答 1查看 4.3K关注 0票数 1

如果我有一个base表和2个或更多继承它的表,child1child2,我可以将一个记录插入到子表中,它将如您所期望的那样显示在base中。然而,我想知道的是,有可能在child1child2中都有记录吗?

例如,basevehiclechild1boatchild2car,我想插入一辆两栖车(实际上是一艘船和一辆汽车)。

我知道我可以用正常的方式,通过建立关系来做到这一点,但从理论上讲,如果可以像描述的那样做的话,这是很好的。

EN

回答 1

Database Administration用户

发布于 2017-01-03 14:14:39

  1. 我建议永远不要使用继承,即使在简单的单继承情况下也是如此。
  2. 不知道你为什么认为这不可能。

我绝对不会这么做的.如果你真的是受虐狂,你也有多重继承。来自继承文档

一个表可以从多个父表继承,在这种情况下,它具有父表定义的列的合并。在子表定义中声明的任何列都会添加到这些列中。如果同一列名出现在多个父表中,或者出现在父表和子表的定义中,则这些列被“合并”,因此子表中只有一个这样的列。若要合并,列必须具有相同的数据类型,否则会引发错误。合并后的列将拥有来自它所来自的任何列定义的所有check约束的副本,如果其中任何一个列定义为null,则标记为null。

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE vehicle ( name text );
CREATE TABLE boat () INHERITS (vehicle);
CREATE TABLE car () INHERITS (vehicle);

--ewww,
CREATE TABLE boatcar () INHERITS (boat,car);
NOTICE:  merging multiple inherited definitions of column "name"

INSERT INTO boatcar (name) VALUES ('amphibious car');

TABLE boatcar ;
      name      
----------------
 amphibious car
(1 row)

TABLE boat;
      name      
----------------
 amphibious car
(1 row)

TABLE car;
      name      
----------------
 amphibious car
(1 row)

TABLE vehicle ;
      name      
----------------
 amphibious car
(1 row)
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/150996

复制
相关文章
PostgreSQL 物化视图 与 表继承 的头脑风暴
OK PostgreSQL 的菜单上也有一个叫 Materialized views 的功能,同时PG 也有一个表 inheritance 的东西。而这两样东西可以解决数据应用中的很多问题。那怎么来应用PG 提供的这两个功能。
AustinDatabases
2019/09/12
1.9K0
PostgreSQL 物化视图 与 表继承 的头脑风暴
PostgreSQL - update语句怎么关联多个表
对于select语句,我们可以通过join/outer join来关联多个表;但是对于update语句,是不能直接通过join/outer join来关联多表数据的,这里仅针对PostgreSQL。
雨临Lewis
2022/01/11
5.2K0
POSTGRESQL 系统表 一个神秘的花园
​SQL SERVER  ORACLE  MYSQL 的系统表一个比一个多,系统表如同一个个小密探,如果你恰巧知道他们的名字,并且还知道他们的身世,那很快你就会如同找到一个蜜洞 secret broadcast, 然后就对你要操作的系统一目了然。
AustinDatabases
2021/01/07
1.8K0
一个interface可以继承多个interface_java语言支持单继承和多继承
搞Java也有两个年头多了 ,今天在修改程序时无意中发现,Java接口中继承了多个接口,哎,真是惭愧直到现在才搞明白。
全栈程序员站长
2022/11/01
4940
PostgreSQL PG序列 与 序列是否可以绑定到多个表的疑问
POSTGRESQL 表的自增类似ORACLE 的做法, 当然这不是说就是一样,只是类似. PostgreSQL的序列本身是需要创建的类似于一个数字序列的生成器,表中字段需要通过设置来获取序列给出的值, one by one .
AustinDatabases
2021/08/06
1.8K0
PostgreSQL  PG序列 与 序列是否可以绑定到多个表的疑问
将一个工作表拆分为多个工作表
最近已经不止一次被人问到:怎么将一个工作表拆分为多个工作表?一般这样的需求,是因为将1-12月的数据写在了一个工作表上,而现在又想将它拆分为12个单独的工作表,每个工作表单独一个月份.总结了一下,文艺
但老师
2022/03/22
4.4K0
将一个工作表拆分为多个工作表
零代码实现一对一表关系和无限主子表级联保存
在上一篇 表关系管理 中,介绍了订单中一对多、多对一、以及多对多关系,本文主要介绍一对一关系和无限主子表在crudapi系统中的应用。
crudapi
2021/08/21
7640
零代码实现一对一表关系和无限主子表级联保存
Postgresql表空间
不同的数据库表空间有不同的定义: 在 postgres 中,表空间 允许在文件系统中定义数据库对象存储的位置,实质上就是指定了一个目录。 与数据库的关系 在 postgres 中,一个表空间可以让多个数据库使用,而一个数据库也可以使用多个表空间,属于“多对多”的关系; 在 oracle 中,一个表空间只属于一个数据库,而一个数据库可以使用多个表空间,属于“一对多”的关系。
DB之路
2021/07/06
1.8K0
进阶数据库系列(十三):PostgreSQL 分区分表
在组件开发迭代的过程中,随着使用时间的增加,数据库中的数据量也不断增加,因此数据库查询越来越慢。
民工哥
2023/08/22
3.4K0
进阶数据库系列(十三):PostgreSQL 分区分表
PostgreSQL 用系统表来分析postgresql的问题
数据库中本身的系统表提供了对外展示当前数据库状态的作用,其中这些系统表可以监控系统的状态,查询执行计划的状态,以及作为服务器管理状态显示的一部分。
AustinDatabases
2020/05/26
1.1K0
DataTalk:是一个宽表好还是多个维表好?
0x00 前言 本篇的主题是关于数据模型的规范化和反规范化的讨论,其实也是一种常见的维度建模的设计和业务使用便捷性的冲突。 0x01 讨论 问题: 在设计数据表的时候,是一个宽表好,还是多个维度表好? 回答一: 数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义。首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题。从以上所提到的角度去看待问题,拆解以下几点因素: 拆表情况下多张数据表的查询SQL的编写难度有多大,是否会出现为了数据提取需要关联多张
木东居士
2018/05/25
5.6K0
PostgreSQL·账户表/余额表/消费储蓄表
本文节选自《Netkiller Architect 手札》 4.22.3. 账户表/余额表/消费储蓄表 此表适用于购物车等金钱来往账面等等。 -- Table: account -- DROP TABLE account; CREATE TABLE account ( id integer NOT NULL DEFAULT nextval('trade_id_seq'::regclass), no character varying(10) NOT NULL, -- 账号 balance
netkiller old
2018/03/05
1.2K0
聊聊PostgreSQL表膨胀
PostgreSQL Basic PG中的MVCC(多版本并发)设计目的是读不阻塞写。PG中的所有的insert和update操作都是创建新的一行数据;update和delete都不是立即删除旧版本无用的数据。tuple是否可见是由snapshot决定。 PG中追踪每个表的Block可见性是通过表的vm文件。Table或者Index的可用空间管理是通过表或者索引的fsm文件管理,它是一个2级的binary tree,最底层存储了每个page可用空间,最上层聚合最低层的信息。 PG目前支持多种
用户4700054
2023/02/26
1.8K0
聊聊PostgreSQL表膨胀
PostgreSQL创建表分析
脚本准备 创建表的脚本 CREATE DATABASE sampledb OWNER perrynzhou; GRANT ALL PRIVILEGES ON DATABASE sampledb TO perrynzhou; 数据登录脚本 psql -h 127.0.0.1 -d sampledb sampledb=# CREATE TABLE stu_xx_01(NAME TEXT NOT NULL,AGE INT NOT NULL); 表创建分析 表创建过程概述 服务进程接受SQ
用户4700054
2022/08/17
1.7K0
PostgreSQL·国家地区表的设计
本文节选自《Netkiller Architect 手札》 4.22. PostgreSQL 所特有数据库设计 4.22.1. 国家地区表的设计 +-----------+ | city | |-----------| |id | <---+ |name | | |description| 1:n |status | | |parent_id | o---+ +-----------+ 例 4.2. 递归查询实例
netkiller old
2018/03/05
2K0
dotnet 单元测试 Mock 让一个对象继承多个接口
在使用 Mock 的时候,可以设置一个 Mock 的对象继承多个接口,而不需要自己定义一个接口去继承其他的多个接口
林德熙
2021/01/18
5350
bootstrap-table 父子表 联动表 完整例子
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/90052468
程裕强
2019/07/02
7.1K0
bootstrap-table 父子表 联动表 完整例子
mysql单个表拆分成多个表
一.横向拆分 create table 新表的名称 select * from 被拆分的表 order by id limit int1,int2 int1为其实位置,int2为几条 注意:这样拆分后主键会失效手动让其主键生效即可所有要执行 alter table 新表的名称 modify 主键字段 int primary key auto_increment 二.纵向拆分 create table 新表的名称 select 需保留的字段 from 被拆分的表 拆分后原表都要保存 主要是把经常查的数据
小小咸鱼YwY
2020/06/19
3.8K0
使用Python将多个Excel文件合并到一个主电子表格中
本文展示如何使用Python将多个Excel文件合并到一个主电子表格中。假设你有几十个具有相同数据字段的Excel文件,需要从这些文件中聚合工作表。我们知道,手工完成这项工作效率非常低,而使用Python自动化合并文件将为你节省大量时间。
fanjy
2022/11/16
5.7K0
使用Python将多个Excel文件合并到一个主电子表格中
PostgreSQL表扫描方法解析
全表扫描函数在heapam_handler的接口函数为heap_getnextslot函数。该函数从磁盘上读取数据页到内存并将遍历页记录,将其存放到slot中返回。这个函数一次只获取一个记录,到达上层的ExecutePlan函数中循环调用ExecProcNode再次进入到heap_getnextslot函数获取下一个记录,依次类推,直到获得所有记录。
yzsDBA
2020/10/28
1.2K0
PostgreSQL表扫描方法解析

相似问题

PostgreSQL与表继承

10

继承PostgreSQL中的表和语法的视图

20

建立一对多父母的关系

10

PostgreSQL 10.6: Alter父表将阻塞所有子表?

10

PostgreSql中的表继承是否适合这种情况?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文