这是我工作的数据库中存在的一些表的示例。数据实际上并不围绕学校,但结构是相同的。
有四张表:
** School **
School Id, School Name
** ClubType **
ClubType Id, ClubType Name
** Club **
Club Id, School Id, ClubType Id
** Student **
Student Id, Name, Club Id
Run Code Online (Sandbox Code Playgroud)
知道俱乐部表永远不会有额外的列(因为真实数据实际上不是关于学校俱乐部的),
我相信一个明显更好的设计,消除俱乐部表以避免连接,将是:
** School **
School Id, School Name
** ClubType **
ClubType Id, ClubType Name
** Student **
Student Id, Name, School Id, ClubType Id
Run Code Online (Sandbox Code Playgroud)
编辑:我们也知道每个俱乐部 ID 可能只有一种类型。Club 和 ClubType 的关系是 1 比 1。
我的问题是,第一个例子是否违反了一些已知的数据库规范化规则或其他一些数学原理?或者这只是一个糟糕的设计案例?