2013-03-24 66 views
1

我對數據庫設計比較陌生。如何將關係(具有屬性)轉換爲關係模式/ sql?

我最近了解到,EER中的關係可以擁有屬性,因此構建了以下實體。

LibraryMembers (MEMBERID)

圖書 (BOOKID)

這兩個實體通過關係 「儲備」,每本書可以由0保留1 LibraryMember連接,並且每個LibraryMember是能夠保留0到很多書。

現在,問題來了。我已經將屬性(如時間和日期)分配給「保留」關係,並且我不知道如何將其轉換爲關係模式。 LibraryMembers和Books之間的關係不是很多,是否可以創建一個名爲「reserve」的表來鏈接它們?

(我一直在告訴我們,當關系從許多映射到許多EER附加表只創建)

幫助將非常感謝,謝謝。

+0

你應該使用libraryMember和Books之間的映射表(也是出於歷史原因 - 也就是說,這本書已經消失了X倍)。一本書不能借出兩次不應該是模式的任務(可能是一個觸發器/過程,但至多在應用層)。所以我推薦使用3個表格來完成這個工作 – Najzero 2013-03-24 07:49:44

回答

1

可以映射在保留會員和書籍這樣

CREATE TABLE members(
member_id INT, 
member_name VARCHAR(64), 
PRIMARY KEY(member_id) 
); 

CREATE TABLE books(
book_id INT, 
title VARCHAR(64), 
PRIMARY KEY(book_id) 
); 

CREATE TABLE reservations(
reservation_id INT, 
book_id INT, 
member_id INT, 
reservation_date DATETIME, 
PRIMARY KEY(reservation_id), 
CONSTRAINT FOREIGN KEY (book_id) REFERENCES books (book_id), 
CONSTRAINT FOREIGN KEY (member_id) REFERENCES members (member_id) 
); 

但你仍然需要實現防止一本書在同一時間的兩倍保留作爲@Najzero評論邏輯。

+0

非常感謝你們兩個人的清理!我想我可以利用觸發器防止書籍被保留兩次? – DisneyGuy 2013-03-24 09:16:50