Xap*_*ius 5 mysql database-design
我正在尝试为一所大学的课程结构和依赖关系建模。
例如,在计算机工程系,你需要在做人工智能之前先做数据结构。但您还需要完成逻辑导论或数学逻辑和证明。
我正在考虑为课程使用一个表(ID、课程编号、课程名称、小时数、教授)和另一个表用于依赖项。
问题在于:如何对这种依赖关系/先决条件进行建模?我想出的唯一可行的解决方案是将其作为一个字符串,用简单的英语编写;但这显然不是一个体面的解决方案,我也认为它违反了原子性原则。
请注意,人工智能的先决条件是形式的IA <- DS && (IL || MLP)
,但其他的课程都会有不同的结构,像微积分2,需要解析几何和微积分1日前完成:C2 <- AG && C1
。
我不知道这是否相关,但我会使用MySQL。
您有一些课程:
COURSES
-------
course_id
course_number
course_name
Run Code Online (Sandbox Code Playgroud)
您需要将这些课程中的一门或多门与逻辑运算符结合起来:
COMBINATIONS
------------
combination_id
logical_operator (AND, OR or NOT)
COMBINATION_COURSES
-------------------
combination_id
course_id
Run Code Online (Sandbox Code Playgroud)
您可能还需要组合其中一些组合(因此更改 COMBINATION_COURSES 表):
COMBINATION_COURSES
-------------------
combination_id
course_id
sub_combination_id
Run Code Online (Sandbox Code Playgroud)
其中 course_id 和 sub_combination_id 中只有一个不为空。
课程可能以其中一种组合作为先决条件(因此更改组合表):
COURSES
-------
course_id
course_number
course_name
prerequisite_combination_id
Run Code Online (Sandbox Code Playgroud)
编辑
因此,根据您的原始示例,您的表将被填充:
COURSES
=======
course_id course_name prerequisite_combination_id
--------- ------------------------------ ---------------------------
1 Artificial Intelligence 12
2 Data Structures
3 Introduction to Logic
4 Mathematical Logic and Proofs
5 Calculus 1
6 Calculus 2 13
7 Analytical Geometry
COMBINATIONS
============
combination_id logical_operator
-------------- ----------------
11 OR
12 AND
13 AND
COMBINATION_COURSES
===================
combination_id course_id sub_combination_id
-------------- --------- ------------------
11 3
11 4
12 2
12 11
13 7
13 5
Run Code Online (Sandbox Code Playgroud)
课程 1 - 人工智能有组合 12 的先决条件。组合 12 是课程 2 - 数据结构和组合 11。组合 11 是课程 3 - 逻辑简介或课程 4 - 数学逻辑和证明。
因此,课程 1 - 人工智能的先决条件是课程 2 - 数据结构 AND(课程 3 - 逻辑概论或课程 4 - 数学逻辑和证明)。
此结构应该允许您存储任意数量课程的任意逻辑组合的任何先决条件。
归档时间: |
|
查看次数: |
2306 次 |
最近记录: |