【问题标题】:PostgreSQL array of foreign keysPostgreSQL 外键数组
【发布时间】:2021-12-22 04:00:56
【问题描述】:

我正在创建一个食谱应用程序,您可以在其中将配料添加到食谱中。我希望成分表有名称、数量和测量列。然后将其连接到配方表。我的配方表中是否可以有一个带有外键的数组?

如果没有,您还如何解决此类问题?

【问题讨论】:

    标签: sql arrays postgresql database-design foreign-keys


    【解决方案1】:

    这是可能的,但这是一个非常糟糕的主意,会让你不开心。

    创建一个联结表recipe_ingredient,存储两者之间的关系。

    【讨论】:

      【解决方案2】:

      在数组类型的列上创建外键不是一个好主意。 您应该为成分创建一张表,为食谱创建一张表,为成分和食谱之间的多对多关系创建一张中间表,其中包含食谱中成分的数量:

      CREATE TABLE IF NOT EXISTS ingredient (name varchar primary key) ;
      CREATE TABLE IF NOT EXISTS recipe(name varchar primary key) ;
      CREATE TABLE IF NOT EXISTS recipe_composition 
             ( recipe_name varchar
             , ingredient_name varchar
             , ingredient_quantity double precision
             , ingredient_unit_of_measure varchar
             , PRIMARY KEY (recipe_name, ingredient_name)
             , FOREIGN KEY recipe_name REFERENCES recipe(name) ON UPDATE CASCADE ON DELETE RESTRICT
             , FOREIGN KEY ingredient_name REFERENCES ingredient(name) ON UPDATE CASCADE ON DELETE RESTRICT
             ) ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2017-04-24
        • 2018-11-19
        • 2015-04-17
        • 2020-12-10
        • 1970-01-01
        相关资源
        最近更新 更多