Неща, които трябва да вземете предвид при вашите подходи
Съхранение на потребителския профил в таблицата с потребители
- По принцип това ще бъде най-бързият подход по отношение на достъпа до данните в профила, въпреки че може да имате много излишни данни тук (колони, които може да нямат никаква информация в тях).
- Бързо (особено ако изтегляте само колони, от които се нуждаете от db)
- Загубени данни
- По-трудно е да се работи/поддържа (вероятно с интерфейси като PHPMyAdmin)
Съхранение на потребителския профил в таблица 1-1 на потребителския профил на връзката с потребителите
- Все пак трябва да е доста бързо с присъединяването и може да премахнете някои излишни данни, ако потребителските профили не са създадени, освен ако потребителят не го попълни.
- По-лесно се работи с
- Толкова малко по-бавно поради присъединяване (или 2-ра заявка)
Съхранение на потребителския профил като свойства и стойности в таблици
*т.е. Таблица за съхранение на възможни опции, таблица за съхранение на user_id, option_id и стойност*
- Не се съхраняват излишни данни, всички данни са подходящи
- Най-нормализираният метод
- По-бавно за извличане и актуализиране на данни
Моето впечатление е, че повечето уебсайтове използват втория метод и съхраняват информация за профила във втора таблица, което е обичайно за повечето по-големи уебсайтове да денормализират базата данни (twitter, facebook), за да постигнат по-висока производителност на четене за сметка на по-бавна производителност на запис.
Смятам, че запазването на информацията за профила във втора таблица вероятно е начинът да отидете, когато разглеждате 50 000 записа. За оптимална производителност искате да запазите данните, които се записват, силно отделени от данни, които се четат тежко, за да гарантирате, че кешът може да работи ефективно.