繁体   English   中英

限制到表列名(PostgreSQL)

[英]Constraint to table column name (postgresql)

我正在使用产品属性的单表继承(可能是更高的类表继承)模型来实现产品数据库。 一切都很好并且很好,但是我正在尝试找出如何最好地处理产品变体同时保持参照完整性。

现在,我的主要产品表的简化版本如下所示:

CREATE TABLE product (

    id     SERIAL         NOT NULL,
    name   VARCHAR(100)   NOT NULL,
    brand  VARCHAR(40)    NOT NULL,
    color  VARCHAR(40)[]  NOT NULL

)

(颜色是一个数组,因此可以列出任何给定产品的所有标准颜色)

为了处理变体,我考虑过在称为product_variant_theme的表中跟踪产品变化的属性:

CREATE TABLE product_variant_theme (

    id              SERIAL       NOT NULL,
    product_id      INT          NOT NULL,
    attribute_name  VARCHAR(40)  NOT NULL

)

我在其中插入有问题product_id的行,并将属性的列名称添加到attribute_name字段中,例如“ color”。

现在,请随时告诉我这是否是完全愚蠢的方法,但是我对attribute_name与实际列名本身之间缺少约束感到担心。 显然,如果更改产品表并删除该列,那么我的第二张表中可能仍然有引用它的行。 我要寻找的功能等效于某种东西,例如对描述表的information_schema视图的attribute_name上的外键,但是我不认为有任何直接的方法,我想知道是否有在此处获得这种功能的任何合理方法。

谢谢。

您是否正在寻找这样的东西?

product
=======
id
name


attribute
=========
id
name


product_attribute_map
=====================
product_id
attribute_id
value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM