Mysql
從多個平台保存社交媒體文章的最佳方式
我正在一個平台上工作,該平台從多個來源(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 列中的任何內容進行過濾或排序。