We are creating a (potentially) huge database that will be populated Users. Each user can create a lot Items. The application will later select and list these items for the public upon request. Each Itemwill have a "pointer" to UserIDits creator. When you retrieve an item, the user name and image (URL) will always also be received.
Given the possibility of hundreds of thousands of users, each of which has dozens of elements, in addition to thousands of requests for elements, I would suggest that every time users and elements request that this is a little, even if it is one single request. Since the item itself will never be loaded without a username, is it completely useless to store the Users username with Item? eg:
(A simple representation of the original method)
Table(User):UserID, Username, UserPictureURL, Email, Address, ...
Table(Item):ItemID, ItemName, Value, UserID, ...
Request element here is always , for example Select * from User, Item Where... This will get items from both tables.
(A simple representation of the path of thought)
Table(User):UserID, Username, UserPictureURL, Email, Address, ...
Table(Item):ItemID, ItemName, Value, UserID, Username, UserPictureURL ...
Now the request will require only Select * from Item. Only items from one table.
, User , / -? , - , - , . ? , 100 000 , ? , .
, . 30 , pictureURL - 80, 110 " ". , 100 000 , 3 , 1,2 300. ~ 31,5 . .
, , , . / , .
, , - , .
: , , . , , . -?