ホームページ  >  に質問  >  本文

mysql - 问一个简单的数据表设计问题(多对一、一对多)?

举个栗子
现在有三张表:食材、灶具、食品

业务场景
选购某些食材,通过某种灶具,做成了一些食品。(取葱花、面粉->用平底锅->烙了白面饼和葱花饼)

用数据库关系描述
用数据库正常描述是这样的:食材(n)->食品(1),食品(n)->灶具(1),看起来很简单,多对一、多对一。但是注意业务场景,是先有食材,再将食材放入灶具,然后烹制出多个食品。也就是说不会事先知道食材(n)->食品(1)这个关系

我的使用场景
在食品烹制过程中,会根据食材查询灶具,会根据灶具查询食品;在食品烹制结束,会根据食材查食品,也会根据食品查食材。也许大家也想到了,还存在一层关系食材(n)->灶具(1),那就有了我下面的问题

问题
我怎么建立这三张表的关系?是否将三张表都建立关联关系,如下面所示:

食材表(例子有点不合适,把每个食材看做一份,用完就没有了):

id name goods_id pan_id
1 面粉 1 1
2 葱花 1 1
3 花生油 2 3

灶具表:

id name
1 平底锅
2 蒸笼
3 炒锅

食品表:

id name pan_id
1 葱花饼 1
2 油条 3

第一次在这里提问,望大神指导,谢谢!

大家讲道理大家讲道理2728日前669

全員に返信(2)返信します

  • PHP中文网

    PHP中文网2017-04-17 16:08:15

    食品(n)->ストーブ(1)

    これはよくわかりませんが、1 つのコンロでさまざまな料理ができるのでしょうか?

    さらに、食品を処理するには複数のストーブが必要ですか?

    私の理解によると

    材料リスト

    字段
    sc_id
    name

    コンロテーブル

    字段
    zj_id
    name

    食べ物リスト

    字段
    sp_id
    name

    レシピ一覧

    字段 解释
    id 主键
    sp_id 做这个食品
    step 的第step步
    sc_id 需要用到sc_id这个材料
    zj_id 在zj_id里烹饪

    返事
    0
  • 怪我咯

    怪我咯2017-04-17 16:08:15

    追記: データ テーブルの設計は 1 つのエンティティと 1 つのテーブルであり、関連付けテーブルを使用してエンティティ間の直接接続を確立します。 この概念を理解したら、現在の問題がより単純かどうかを確認してください。キッチン用品のテーブル、材料のテーブル、食品のテーブルがあり、レシピ テーブルは 3 つのエンティティを確立する関係テーブルです。携帯電話で文字を打つのはとても疲れます...

    返事
    0
  • キャンセル返事