enter image description here

Because of the previous tables, i'm choosing names of youngsters as well as their favorite quotes. When it comes to speed, efficiency, and database design guidelines, what's best? Must i possess the actual quote in table kids or must i do not have the actual quote but reference its id then do another query to fetch it from quotes table?

Personally, I've found it simpler to make use of ID's, virtually whenever you can. Imagine requiring to alter a Lincoln subsequently quote and needing to disable the foreign secrets to get it done. Then, when you have up-to-date the quotes table, needing to update and re-let the key around the kids table... I have worked with this inside a legacy system, and that i desired to scream.

But that is just me.

I'd rather opt for the quote's reference id than copying the favorite_quote area.

It appears like a total waste of space to copy what seems to become a 1000+ length varchar area more often than once.

Normalization of the structure wouldn't really affect performance, also it may really accelerate queries: individuals very lengthy quotes are likely to cause a myriad of page fragmentation inside your kids table.

Keeping another quote table can make it simpler to handle and perform better overall.


To reply to the question within the comment, you'll need a quote_id area in Kids to JOIN on:

SELECT k.Name, q.Favorite_Quote
FROM kids k
LEFT JOIN quotes q
    ON q.id = k.quote_id

For me personally it is dependent how the information has been used.

For instance if the details are needed on each page like

Hey Timmy, we have seen you are still 8 as well as your favorite quote is "Action may be the blah blah blah"

I Quickly would get a single query, but, when the information was just likely to be utilized on a particular page or else you want say a quotes page then use multiple queries.

I really hope this can help.