この質問は、前のトピック「MySQL - フラット テーブルから第 1 正規形への移行」( http://bit.ly/9pvS0Y )に直接関連しています。新しいトピックを開始するのが最善だと考えました。
以下は私の最初の正規形スキーマであり、私の目的には十分にしっかりしていると確信していますが、間違っている場合は修正してください。
これを 2 番目と 3 番目のフォームに移行する方法を知りたいのですが、私のテーブルが 2NF と 3NF ルールによってどのように影響を受けるかについての指針は本当に役に立ちます。
関係
-活動と場所の関係 = 1 対多 - 1 つの活動は 1 つの場所を持つことができ、場所は多くの活動を持つことができます (活動の FK としての場所 ID)
-アクティビティと週の関係 = 1 対多 - 1 つのアクティビティに 1 週間、1 週間に複数のアクティビティを含めることができます (アクティビティの FK としての WeekID)。
-ユーザーとアクティビティ= 多対多 - 1 人のユーザーが多数のアクティビティを持つことができ、1 つのアクティビティが多数のユーザーを持つことができます
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 |
+------------+---------------+
| | |
+------------+---------------+