2016-09-27 131 views
0

我遇到了正常化this table問題,它真的困擾我。我可以看到桌子是第一種正常形式,但從那裏我卡住了。我通常的方法是通過檢查每一行中關於主鍵的一致性來找到部分依賴關係。這個表的問題是:關係數據庫正常化

  1. 第一列只包含唯一的數據,所以它似乎可以用作整個表的主鍵。我只使用複合主鍵對錶格進行了規格化,但在這裏做這件事似乎毫無意義,因爲第一列自身可以正常工作。

  2. 行中沒有一致性。這些屏幕都有不同的電影,這些電影有不同的價格/日期等。只有客戶ID /客戶名是一致的。

我不知道這是否是一個正確的技術,但是我參照刪除異常和組織表,因此,如果會話被刪除,有關分支的信息被保存想過正火。使用這個我可以得到類似於第三範式的東西,但我不認爲它是正確的。

Session | Branch | Screen | Movie | Session | Session | Customer | Customer 
ID  | ID  | ID  | ID | Date  | Price | ID  | Name 
SS01 | B1  | S1  | M1 | 3-May-16 | 12.50 | C1  | Chris Hemsworth 
SS02 | B2  | S1  | M2 | 4-Jun-16 | 19.45 | C2  | Chris Evans 
SS03 | B1  | S2  | M2 | 3-May-16 | 12.67 | C2  | Chris Evans 
SS04 | B4  | S2  | M4 | 13-may-16 | 14.56 | C3  |Tom Hiddleston 
SS05 | B3  | S2  | M5 | 23-may-16 | 14.56 | C2  | Chris Evans 
SS06 | B3  | S1  | M5 | 3-Jun-16 | 16.32 | C1  | Chris Hemsworth 
SS07 | B4  | S2  | M3 | 14-May-16 | 21.78 | C2  | Chris Evans 
SS08 | B1  | S2  | M2 | 6-Jun-16 | 16.82 | C2  | Chris Evans 
SS09 | B2  | S3  | M4 | 13-May-16 | 17.90 | C1  | Chris Hemsworth 
SS10 | B4  | S1  | M3 | 6-Jun-16 | 16.37 | C3  | Tom Hiddleston 
+0

請將數據插入問題而不是圖片 – Nebi

+0

我不確定如何在文本編輯器中有效地格式化表格。 –

+0

我無法打開您的表格鏈接。我相信我不是唯一的。如果沒有能力查看錶格,您的問題與難以理解的問題接近 –

回答

1

它看起來像我這個表是相當不錯的形狀(假設它應該是一個描述'會話'的表格)。我看到的唯一冗餘列是「客戶名稱」,但其他一切似乎都是必需的。 '會話價格'可能是也可能不是計算列(基於其他列)。

不知道業務邏輯,我無法確認'分支'(或其他東西)是否需要在那裏。

編輯: 假設你可以刪除'session id'列作爲pk並添加一個複合鍵代替(例如:分支+屏幕+電影+會話日期+客戶ID),但這不一定會使它更好。相反,這些列上的唯一性約束可能是首選。

+0

這是一張桌子本身作爲我家庭作業的一個問題,所以我不能提供有關業務規則或邏輯的任何信息。我有一種感覺,它已經被優化了,但它看起來不像我做過的其他例子,所以我不確定。 –

+0

@Haydennull,不要讓一個類例子妨礙學習。在現實世界中,您需要了解業務規則的100%時間。 – HLGEM

+0

如果是作業,建議吹走'客戶姓名'。這可能是他們正在尋找的。 – Sturgus