Задать вопрос

Как хранить пользовательские данные в базе?

Добрый вечер.

Не так давно начал изучать Django (да и вообще web-разработку) и в качестве учебного проекта решил написать небольшой заметочный сервис для своей локальной сети. А вопрос, собственно, вот в чем: как правильно хранить пользовательские данные в базе?

К примеру: есть заметка, у нее имеется имя, текст, теги и прочие поля, а так же столбец в котором будет храниться id пользователя, создавшего заметку и вот по этому столбцу я должен делать выборку, правильно ли это и есть ли какие-то другие способы? Предположим заметок, рано или поздно, станет много, как быстро разрастется базу при таком методе? В добавок, например, если я захочу реализовать вставку изображения в заметку, где хранить его? В файловой системе, а в базе только ссылку на него?

Подскажите, пожалуйста, новичку. Заранее спасибо.
  • Вопрос задан
  • 2869 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
laska
@laska
PHP/JS разработчик
  1. База в вашем случае растет линейно, поэтому беспокоится не стоит. Впрочем, базы данных тем и отличаются всех прочих способов хранения (к примеру csv), что выдерживают огромное количество информации.
  2. Не забудьте сделать индекс по колонке с id пользователя.
  3. Теги обычно хранятся в другой таблице (и еще одна таблица для связи многое-ко-многим).
  4. Чаще всего хранят ссылку на изображение, разумеется. Но к примеру для GAE правильнее хранить изображения в базе. Впрочем, это не ваш случай, храните ссылки.
Ответ написан
Комментировать
yttrium
@yttrium
Это одна из нормальных форм реляционной модели.
Django позволяет абстрагироваться от непосредственного использования id пользователя, для этого следует использовать поле ForeignKey.
Для картинок используйте ImageField. Оно само положит картинку в файловую систему и в базу данных положит путь к файлу. Надо лишь в настройках проекта указать нужные каталоги. На начальном этапе и для небольших проектов этого вполне достаточно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы