「テキスト」テーブルがあります。テキスト テーブルは、ツイート、SMS、電子メールなどのさまざまなソースから取得された可能性があり、各ソースには独自のログがあり、テキストはソースから取得されます。だから私はいくつかの解決策を持ってきましたが、どれが最善かわかりません。
解決策 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...
)
1 つの「テキスト」は 1 つのソースからのみ提供されていることに注意してください。
したがって、解決策 2 を使用する場合、ソースが SMS からのものであるとすると、データは次のようになります
Text(
12
'the text'
333
null
null
)
Sms(
333
'the text'
0818833733664
etc...
)
それで、どれが最良のアプローチですか?
アップデート :
私は質問の大部分を見逃しています。それは間違いかもしれません。申し訳ありません。私の場合、テキストも csv(excell) ファイルから取得された可能性があります。これは、ファイルが多くのテキスト (カンマまたは行区切り) のダンプであるため、1 つのファイルに多くのテキストが含まれる可能性があることを意味します。SMS、Tweet、Email と Text の関係は 1 対 1 ですが、File with Text は 1 対 N であるため、私の質問で欠けている大きな部分はファイル テーブルです。
File(
file_id PK
file_name
etc..
)