首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Oracle 數據庫設計:食物營養關聯表結構與關聯查詢

     編輯:程式設計疑難解答

需求分析

食物與營養成分是一對多關係:一種食物包含多種營養成分,每種成分有含量數值。

表結構設計

-- 食物主表
CREATE TABLE food (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100) NOT NULL,      -- 食物名稱:蔬菜、水果、大米
    type VARCHAR2(50),                -- 類型:穀物、蔬菜、水果
    suitable_age VARCHAR2(50)         -- 適宜年齡段
);

-- 營養成分表
CREATE TABLE nutrient (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100) NOT NULL,      -- 營養名稱:蛋白質、葡萄糖
    unit VARCHAR2(20)                 -- 單位:g、mg、μg
);

-- 關聯表(食物-營養含量)
CREATE TABLE food_nutrient (
    food_id NUMBER REFERENCES food(id),
    nutrient_id NUMBER REFERENCES nutrient(id),
    amount NUMBER(10,3) NOT NULL,     -- 含量數值
    PRIMARY KEY (food_id, nutrient_id)
);

關聯查詢示例

-- 查詢某食物的所有營養成分
SELECT f.name AS food, n.name AS nutrient, fn.amount, n.unit
FROM food f
JOIN food_nutrient fn ON f.id = fn.food_id
JOIN nutrient n ON fn.nutrient_id = n.id
WHERE f.id = :food_id;

-- 查詢含某營養成分最高的前 10 種食物
SELECT f.name, fn.amount
FROM food f
JOIN food_nutrient fn ON f.id = fn.food_id
JOIN nutrient n ON fn.nutrient_id = n.id
WHERE n.name = '蛋白質'
ORDER BY fn.amount DESC
FETCH FIRST 10 ROWS ONLY;

JavaScript 前端調用

後端提供 REST API 返回 JSON,前端用 fetch/axios 調用渲染表格或圖表(ECharts/Chart.js)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved