亲爱的社区成员 我需要帮助设计一个简单的数据库。它是学生和学校的数据库。同一所学校有多名学生,一名学生可以加入多所学校。我想知道最好的方法是什么。
示例场景:用户john作为高中毕业的BI学校和麻省理工学院的大学,用户哈里去了麻省理工学院作为大学。
我们可以采取的一种方法是: 我们可以有一个db表
用户表
+--------+-------+-----------+ | usr_id | name | school_id | +--------+-------+-----------+ | 7 | john | 1 | | 7 | john | 2 | | 6 | harry | 1 | +--------+-------+-----------+
学校表
+-----------+-----------+ | school_id | name | +-----------+-----------+ | 1 | MIT | | 2 | BI School | +-----------+-----------+
并在用户表中使用school_id作为外键。
另一种方法是:
用户表
+--------+-------+ | usr_id | name | +--------+-------+ | 7 | john | | 7 | john | | 6 | harry | +--------+-------+
学校表
+-----------+-----------+ | school_id | name | +-----------+-----------+ | 1 | MIT | | 2 | BI School | +-----------+-----------+
用户到学校表
+----+---------+-----------+ | id | user_id | school_id | +----+---------+-----------+ | 1 | 7 | 1 | | 2 | 7 | 2 | | 3 | 6 | 1 | +----+---------+-----------+
哪种方法最好?我们可以在这里尝试其他方法。
答案 0 :(得分:0)
根据规范化规则,您有多对多关系(一个学生可以就读一个或多个学校,一个学校可以有一个或多个学生),第二种方法是正确的。