ऐसा लगता है कि आपको इसके समान डेटाबेस मॉडल की आवश्यकता है:
इस मॉडल में निम्नलिखित गुण हैं:
- अनिवार्य रूप से, प्रत्येक नुस्खा चरणों की एक श्रृंखला है।
- प्रत्येक चरण का एक ही नुस्खा (STEP_NO), एक इकाई (द्रव्यमान, आयतन, गिनती...), उस इकाई में एक मात्रा आदि के अन्य चरणों के सापेक्ष अपना क्रम होता है।
- एक विशेष चरण या तो एक घटक (जब INGREDIENT_ID गैर-NULL हो) या किसी अन्य नुस्खा (जब SUBRECIPE_ID गैर-NULL हो) से जुड़ा होता है।
- इसके अलावा, STEP कई-से-कई संबंधों को लागू करने वाली एक काफी मानक जंक्शन तालिका है, जिसका अर्थ है कि एक ही सामग्री का उपयोग कई व्यंजनों (या एक ही नुस्खा के कई चरणों) में किया जा सकता है और एक नुस्खा भी हो सकता है कई अन्य व्यंजनों का "उप-नुस्खा"।
- यह अनिवार्य रूप से एक निर्देशित ग्राफ है। डेटा मॉडल स्वयं चक्रों को नहीं रोकेगा - उन्हें क्लाइंट कोड स्तर पर टाला जाना चाहिए और संभवतः ट्रिगर्स द्वारा पता लगाया जाना चाहिए।
यदि MySQL CHECK बाधाओं का समर्थन करता है (जो यह नहीं करता है। ), आप यह सुनिश्चित कर सकते हैं कि उनमें से एक (लेकिन दोनों नहीं) इस तरह गैर-शून्य है:
CHECK (
(INGREDIENT_ID IS NULL AND SUBRECIPE_ID IS NOT NULL)
OR (INGREDIENT_ID IS NOT NULL AND SUBRECIPE_ID IS NULL)
)
वैसे ही, इसके लिए आपको एक ट्रिगर की आवश्यकता होगी।