簡體   English   中英

從數據庫中獲取多個用戶名

[英]fetching multiple usernames from a database

我在網站上有一個評論版塊,如果可能的話,我想簡化一下,這樣對數據庫的影響不大。 當用戶選擇帖子時,如果該帖子具有與之關聯的評論,則會列出該評論。 當注釋列表時,它將從另一個表中獲取用戶名。 我將用戶的ID存儲在注釋表中,並使用該ID從users表中選擇記錄。 並顯示為“用戶”說:

可以說我在一個帖子上有1000條評論,它將在用戶表上點擊1000次以獲取用戶名。 我認為這可能是一個錯誤的設計。 我想到了一些解決方案,但不知道在這種情況下會建議什么。

我應該將用戶名存儲在注釋表中嗎?

我應該將所有已調用的用戶名存儲在會話數組中嗎?

將所有用戶名放在文件中,然后從文件中調用?

還是我沒有想到的另一種解決方案?

我有點困惑。 我以為我通過使用注釋表中的ID來做正確的事,然后使用它來獲取用戶名,但是在閱讀了大約一百萬篇有關對數據庫的影響較小的帖子后,我開始質疑自己。

哇,感謝所有有用的答案。 這是餐桌計划,我不知道為什么我最初沒有輸入。

笑話評論表:

id | author_id | joke_id | date_created | body
---+-----------+---------+--------------+-----
1  |     3     |    2    | 2011-06-12   | this is a comment

對於用戶:

id | user_name | password | email | date_joined | visible
---+-----------+----------+-------+-------------+---------
 3 |   booboo  | password | email | todays_date |    1

這就是JOIN的目的-因此您可以運行一個查詢並有效地從多個表中獲取組合信息。 例如:

SELECT comments.id, comments.content, users.name
FROM comments
JOIN users ON comments.user = users.id
WHERE comments.id in (1,2,3)

將查找ID為1、2和3的3條評論,還獲得每個評論者的用戶名,並返回如下所示的行:

comments.id | comments.content  | users.name
------------+-------------------+---------
1           | "First comment."  | "Poster1"
2           | "Second comment." | "Poster2"
3           | "Third comment."  | "Poster3"

聽起來您的注釋表中有一個userID字段,但是需要查找用戶名,對嗎? 如果是這樣,JOIN將是最佳解決方案。

就像是:

SELECT *
FROM `comments`
LEFT JOIN `users` ON `users`.`id` = `comments`.`userid`
WHERE `postid`='1'

要閱讀有關聯接及其無限可能性的更多信息,請在此處閱讀

SELECT * FROM comments LEFT JOIN users ON comments.posterid = users.id

Google for LEFT JOIN了解更多信息:)

您是否允許多次使用同一用戶名? 如果不是,那么我將使用username段作為users表的PK,並將其存儲在comments表中作為FK。 這樣可以很好地解決您的問題。

如果更改users表的PK太大了,那么只需將用戶名存儲在comments部分,因為您仍然可以使用該usersusers表中選擇一條記錄。

暫無
暫無

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

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