-1
我有一個「文本」表中,可能來自不同的來源,像鳴叫短信,電子郵件等文字表格和每個源有自己的日誌,並且文本來自源代碼。所以我帶了一些解決方案,但我不知道哪個是最好的。一個表從許多源(一對一) - 數據庫設計
解決方案1:
Text(
text_id PK
content
source_type (tweet, sms, email, etc)
source_id (can't be FK since it may contain sms_id, tweet_id, or email_id)
)
Tweet(
tweet_id PK
tweet_text
tweet_username
etc...
)
Sms(
sms_id PK
sms_text
sender_number
etc...
)
Email(
email_id PK
email_text
email_sender
etc...
)
解決方案2:
Text(
text_id PK
content
sms_id FK
tweet_id FK
email_id FK
)
Tweet(
tweet_id PK
tweet_text
tweet_username
etc...
)
Sms(
sms_id PK
sms_text
sender_number
etc...
)
Email(
email_id PK
email_text
email_sender
etc...
)
請注意,一個 '文本' 只能從單一來源來了。
,所以如果我使用的解決方案2,我們說的是來自短信的來源,則數據將看起來像這樣
Text(
12
'the text'
333
null
null
)
Sms(
333
'the text'
0818833733664
etc...
)
所以這是最好的方法?
UPDATE:
我想念我的問題的重要組成部分,而這可能是故障,遺憾的是。在我的情況下,文本也可能來自csv(excell)文件。這意味着一個文件可能有許多文本,因爲該文件是許多文本的轉儲(昏迷或行分隔)。短信,鳴叫,並用文本電子郵件的關係是一對一的,但文本文件是一對多 所以我的問題大缺失的部分是文件表
File(
file_id PK
file_name
etc..
)
你的意思是這樣,文本(text_id,內容,SOURCE_ID(FK)) ,Text_Source(source_id(PK),sms_id(FK),tweet_id(FK),email_id(FK))? – Ahmad
不完全。 Text_Source(source_id(PK)),Tweet(tweet_id(PK),source_id(FK),other_columns ...),SMS(sms_id(PK),source_id(FK))等等。它在Text表格和三個源表格之間添加了一個表格,因此您只需引用一個Text_Source表格。 – jchapa
感謝您的回答,我真的很感激。但我認爲,我錯過了我的問題的一大部分,這可能是錯誤的,對不起。在我的情況下,文本也可能來自csv(excell)文件。這意味着一個文件可能有許多文本,因爲該文件是許多文本的轉儲(昏迷或行分隔)。短信,Tweet和電子郵件與文本的關係是一對一的,但帶文本的文件是一對多。以前感謝 – Ahmad