我不是數據庫設計專家,有我懷疑是新手的問題。如果在另一個論壇(或從一個簡單的參考)得到更好的回答,請讓我知道。DB實體關係表的名稱,這是一個好主意嗎?
給定一個表「記錄」和一張桌子「藝術家」。這兩個表都有適當定義的主鍵。我們想在這些表格之間表達一種關係。也就是說,藝術家可以有很多錄音,或者沒有錄音。錄音只能有1或0位藝術家。 (我們可以在沒有已知藝術家的情況下進行一些模糊的錄製)。
我認爲解決這個問題是有一個外鍵指向在記錄表的藝術家。該字段可以爲空(錄音沒有藝術家)。此外,我們應該定義級聯刪除,例如,如果刪除一位藝術家,所有具有外部指向該藝術家的錄音現在都有一個空值的外鍵。 [我真的很想在刪除藝術家時離開實際的錄音。我們的真實表格不是「藝術家」和「錄音」,並且沒有藝術家的錄製可以存在]。
然而,這是我的同事們並不怎麼把事情窗口。沒有外鍵列在「錄音」,而是一個額外的表「RecordingArtist_Mapping」有兩列,
RecordingKey ArtistKey
如果一個藝術家(或錄音)被刪除,在這個映射表中的相應條目已移除。我不是說這是錯誤的,只是與我的預期不同。當我有一個有許多關係的人時,我確實看到過這樣的一張桌子,但是沒有我上面描述的關係。
所以,我的問題是:
- 你聽說過描述關係的這種方式?
- 是否有這種類型的表的名稱?
- 這是對關係模型或將與我解釋外鍵的想法更好的好辦法?每個的優點/缺點是什麼?
我的同事們指出,與國外主要思想,你可以有很多的錄音表空的,而這違反了(或許只是在精神?)在關係數據庫理論中的五個範式之一。我在這一方面擺脫了我的聯盟:)是否違反了這些形式之一?哪一個?怎麼樣? (簡單引用「五種正常形式」的積分:))。
謝謝您的幫助和指導。
Dave
卻忽略了實際上一些歌曲有多於一名藝術家參與。 例如,藝術家克羅斯比,斯蒂爾斯,納什和楊都參與了伍德斯托克。這種不確定性會在將來引起問題 –
@ JimO'Brien,問題的規格是:「一個錄音只能有1或0個藝術家」。問題是這個設計是否正確。所以,我回答了這個問題,並且禁止我自己添加自己的解釋。 – Renzo
你很正確,那是被問到的問題。被問到的問題是什麼是錯誤的問題?我們是否有責任提高並說出如下內容:「沒有涉及多於一名藝術家的錄音;例如CSN&Y的歌曲Woodstock? –