簡體   English   中英

這兩種方法中的哪一種更適合組織和查詢mysql中的數據?

[英]Which of these two approaches is better for organizing and querying data from a mysql?

我試圖決定如何實施,希望您的經驗對我有所幫助。

問題

用戶使用facebook api登錄到webapp,這給了我很多數據,名稱,facebook id(我使用該數字來標識我的網站中的用戶),年齡以及我需要存儲以供以后使用的其他一些隨機數據分析。 之后,用戶可以索取票證(只是一段文本,其中包含一個在php腳本中生成的數字),當票證生成時,我存儲了用戶facebook id,日期(MM / DD / YYYY),當然還有票證的唯一ID,同一用戶可以要求幾張票證。

解決方案1(有組織的解決方案,但對於MySQL服務器而言似乎壓力很大)

要有兩個表,一個叫users ,我在其中存儲所有用戶個人信息,從Facebook api檢索到,包括Facebook用戶ID。 第二個表稱為“ Tickets ,其中僅存儲票證的創建日期和創建票證的用戶的Facebook用戶ID,當然,此表具有自動遞增的唯一ID,以標識票證本身。

將來,我將需要顯示所有創建票證的用戶的列表,不僅顯示其Facebook用戶ID,而且還顯示其個人信息,因此這意味着我需要查詢tickets以及針對使用的每行/票證我需要查詢users的Facebook ID來檢索該users的個人信息(姓名,年齡,...)。 因此,如果我有10000個唯一身份用戶創建的10000張票證,則需要查詢Mysql服務器10001,一個用於檢索票證數組,一個用於檢索每個用戶的信息10000 ...

解決方案2(不像我喜歡的那樣組織)

有兩個表,只有一個表,我在其中存儲所有內容,票據和用戶數據,因此,當用戶創建票據時,我不僅將與票據相關的信息存儲在同一表中,還將用戶個人數據存儲在同一表中,如果以后我想顯示誰創造了票我只是要做一個單一查詢用戶的列表tickets將eventualy retrive(如果我有10000票)數據的大包,我以后將解析使用PHP。 這樣,我的查詢更少,但是數據更大。


現在,我已經運行了第一個解決方案的基本功能,但是現在我有點擔心可伸縮性問題。

這是我的users表的一部分的外觀: 在此處輸入圖片說明

這是tickets表: 在此處輸入圖片說明

因此,要列出用戶,我會這樣進行: 來自tickets discount_id代表tickets一種類型,因此如果需要類型1我可以查詢*票證winner_id = 1,從數組中它使用winner_id (票證創建者的Facebook用戶ID)給我,我將其winner_idusers獲取face_id以檢索個人信息。

我想用第三種方式解決這個問題,就是將1和2相結合,並具有相同的兩個表,在我查詢所需類型的tickets之后,然后查詢(僅一個)表users要求一個數組所有的用戶ID tickets都給了我,但是我不知道該怎么做以及是否值得。


哪種解決方案更好? 有什么明智的方式進行嗎? 謝謝!

就像評論definitley時一樣,可以分解表結構。 它使生活更輕松,因此使用第一個版本。 許多事情只有通過許多表才有可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM