mysql - 问一个简单的数据表设计问题(多对一、一对多)?
大家讲道理
大家讲道理 2017-04-17 16:06:15
0
2
776

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

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

用数据库关系描述
用数据库正常描述是这样的:食材(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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(2)
Ty80

음식(n)->스토브(1)

난로 하나로 다양한 음식을 만들 수 있다는 게 잘 이해가 안 되네요.

또한 음식을 처리하려면 여러 개의 스토브가 필요합니까?

내가 이해한 바에 따르면

성분표

字段
sc_id
name

스토브 테이블

字段
zj_id
name

음식 목록

字段
sp_id
name

레시피 목록

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

ps: 데이터 테이블의 디자인은 하나의 엔터티와 하나의 테이블이며, 연관 테이블을 사용하여 엔터티 간 직접 연결을 설정합니다! 이 개념을 이해하고 나면 현재 문제가 더 간단한지 확인하세요! 주방용품 테이블, 재료 테이블, 음식 테이블, 그리고 레시피 테이블은 세 가지 개체를 구성하는 관계 테이블입니다! 휴대폰으로 타이핑하는 게 너무 피곤해요...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿