CREATE TABLE IF NOT EXISTS public.slice_user
(
    id integer NOT NULL DEFAULT nextval('slice_user_id_seq'::regclass),
    user_id integer,
    slice_id integer,
    CONSTRAINT slice_user_pkey PRIMARY KEY (id),
    CONSTRAINT fk_slice_user_slice_id_slices FOREIGN KEY (slice_id)
        REFERENCES public.slices (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE CASCADE,
    CONSTRAINT fk_slice_user_user_id_ab_user FOREIGN KEY (user_id)
        REFERENCES public.ab_user (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE CASCADE
)
 
TABLESPACE pg_default;
 
ALTER TABLE IF EXISTS public.slice_user
    OWNER to superset_test;
  • 表名和模式:表名为slice_user,存放在public模式中。
  • 列定义
  • id:整数类型,非空,默认值为序列slice_user_id_seq的下一个值。
  • user_id:整数类型。
  • slice_id:整数类型。
  • 主键约束
  • slice_user_pkey:主键约束,作用于id列,确保每行的id是唯一的。
  • 外键约束
  • fk_slice_user_slice_id_slices:外键约束,slice_id引用public.slices表的id列。约束条件为:
  • ON UPDATE NO ACTION:当引用的slices表中的id更新时,不采取任何动作。
  • ON DELETE CASCADE:当引用的slices表中的id删除时,自动删除slice_user表中对应的行。
  • fk_slice_user_user_id_ab_user:外键约束,user_id引用public.ab_user表的id列。约束条件为:
  • ON UPDATE NO ACTION:当引用的ab_user表中的id更新时,不采取任何动作。
  • ON DELETE CASCADE:当引用的ab_user表中的id删除时,自动删除slice_user表中对应的行。
  • 表空间TABLESPACE pg_default表示表存储在默认表空间中。
  • 修改表所有者:public.slice_user表的所有者更改为superset_test用户

CONSTRAINT用于定义数据库表中的约束条件,这些约束用于确保数据的一致性和完整性。约束条件可以应用于表中的列或整个表。常见的约束类型包括PRIMARY KEYFOREIGN KEYUNIQUECHECKNOT NULL

1. PRIMARY KEY 约束

作用:指定表中的一个或多个列作为主键。主键的值必须唯一且非空。一个表只能有一个主键。

示例

CONSTRAINT slice_user_pkey PRIMARY KEY (id)

解释:slice_user_pkey约束指定id列为主键,确保每个id值在表中是唯一且非空的。

2. FOREIGN KEY 约束

作用:指定一个或多个列作为外键,这些列引用另一表的主键。外键用于确保引用完整性,即确保在引用表中存在对应的值。

示例:

CONSTRAINT fk_slice_user_slice_id_slices FOREIGN KEY (slice_id)

REFERENCES public.slices (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE CASCADE

解释

  • fk_slice_user_slice_id_slices约束指定slice_id列为外键,引用public.slices表的id列。
  • MATCH SIMPLE表示在大多数情况下,只要引用的列值相等就满足约束条件。
  • ON UPDATE NO ACTION:当public.slices表中的id更新时,不对slice_user表中的数据进行任何操作。
  • ON DELETE CASCADE:当public.slices表中的id删除时,自动删除slice_user表中引用该id的行。

3. UNIQUE 约束

作用:确保列中的所有值是唯一的,允许空值,但空值必须唯一。

示例

CONSTRAINT unique_user_email UNIQUE (email)

解释:假设在users表中有一列emailunique_user_email约束确保每个用户的电子邮件地址是唯一的。

4. CHECK 约束

作用:确保列中的值符合指定的条件,可以用于验证数据范围、格式等。

示例

CONSTRAINT check_user_age CHECK (age >= 18)

解释:假设在users表中有一列agecheck_user_age约束确保用户的年龄必须大于或等于18。

5. NOT NULL 约束

作用:确保列中的值不为空。

示例

name VARCHAR(255) NOT NULL

解释:假设在users表中有一列nameNOT NULL约束确保每个用户的名字不能为空。