FOREIGN KEY 约束的“多态性”

2024-04-06

表中有这样一个字段:

room_id INT NOT NULL CONSTRAINT room_id_ref_room REFERENCES room

我有三张两张桌子,分为两种房间:standard_room and family_room

如何做这样的事情:

room_id INT NOT NULL CONSTRAINT room_id_ref_room REFERENCES standard_room or family_room

I mean, room_id应该参考either standard_room or family_room.
可以这样做吗?


这是我一直在使用的模式。

CREATE TABLE room (
    room_id serial primary key,
    room_type VARCHAR not null,

    CHECK CONSTRAINT room_type in ("standard_room","family_room"),
    UNIQUE (room_id, room_type)
);

CREATE_TABLE standard_room (
    room_id integer primary key,
    room_type VARCHAR not null default "standard_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "standard_room"
);
CREATE_TABLE family_room (
    room_id integer primary key,
    room_type VARCHAR not null default "family_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "family_room"
);

也就是说,“子类”通过类型鉴别器列指向超类(这样指向的基类是正确的类型,并且超类的主键与子类相同) 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FOREIGN KEY 约束的“多态性” 的相关文章

随机推荐

  • Android 当主题为深色时更改品牌启动背景颜色

    我在我的应用程序中实现了深色主题 一切正常 当系统处于深色模式时 应用程序也处于深色模式 反之亦然 问题是品牌启动 我有 2 个可绘制文件 Dark
  • 如何使用 ruby​​ 通过 ssl 通过 smtp 发送邮件(不使用 Rails,gmail 没有 TLS)

    我想要的只是使用 SSL 通过 SMTP 从我的 ruby 脚本发送电子邮件 我只找到了从 Rails 或使用 TLS 的 Gmail 执行此操作的示例 我发现人们谈论 ruby 1 8 5 的 SMTPS 支持 但是libdoc http
  • 显示没有索引的 pandas 数据框

    我想在没有索引列的情况下显示此数据框 我正在使用制表模块来更好地可视化数据 但不想在这里看到索引 我在 dftabulate 中尝试了index False 但它不接受这个参数 import pandas as pd from tabula
  • 如何在 jasper 报告中将文本字段旋转 90 度?

    我正在使用 iReport 设计器创建一些报告 在生成报告时 我遇到一个要求 必须以 90 度旋转显示静态文本字段 标签 如下图所示 我在互联网上搜索以获得解决方案 我发现 jaspersoft 不支持文本字段旋转 我在解决方案中读到了这个
  • 从 Admin SDK 调用 Firebase Callable Cloud 函数

    我有一个 Firebase 云函数 我想创建一个可调用函数 以便我可以从内置身份验证的 Web 客户端调用它 但我也想使用 Admin SDK 从我自己的后端代码调用它 特别是来自 Java 如果这很重要的话 我看到协议已记录 https
  • 在 Android 中的 Fragment 中使用 Google 地图

    我正在尝试在片段中加载 Google 地图 无论我尝试实现什么解决方案 我都会不断收到相同的错误 我已经解决了所有类似 如果不相同 的问题 并尝试按照前几个最佳答案的建议进行操作 但遗憾的是没有运气 因此 如果您能帮助我 我将不胜感激 我的
  • java 中像 read() 这样的 I/O 方法如何将线程置于阻塞状态?

    因此 如果我理解正确的话 当我们对对象调用 wait 时 线程会进入等待状态 而当它等待对象上的锁时 例如尝试进入同步块或方法时 线程会进入阻塞状态 像 read 这样的 I O 方法如何将线程置于阻塞状态 我理解为什么它必须处于阻塞状态
  • OpenGL - 固定管线着色器默认值(使用着色器模仿固定管线)

    谁能给我提供类似于固定功能管道的着色器 我最需要默认的片段着色器 因为我在网上找到了类似的顶点着色器 但如果你有一双应该没问题 我想使用固定管道 但具有着色器的灵活性 因此我需要类似的着色器 以便我能够模仿固定管道的功能 非常感谢 我是新来
  • 基本 javascript 警报在英特尔 XDK 代码编辑器中不起作用

    我正在从一个新的空白英特尔项目开始 我什至还没有开始编码 我只是设置文件树并确保 html 和 javascript 页面通过正确的锚点和脚本路径连接 但我的第一个 js 文件无法工作 我提供了测试代码和错误的屏幕截图 我知道语法是正确的
  • tkinter 中的框架未彼此堆叠

    我在 tkinter 中将 页面 堆叠在一起时遇到问题 我有一个主Frame包含两个子帧 两个子帧都包含不同的信息 第一个子帧包含Listbox和几个按钮 位于主框架的左侧 第二个框架应该包含不同的 页面 现在有两个 并让它们填满整个框架
  • 重定向到 HTTP 非 www 到 HTTPS www htaccess

    我想使用 HTTPS 协议从任何方向重定向到我们的网站 但有些重定向不起作用 我要这个 http www site co TO https www site co http site co TO https www site co 这是我的
  • 如何在同一页面(列表/创建)MVC3中使用@model IEnumerable<>和@model<>

    假设我有一个 Location 类 并且我正在使用 MVC3 创建一个脚手架列表 index cshtml 索引 html 页面使用 model IEnumerable 如果我想向列表中添加新位置 请按 创建 然后使用 model Proj
  • Android - 如何确定调用应用程序的包名称

    我最近遇到了这个问题 我找不到在我的活动中调用应用程序的包名称的方法 如果调用应用程序使用startActivityForResult 那就没问题了 我可以信赖Activity getCallingPackage 获取调用者的包名 但是当调
  • 如何使用 Rvest 抓取带有嵌套列的 HTML 表格?

    我在废弃带有嵌套列的 HTML 表时遇到了一个大问题 该表来自于香港入境事务处 https www immd gov hk eng stat 20220901 html 屏幕截图如下所示 我尝试用 rvest 来做 但结果很混乱 libra
  • ATS 应用程序传输安全:Webview 内的 HTTP url

    我们有一个在 Webview 中显示 HTML 内容的应用程序 目前提供给 Webview 的内容来自非安全域 从 iOS10 开始 它应该从安全域提供服务 因此在迁移之前需要消除一些疑虑 安全的 HTML 页面 https 是否也应该具有
  • 能否将两个给定的 XSD 数据类型连接成一种新的 XSD 数据类型?

    给定两种简单的数据类型 例如受限字符串type1 type2 是否有可能定义type3描述通过连接一个字符串形成的所有字符串type1字符串加一type2 string 例如 考虑
  • 超过最大百分比的日期

    我有一个如下所示的数据框 df lt data frame site paste0 site sort rep 1 5 20 date as Date paste0 sample 1 28 100 replace T sample 1 12
  • 正确使用断言

    您能否帮助我更好地理解 断言 与 引发异常 的正确用法是什么 每种场景什么时候合适 场景1 CODE public Context Algorythm algo if algo null throw new IllegalArgumentE
  • libxml2 无法从节点获取内容

    我在 C 中使用 libxml 这就是我创建 xml 的方式 xmlDocPtr createXmlSegment char headerContent char dataContent xmlDocPtr doc doc xmlNewDo
  • FOREIGN KEY 约束的“多态性”

    表中有这样一个字段 room id INT NOT NULL CONSTRAINT room id ref room REFERENCES room 我有三张两张桌子 分为两种房间 standard room and family room