Mysql

從多個平台保存社交媒體文章的最佳方式

  • October 18, 2018

我正在一個平台上工作,該平台從多個來源(Facebook、Twitter 等)收集文章並將它們保存到數據庫中。計劃是創建一個名為 posts 的表,其中包含所有平台的所有必要欄位,甚至是特定於平台的欄位。因此,保存的 Facebook 文章可能包含一個名為 retweets(特定於 Twitter)的空列。

另一個解決方案是創建一個 Supertype 文章,其中將包含所有一般資訊以及類型(facebook、twitter)並與所有平台特定表有關係。

第三個選項是一個通用的和平台特定的表,彼此沒有關係,文章包含所有通用數據,平台特定(facebook_posts)表包含通用和平台特定的數據,它們彼此沒有關係,只與使用者.

您認為性能和麵向未來的最佳選擇是什麼?我們可能想添加更多平台,並可能刪除\更改令人興奮的平台。該數據庫可能在將來的某個時候包含成千上萬的文章。

選項 1:一張表中的所有資訊

Table name: Posts
id
title
facebook_id
retweets

選項 2:具有多個關係的超類型

Table name: SuperPosts
id
type
title

Table name: facebook_posts
id
facebook_id
shares

Table name: twitter_posts
id
twitter_id
retweets

選項 3:通用和平台特定彼此沒有關係

Table name: Posts
id
platform_id
text

Table name: facebook_posts
id
facebook_id
facebook_text
shares

Table name: twitter_posts
id
twitter_id
twitter_text
retweets

您在問如何在關係數據庫上實現繼承,而您提到的 3 種方法基本上是 3 種最常見/基本的方法。有關它們的一些討論,請參閱https://stackoverflow.com/questions/3579079/how-can-you-represent-inheritance-in-a-database

沒有“最好”的方法來做到這一點——這完全取決於您打算如何使用您的模式,因此它有助於您之後的查詢。

對於雜項列,尤其是那些可選的列,將它們扔進一JSON列。不要計劃對 Json 列中的任何內容進行過濾或排序。

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