Плохо ли иметь много таблиц, представляющих один объект в MySQL?
У меня есть много объектов этой структуры:
~ PlaceID
= Upvotes
= Downvotes
= Names
- Title
+ Upvotes
+ Downvotes
- Other names[]
+ Upvotes
+ Downvotes
= Location
- Lat
- Long
- Address
= Images
- Top
+ id/url
+ Upvotes
+ Downvotes
- Others[]
+ Upvotes
+ Downvotes
= Comments[]
- id
- Text
- Upvotes
- Downvotes
- ReplyTo
Чтобы сохранить организованность, я выложил схему, которая включает в себя множество ссылок. Это пример таблицы:
7741 (PlaceID)
______________________________________________________________________________
names | location | upvotes | downvotes | images | Comments
_______________________________________________________________________________
7741_names | 7741_location | 20 | 3 | 7741_images | 7741_comments
затем в, скажем, 7741_images (отсортировано по количеству баллов, так что элемент "Top" легко найти):
imgID | score | upvotes | downvotes | url |
________________________________________________________
7741_21 | 98 | 44 | 1 | /img/7741_21.png |
7741_14 | 94 | 40 | 2 | /img/7741_14.png |
Будет ли этот стиль детализации с большим количеством таблиц на объект делать запросы очень медленными или слишком специфичными для запросов слишком многословными? (на 100к мест?)
Я никогда не отвечал за дизайн схемы, поэтому извините, если я упускаю очевидное.
1 ответ
Плохо это или хорошо, это качество, которое субъективно - в зависимости от поставленного вопроса (и схемы). Чтобы лучше ответить на этот вопрос, вам необходимо объяснить свое решение по разработке схемы. У вас всегда должны быть веские основания для ваших решений, и если в вашей разработке это окажется неверным, то итерируйте для улучшения.:)
Предполагая, что вы делаете предварительную попытку разработки схемы для поддержки вашего приложения, я бы начал с подхода, на который указал Нил. С вашей примерной схемой при определенных обстоятельствах производительность может быть проблемой.
Опять же, начните с простого, и если вам нужно пересмотреть, то просто убедитесь, что вы чувствуете себя "хорошо", имея вескую причину выбора дизайна.