Не так давно начал изучать Django (да и вообще web-разработку) и в качестве учебного проекта решил написать небольшой заметочный сервис для своей локальной сети. А вопрос, собственно, вот в чем: как правильно хранить пользовательские данные в базе?
К примеру: есть заметка, у нее имеется имя, текст, теги и прочие поля, а так же столбец в котором будет храниться id пользователя, создавшего заметку и вот по этому столбцу я должен делать выборку, правильно ли это и есть ли какие-то другие способы? Предположим заметок, рано или поздно, станет много, как быстро разрастется базу при таком методе? В добавок, например, если я захочу реализовать вставку изображения в заметку, где хранить его? В файловой системе, а в базе только ссылку на него?
База в вашем случае растет линейно, поэтому беспокоится не стоит. Впрочем, базы данных тем и отличаются всех прочих способов хранения (к примеру csv), что выдерживают огромное количество информации.
Не забудьте сделать индекс по колонке с id пользователя.
Теги обычно хранятся в другой таблице (и еще одна таблица для связи многое-ко-многим).
Чаще всего хранят ссылку на изображение, разумеется. Но к примеру для GAE правильнее хранить изображения в базе. Впрочем, это не ваш случай, храните ссылки.
Это одна из нормальных форм реляционной модели.
Django позволяет абстрагироваться от непосредственного использования id пользователя, для этого следует использовать поле ForeignKey.
Для картинок используйте ImageField. Оно само положит картинку в файловую систему и в базу данных положит путь к файлу. Надо лишь в настройках проекта указать нужные каталоги. На начальном этапе и для небольших проектов этого вполне достаточно.