mysql - 問(wèn)一個(gè)簡(jiǎn)單的數(shù)據(jù)表設(shè)計(jì)問(wèn)題(多對(duì)一、一對(duì)多)?
問(wèn)題描述
舉個(gè)栗子:現(xiàn)在有三張表:食材、灶具、食品
業(yè)務(wù)場(chǎng)景:選購(gòu)某些食材,通過(guò)某種灶具,做成了一些食品。(取蔥花、面粉->用平底鍋->烙了白面餅和蔥花餅)
用數(shù)據(jù)庫(kù)關(guān)系描述:用數(shù)據(jù)庫(kù)正常描述是這樣的:食材(n)->食品(1),食品(n)->灶具(1),看起來(lái)很簡(jiǎn)單,多對(duì)一、多對(duì)一。但是注意業(yè)務(wù)場(chǎng)景,是先有食材,再將食材放入灶具,然后烹制出多個(gè)食品。也就是說(shuō)不會(huì)事先知道食材(n)->食品(1)這個(gè)關(guān)系
我的使用場(chǎng)景:在食品烹制過(guò)程中,會(huì)根據(jù)食材查詢?cè)罹撸瑫?huì)根據(jù)灶具查詢食品;在食品烹制結(jié)束,會(huì)根據(jù)食材查食品,也會(huì)根據(jù)食品查食材。也許大家也想到了,還存在一層關(guān)系食材(n)->灶具(1),那就有了我下面的問(wèn)題
問(wèn)題:我怎么建立這三張表的關(guān)系?是否將三張表都建立關(guān)聯(lián)關(guān)系,如下面所示:
食材表(例子有點(diǎn)不合適,把每個(gè)食材看做一份,用完就沒(méi)有了):
idnamegoods_idpan_id1面粉112蔥花113花生油23灶具表:
idname1平底鍋2蒸籠3炒鍋食品表:
idnamepan_id1蔥花餅12油條3第一次在這里提問(wèn),望大神指導(dǎo),謝謝!
問(wèn)題解答
回答1:食品(n)->灶具(1)
對(duì)這個(gè)不是很理解,一個(gè)灶具可以烹飪多種食品?
另外食品會(huì)不會(huì)需要多個(gè)灶具加工的情況?
通過(guò)我的理解
食材表
字段sc_idname灶具表
字段zj_idname食品表
字段sp_idname食譜表
字段解釋id主鍵sp_id做這個(gè)食品step的第step步sc_id需要用到sc_id這個(gè)材料zj_id在zj_id里烹飪回答2:ps:數(shù)據(jù)表的設(shè)計(jì)就是一個(gè)實(shí)體一個(gè)表,然后在用關(guān)聯(lián)表建立實(shí)體直接的聯(lián)系! 你知道了這個(gè)概念,然后再看你現(xiàn)在的問(wèn)題是不是簡(jiǎn)單了!廚具一個(gè)表,食材一個(gè)表,食品一個(gè)表,然后食譜表就是建立三個(gè)實(shí)體的關(guān)系表!手機(jī)打字真累……
相關(guān)文章:
1. javascript - nodejs實(shí)現(xiàn)異步時(shí)遇到的一個(gè)問(wèn)題2. css3 - Typecho 后臺(tái)部分表單按鈕在 Chrome 下出現(xiàn)靈異動(dòng)畫(huà)問(wèn)題,求解決3. mysql - 面試題:如何把login_log表轉(zhuǎn)換成last_login表?4. java - 阿里的開(kāi)發(fā)手冊(cè)中為什么禁用map來(lái)作為查詢的接受類?5. apache - 想把之前寫(xiě)的單機(jī)版 windows 軟件改成網(wǎng)絡(luò)版,讓每個(gè)用戶可以注冊(cè)并登錄。類似 qq 的登陸,怎么架設(shè)服務(wù)器呢?6. javascript - 為什么嵌套的Promise不能按預(yù)期捕獲Exception?7. java - 關(guān)于i++的一個(gè)題目8. javascript - 編程,算法的問(wèn)題9. java - HTTPS雙向認(rèn)證基礎(chǔ)上有無(wú)必要再進(jìn)行加簽驗(yàn)簽?10. myeclipse中修改了javaweb的web.xml文件,為什么有時(shí)候會(huì)自動(dòng)重新部署生效,有時(shí)就不會(huì)自動(dòng)呢?
