एक बहुत ही सरल, पहला तरीका सिर्फ 4 टेबल का उपयोग करना होगा:
TABLE Course
( CourseId
, Title
, TotalCredits
, ... other stuff
, PRIMARY KEY (CourseId)
) ;
TABLE Module
( ModuleId
, Description
, Hours
, Credits
, ... other stuff
, PRIMARY KEY (ModuleId)
) ;
और इन 2 के माध्यम से अनुमत संयोजन:
TABLE Course_Module
( CourseID --- for this course
, ModuleID --- this module is allowed (optional or mandatory)
, PRIMARY KEY (CourseID, ModuleId)
, FOREIGN KEY (CourseId)
REFERENCES Course (CourseId)
, FOREIGN KEY (ModuleId)
REFERENCES Module (ModuleId)
) ;
TABLE Course_MandatoryModule
( CourseID --- for this course
, ModuleID --- this module is mandatory
, PRIMARY KEY (CourseID, ModuleId)
, FOREIGN KEY (CourseID, ModuleId)
REFERENCES Course_Module (CourseID, ModuleId)
) ;
अब, यदि आपके द्वारा अनुमत मॉड्यूल और पाठ्यक्रमों के संयोजन अधिक जटिल हैं, जैसा कि आपके विवरण से पता चलता है, Course_Module
के बजाय और Course_MandatoryModule
टेबल आप एक जटिल पदानुक्रमित मॉडल को परिभाषित कर सकते हैं:
पाठ्यक्रम:
TABLE Course --- same as previous model
( CourseId
, Title
, TotalCredits
, ... other stuff
, PRIMARY KEY (CourseId)
) ;
(मॉड्यूल) के मॉड्यूल और समूह:
TABLE ModuleEntity --- the supertype for both
( ModuleEntityId --- modules and group of modules
, PRIMARY KEY (ModuleEntityId)
) ;
TABLE Module --- subtype
( ModuleId
, Description
, Hours
, Credits
, ... other stuff
, PRIMARY KEY (ModuleId)
, FOREIGN KEY (ModuleId)
REFERENCES ModuleEntity (ModuleEntityId)
) ;
TABLE ModuleGroup --- group of modules
( ModuleGroupId --- subtype of the supertype (entity)
, GroupDescription
, PRIMARY KEY (ModuleGroupId)
, FOREIGN KEY (ModuleGroupId)
REFERENCES ModuleEntity (ModuleEntityId)
) ;
और संबंध (मॉड्यूल समूह के अंतर्गत आता है):
TABLE Module_in_Group
( ModuleEntityId --- this module or group
, ModuleGroupId --- is in this group
, PRIMARY KEY (ModuleEntityId, ModuleGroupID)
, FOREIGN KEY (ModuleEntityId)
REFERENCES ModuleEntity (ModuleEntityId)
, FOREIGN KEY (ModuleGroupId)
REFERENCES ModuleGroup (ModuleGroupId)
) ;
और (आखिरकार) पाठ्यक्रम में मॉड्यूल का समूह हो सकता है:
TABLE Course_ModuleGroup
( CourseId --- for this course
, ModuleGroupId --- this module group is allowed
, PRIMARY KEY (CourseID, ModuleGroupId)
, FOREIGN KEY (CourseId)
REFERENCES Course (CourseId)
, FOREIGN KEY (ModuleGroupId)
REFERENCES ModuleGroup (ModuleGroupId)
) ;