Hi!
Let’s say I have a questions system and the writers of questions always add at least one but maybe more clues for the question.
Would it be better design to have each question have its own table for clues, even though the vast majority of the time the questions only have 1 clue? (ie is it inefficient to create like a zillion tables for a database?) Or would it be better to have a “clues” table, where each clue stores which question ID the clue applies to? (ie are later queries linear in time based on the amount of clues in the table which would be bad?)
Thanks for your help! And I’d appreciate motivations for the answers too so I will understand better.
The latter. Creating millions of dynamic tables for this use case is not what SQL databases are designed for.
If you create a foreign key relationship from the clues table (column questionID) to the question table (column ID), the database will even guard for you that each clue actually has a valid question associated with it. What’s more, if you setup cascading deletes 9n that foreign key relationship, you only need to delete a question row and the clues will automatically be deleted for you. As you can see, this type of relationship is best modeled this way. There are many more reasons why you should do this, but I’m hoping this gives a beginners overview.
Thanks for sharing your knowledge