2012-11-04 63 views
1

我相信我是一本關於數據庫設計(Fred Rolland的數據庫本質)的好書,我也讀過這個網站; http://goo.gl/TxDq4。這兩種資源都很棒,但它們使用非常結構化的例子,涉及客戶和公司的互動。爲照片設計(簡單)關係數據庫?

我想創建一個數據庫,其中將包含對數百張照片的引用。作爲我正在研究的項目的一部分,我希望允許用戶創建幻燈片。如果我理解正確的理論,這代表了「多對多」的關係,我需要打破「連接表」。

我無法得到我的頭是什麼這個連接表應該看起來像什麼或它實際執行的功能。我的感覺是,我嘗試創建的加入課程比擁有「訂單行」或類似內容更加模糊。我的第一份草稿,加入類,看起來像這樣:http://img28.imageshack.us/img28/2756/photodb2.png

然後我只是困惑我實際上試圖實現與加入類。幻燈片可以包含許多照片,並且照片可以出現在許多幻燈片中。

通過加入類SlideshowView,我想我創建了一個幻燈片的「實例」,其中該特定的幻燈片只能包含任何一張照片的一個實例。在這種情況下,我對SlideshowView和幻燈片放映之間的關係感到困惑!

事實上,再看一遍,我的圖表更沒有意義...... SlideshowView只能包含一個幻燈片,但幻燈片可以是多個SlideshowView的一部分?麻煩的是,如果我一對一地建立關係,是不是會讓SlideshowView變得多餘?

當我從編程的角度思考這個問題時,我只是要求用戶選擇一個包含許多照片的幻燈片,在這種情況下,Slideshow和SlideshowView有什麼不同?我是否過分複雜化了這個?這真的是「扭曲我的瓜」!任何有關如何繼續進行這方面的建議都會受到感謝。

回答

1

對於多對多的關係,您的左手關係是錯誤的方式。一張照片可以出現在許多幻燈片中,但是您已經用相反的方式繪製了這張照片 - 實際上,您已經用不必要的中間表對一對多進行建模,這就是爲什麼它看起來錯了。 Slideshow和SlideshowView確實與您繪製圖表的方式完全相同。

用戶永遠不會「看到」中間的鏈接表。 (S)他會爲幻燈片選擇多張照片;對於其中的每一個,一行將進入鏈接表,將這些照片鏈接到新的幻燈片,而不排除它們也出現在其他幻燈片中。對於最終用戶來說,只有照片和幻燈片纔是可見的。我會親自調用鏈接表SlideshowPhotograph。以下是三張照片和兩張幻燈片的ID值,顯示兩張幻燈片中出現的照片109。

Photograph | Link      | Slideshow 
ID   | PhotographID SlideshowID | ID 
107   | 107   23    | 23 
108   | 109   23    | 24 
109   | 109   24    | 
+0

當然!答案很簡單,我現在感到很尷尬的問這個問題!非常感謝您提供清晰簡潔的解釋。 –