栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

数据库设计/规范化结构需要包含AND,OR,可选元素及其关系

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据库设计/规范化结构需要包含AND,OR,可选元素及其关系

设计相当简单,您只需要带有约束的递归“组”表即可。

Course- ID- Title- CreditsCourse_Group- CourseID- GroupIDGroup- ID- GroupID- Description- AtLeastNSelections- AtLeastNCreditsGroup_Module- GroupID- ModuleIDModule- ID- Title- Credits

一个示例结构是

Course: 1, "Math Major", 60Group: 1, NULL, "Core Modules", 2, 40Course_Group: 1, 1    Group: 2, 1, "Required (5) Core Modules", 5, 25    Course_Group: 1, 1    Group_Module: (1, 1), (1, 2), (1, 3), (1, 4), (1, 5)        Module: 1, "Calculus I", 5        Module: 2, "Calculus II", 5        Module: 3, "Calculus III", 5        Module: 4, "Stats I", 5        Module: 5, "Stats II", 5    Group: 3, 1, "Required (3) Of (N) Modules", 3, 15    Course_Group: 1, 3    Group_Module: (3, 6), (3, 7), (3, 8), (3, 9), (3, 10)        Module: 6, "Number Theory", 5        Module: 7, "Bridge Adv. Math", 5        Module: 8, "Calculus IV", 5        Module: 9, "Stats III", 5        Module: 10, "Finite Math", 5Group: 4, NULL, "Secondary Modules", 1, 20Course_Group: 1, 4    Group: 5, 4, "Comp. Sci.", 2, 0    Course_Group: 1, 5    Group_Module: (5, 11), (5, 12), (5, 13), (5, 14), (5, 15), (5, 16)        Module: 11, "Math in Hardware", 4        Module: 12, "Math in Software", 4        Module: 13, "Programming 101", 4        Module: 14, "Algorithms 101", 4        Module: 15, "Programming I", 5        Module: 16, "Programming II", 5    Group: 6, 4, "Physics", 0, 8    Course_Group: 1, 6    Group_Module: (6, 17), (6, 18), (6, 19), (6, 20)        Module: 17, "Physics Mechanics", 4        Module: 18, "Physics Thermodynamics", 4        Module: 19, "Physics Magnetism", 5        Module: 20, "Physics Theoretical", 5    Group: 7, 4, "Gen. Ed.", 0, 0    Course_Group: 1, 7    Group_Module: (7, 21), (7, 22), (7, 23), (7, 24)        Module: 21, "Business Writing", 3        Module: 22, "Ethics", 3        Module: 23, "Aesthetics", 3        Module: 24, "Graphic Design", 3

快速浏览…“数学专业”课程在其下分为“核心模块”和“中学模块”两个小组。“核心模块”至少需要2个孩子,并且至少需要40个学分。“中学课程”至少需要1个孩子,并且至少需要20个学分。

您可以看到,“核心模块”下组的约束比“第二模块”下组的约束更具限制性。

要输出上面的示例结构,将类似于以下内容。

SELECT c.Title, g.Description, m.Title FROM Course c INNER JOIN Course_Group cg ON c.ID = cg.CourseID INNER JOIN Group g ON cg.GroupID = g.ID INNER JOIN Group_Module gm ON g.ID = gm.GroupID INNER JOIN Module m ON gm.ModuleID = m.IDWHERe c.ID = 1ORDER BY g.GroupID, g.ID, m.Title

因此,如果您有课程和模块,则可以从Course_Group表中获取课程的所有组,并从Group_Module表中获取模块所属的组。将模块放入他们的组后,您可以沿着Group.GroupID父级链检查组的约束AtLeastNSelections和AtLeastNCredits,直到获得Group.GroupID
= NULL。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506595.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号