2011-12-01 61 views
0

在我的系統中,許多實體需要具有附件。設計通用附件EF代碼中的SQL表/實體 - 首先

例如,Mission實體需要自己的附件,也包括Activity,Projects等。

問題是如何設計附件表?

  1. 每個實體的附件表,如MissionsAttachments,ActivitiesAttachments等?
  2. 系統中所有附件的一張表?如果是這樣,每個附件的標識符是什麼?

的我怎麼可以創建一個通用的裝配臺,將成爲整個系統的任何想法?

+0

問題是,並非所有的答案都是答案。 –

+1

Marc,我剛剛回顧了我的問題的答案,並將答案標記爲答案。 –

+0

太好了 - 謝謝! –

回答

0

我只需要一個附件表和一個表來說明實體。例如:

Entities Table: 
============== 
EntityId 
EntityName 

Attachments Table: 
================= 
AttachmentId 
EntityId 
Attachment 
0

如果你想有一個通用的附件表,你可以做到以下幾點:

create table attachments 
(attachment_id int not null, 
parent_id int not null, 
parent_type varchar(32) not null, 
    other_cols_here, 
primary key(attachment_id)) 

這將讓你有獨立的實體表(這樣你就不必總是有一些通用表格中的任務,活動等)。要查找,也就是說,一個任務的附件,你必須做的:select * from attachments where parent_id = MISSION_ID and parent_type = 'mission'

這樣做的缺點,當然,是你放棄對用於PARENT_ID任務表的外鍵約束的能力。