我正在創建一個食譜應用程式,您可以在其中向食譜添加成分。我希望成分表包含名稱、數量和測量列。然后將其連接到配方表。在我的配方表中是否可以有一個帶有外鍵的陣列?
如果沒有,你還有什么辦法解決這樣的問題?
uj5u.com熱心網友回復:
這是可能的,但這是一個非常糟糕的主意,會讓你不開心。
創建一個連接表recipe_ingredient來存盤兩者之間的關系。
uj5u.com熱心網友回復:
在具有陣列型別的列上創建外鍵不是一個好主意。您應該為成分創建一張表,為食譜創建一張表,并為成分和食譜之間的多對多關系創建一張中間表,其中包含食譜中成分的數量:
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
) ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354045.html
標籤:sql 数组 PostgreSQL 数据库设计 外键
下一篇:程序或函式“uspExportGetMailinfoTest”需要未提供的引數“@CUSTOMER”。我錯過了什么?
