• 1003.pg概述-继承表


    继承是面向对象数据库中的概念。它展示了数据库设计的新的可能性。

    让我们创建两个表:表cities和表capitals。自然地,首都也是城市,所以我们需要有某种方式能够在列举所有城市的时候也隐式地包含首都。如果真的聪明,我们会设计如下的模式:

    CREATE TABLE capitals

    (

        name       text,

        population real,

        altitude   int, -- (in ft)

        state      char(2)

    );

    CREATE TABLE non_capitals

    (

        name       text,

        population real,

        altitude   int -- (in ft)

    );

    CREATE VIEW cities AS

    SELECT name, population, altitude

    FROM capitals

    UNION

    SELECT name, population, altitude

    FROM non_capitals;

    这个模式对于查询而言工作正常,但是当我们需要更新一些行时它就变得不好用了。

    更好的方案是:

    CREATE TABLE cities (

      name       text,

      population real,

      altitude   int     -- (in ft)

    );

     CREATE TABLE capitals (

      state      char(2)

    ) INHERITS (cities);

     在这种情况下,一个capitals的行从它的父亲cities继承了所有列(name、population和altitude)。

    列name的类型是text,一种用于变长字符串的本地PostgreSQL类型。

    州首都有一个附加列state用于显示它们的州。

    在PostgreSQL中,一个表可以从0个或者多个表继承。

    例如,如下查询可以寻找所有海拔500尺以上的城市名称,包括州首都:

    SELECT name, altitude

      FROM cities

      WHERE altitude > 500;

     

    在另一方面,下面的查询可以查找所有海拔高于500尺且不是州首府的城市:

    SELECT name, altitude

        FROM ONLY cities

        WHERE altitude > 500;

     

    其中cities之前的ONLY用于指示查询只在cities表上进行而不会涉及到继承层次中位于cities之下的其他表。

    很多我们已经讨论过的命令 — SELECT、UPDATE 和DELETE — 都支持这个ONLY记号。

  • 相关阅读:
    讯飞语音合成 简单使用
    android UI 操作 不要在子线程中操作UI
    把信送给加西亚
    android 二维码 扫描,生成,竖屏
    Android App签名(为apk签名)
    android 蓝牙 通信 bluetooth
    Android 蓝牙开发基本流程
    Android 使用 Application 简单介绍
    几个比较特殊的目录
    FHS目录配置下,常见的几个问题及解答
  • 原文地址:https://www.cnblogs.com/bufuzhou/p/14166176.html
Copyright © 2020-2023  润新知