Sql-Server

論文送出系統的數據庫設計

  • November 13, 2014

我是數據庫設計的學習者,我想為期刊論文送出系統設計一個數據庫,其中一篇論文可以由一位或多位作者送出。我最初有兩張桌子AuthorPaper

Author具有以下屬性,

AuthorID
Name
Contact
Email
URL

Paper具有如下屬性

PaperID
Title
Abstract
Keywords

我需要第三張表submission,我可以在其中保留論文和作者/作者之間的關聯。任何人都可以在這方面幫助我找到可能的關聯。

如果您只想跟踪哪些作者對哪些論文做出了貢獻,那麼您只需要一個簡單的相交實體(查看更多),如下所示:

ERD1

這裡表的列SUBMISSION只是來自PAPER和的兩個主鍵列AUTHOR。這兩列將共同構成相交表的主鍵,並且每一個都將分別是各自表的外鍵。

**注意:**不要在表格中添加任何其他列SUBMISSION,除非可以合理地預期這些列對於同一論文和同一作者會逐行變化。例如,除非多位作者在不同時間送出了一篇論文,否則在送出表中添加日期是個壞主意。如果您需要跟踪有關作者或作者組送出論文的事件的資訊,那麼您需要規範化額外資訊以避免創建更新異常。考慮以下:

ERD2

在上面的 ERD 中,請注意不依賴於作者的額外資訊如何保留在該SUBMISSION級別,同時添加了新的交叉實體CONTRIBUTION以記錄作者與送出論文的特定實例之間的聯繫。

這種四表模型更加健壯,因為它允許論文多次重新送出,每次都更改作者身份。如果這種真實世界的細微差別對您的系統很重要,那麼您最好使用四表方法而不是三表方法。

以下是 OP 要求的具有更多列詳細資訊的四表模型:

詳細的 ERD

引用自:https://dba.stackexchange.com/questions/81650