这个问题与之前的主题“MySQL - 从平面表移动到第一个范式”(http://bit.ly/9pvS0Y)直接相关- 当我现在问一个关于移动到第二个和第三个范式的问题时,我认为最好开始一个新话题。
下面是我的第一个范式模式,我很确定它对于我的目的来说足够可靠,但如果我错了,请纠正我。
我想知道如何将它转移到第二种和第三种形式,任何关于我的表将如何受到 2NF 和 3NF 规则影响的指针都会非常有用,谢谢。
关系
- Activity和Location的关系=一对多 - 一个activity可以有一个location,一个location可以有很多activity(LocationID作为Activity中的FK)
- Activity和Week的关系=一对多 - 一个activity可以有一周,一周可以有很多activity(WeekID作为Activity中的FK)
-用户和活动= 多对多 - 一个用户可以有很多活动,一个活动可以有很多用户
User Table - UserID PK
+------------+-----------+
| UserID | Username |
+------------+-----------+
| | |
+------------+-----------+
Activity Table - ActivityID PK / WeekID FK / LocationID FK
+------------+-----------+------------+-----------+------------+-------------+-----------+
| ActivityID | UserID | WeekID | Day | Minutes | LocationID | Miles |
+------------+-----------+------------+-----------+------------+-------------+-----------+
| | | | | | | |
+------------+-----------+------------+-----------+------------+-------------+-----------+
Location Table - LocationID PK
+------------+---------------+
| LocationID | Location_Name |
+------------+---------------+
| | |
+------------+---------------+
Weeks Table - Week ID PK
+------------+-----------+
|WeekID | Week_No |
+------------+-----------+
| | |
+------------+-----------+
User_Activity Table
+------------+---------------+
| UserID | ActivityID |
+------------+---------------+
| | |
+------------+---------------+