這個問題直接關係到前一個主題「MySQL - 從平臺移動到第一範式」(http://bit.ly/9pvS0Y) - 現在我正在問一個問題關於轉向第二和第三範式,我認爲最好開始一個新的話題。MySQL - 從第一範式移動到第二和第三範式
下面是我的第一個正常表單模式,我非常確定已經足夠用於我的目的,但如果我錯了,請糾正我。
我想知道如何將其轉移到第二個和第三個窗體,關於我的表如何受2NF和3NF規則影響的任何指針將非常有用,謝謝。
關係
- 活動和位置關係=一對多 - 一個活動可以具有一個位置,一個位置可以有許多活動(LocationID如FK在活動)
- 活動和周關係=一對多 - 一項活動可以有一週,一週可以有很多活動(WeekID爲活動中的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 |
+------------+---------------+
| | |
+------------+---------------+
居然沒有:)我必須建立這個應用程序,並認爲這將是最合乎邏輯和堅實的基礎。我開始想知道,通過表單移動對我來說是否實際上是有益的,或者它是否是更「最佳實踐」的數據庫設計方式,對我的需求並不特別有用(畢竟這是一個小應用程序)。如果我擁有足夠紮實的基礎,那麼很好,我很樂意聽到我在學習時的意見。 – Dave 2010-08-11 20:39:50
對給定的NF進行標準化並不是通過降低NF來完成的。這可以消除更好的高NF設計。一個使用適當的算法。此外,一個從FD(字段是其他字段的函數)和JD(一個關係是其某些投影的連接)開始。查看學術教科書/演示文稿/課程。 – philipxy 2017-07-21 21:57:04