Связь таблиц

bel0m0r

Новичок
Столкнулся с проблемой. Требуется создать две таблицы, содержащие информацию о пользователях и таблицу с информацией о файлах. По функционалу сайта требуется что бы каждый пользователь мог иметь собственный набор файлов. Так как создавать для каждого пользователя отдельную таблицу под файлы глупо, остановился только на таком варианте: Создать одну таблицу для файлов, а сортировать наборы по первичному ключу таблицы пользователей. Но так как файлов может быть далеко за десятки тысяч, мне кажется что это вызовет большую нагрузку. Может быть есть какие нибудь более лучшие приёмы?
 

shelestov

я тут часто
100К никакой нагрузки не вызовет, если правильно расставлены индексы.
 

shelestov

я тут часто
Нет.
А вообще правильно сказал c0dex. Сделайте хотябы как нибудь, потом оптимизируйте.
Если думать на будущее я бы вообще смотрел в сторону nosql :). С вашей структурой самое оно.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну

Сделайте хотябы как нибудь, потом оптимизируйте.
так-то уж совсем не стоит делать, но мне пока лично до конца структура не понятна.

Я бы сделал 2 таблицы, для юзеров и для файлов, соответственно через InnoDB связал бы внешними ключами файлы к юзеру. В таблице файлов указал бы поля:

file_id | user_id | date | file_name | original_name | size_bytes

file_name сделал бы уникальным в виде abc39fe42ef.extension и хранил бы в папке [/a/b/c/]abc39fe42ef.extension

Как-то так.
 

shelestov

я тут часто
так-то уж совсем не стоит делать
Человек опытный сделает сразу хорошо, пологаясь на тот самый опыт.
Человек не опытный сделает запустит, если потребуется раз 10 оптимизирует и тоже наберется опыта.
За 5 лет работы с одним проектом уйму раз приходилось проводить оптимизацию, смотреть в сторону то одних продуктов, то других. Итого со старта и до нынешнего состояния MySQL в 250 таблиц, объемом 150Гб опыт немного набран :)
 
Сверху