Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли разбивать таблицу на две? / 19 сообщений из 19, страница 1 из 1
14.10.2016, 05:40
    #39326719
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Всем привет. Требуется ответ специалистов.
В данный момент имеется таблица users, в которой содержаться поля с логином, именем, фамилией, почтой, полом и прочая стандартная инфа. Также имеются множество полей с различными настройками для юзеров, таких полей с настройками планируется примерно 20-30, может и больше. Хранимые значения там будут совсем короткие, не более 10 символов в каждом. Обновлять настройки как мне кажется пользователи будут не часто.
Вот появилась мысль личные данные пользователей оставить в таблице users, а вот настройки пользователей вынести в таблицу settings, быть может ещё и связать их внешним ключом по id
Уважаемые специалисты, подскажите, стоит ли выносить настройки в отдельную таблицу и нужно ли их связывать внешним ключом?
С внешними ключами вообще никогда не работал, но погуглив понял, что в данном случае их было бы полезно применить.
...
Рейтинг: 0 / 0
14.10.2016, 05:44
    #39326720
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Забыл добавить, если это важно конечно. Таблицы InnoDB
...
Рейтинг: 0 / 0
14.10.2016, 09:59
    #39326815
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Gamletus... стоит ли выносить настройки в отдельную таблицу и нужно ли их связывать внешним ключом?
Если вы не знаете количество настроек (или в ближайшем будущем оно изменится) - выносите. Да, стоит (у вас стандартный EAV - гуглите и читайте).
...
Рейтинг: 0 / 0
14.10.2016, 16:10
    #39327230
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Я ещё хотел уточнить, т.к. пока гуглил, нашёл ситуацию чем-то похожую, но там выносили в отдельную таблицу, когда для одного пользователя создавалось несколько строк с данными (именно строк). У меня же как в таблице users, так и в таблице settings будет строго по одной строке для каждого пользователя. А вот количество столбцов в settings будет примерно 20-30...
...
Рейтинг: 0 / 0
14.10.2016, 16:25
    #39327249
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
GamletusУ меня же как в таблице users, так и в таблице settings будет строго по одной строке для
каждого пользователя. А вот количество столбцов в settings будет примерно 20-30...

Это плохой дизайн. Заверни все настройки в JSON и храни в одном поле таблицы users.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.10.2016, 18:05
    #39327312
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Dimitry SibiryakovЭто плохой дизайн. Заверни все настройки в JSON и храни в одном поле таблицы users.Идея хорошая, но мне кажется будет сложновато при добавлении каких-то новых настроек так, чтобы они добавились сразу у всех пользователей без лишних заморочек. Когда каждая настройка хранится в отдельном столбце, то вроде как добавил новый столбец и всё.
...
Рейтинг: 0 / 0
14.10.2016, 18:55
    #39327336
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Gamletusно мне кажется будет сложновато при добавлении каких-то новых настроек так, чтобы они
добавились сразу у всех пользователей без лишних заморочек.

А зачем их добавлять всем пользователям сразу? Если какой-то настройки в БД нет -
используй умолчательное значение для неё. Не вижу никакой проблемы с этим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.10.2016, 19:17
    #39327348
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Gamletusвот количество столбцов в settings будет примерно 20-30...
хм... а я бы сделал всего четыре колонки: id, settingKey, settingValue и userId
...
Рейтинг: 0 / 0
14.10.2016, 21:51
    #39327400
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
GamletusИдея хорошая, но мне кажется будет сложновато при добавлении каких-то новых настроек так, чтобы они добавились сразу у всех пользователей без лишних заморочек. Когда каждая настройка хранится в отдельном столбце, то вроде как добавил новый столбец и всё.

новый столбец в таблице это не всё, это только начало, за этим обычно идет изменение интерфейса, средств выборки и т.д.
...
Рейтинг: 0 / 0
15.10.2016, 12:14
    #39327503
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
GamletusВот появилась мысль личные данные пользователей оставить в таблице users, а вот настройки пользователей вынести в таблицу settings, быть может ещё и связать их внешним ключом по id
Уважаемые специалисты, подскажите, стоит ли выносить настройки в отдельную таблицу и нужно ли их связывать внешним ключом?Если это настройки "для всех", если нет разделения пользователей на некие типы, если это не "пользовательские" настройки, которые сами пользователи могут добавлять когда захотят, то зачем вообще такие сложности, зачем такой дизайн с EAV?

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

Используйте просто обычные поля в таблице.

Вопрос - выносить ли это в отдельную таблицу. Если это некая отдельная сущность, которая будет использоваться независимо, ну, тогда можно выделить в отдельную таблицу.

Связывать 1=1 с юзерами - зависит от того, может ли "настройка пользователя" управляться отдельно от пользователя (например, будет настройка "оператор", и все пользователи операторы работают с этой настройкой).
...
Рейтинг: 0 / 0
16.10.2016, 13:55
    #39327771
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
skyANAGamletusвот количество столбцов в settings будет примерно 20-30...
хм... а я бы сделал всего четыре колонки: id, settingKey, settingValue и userId+1
...
Рейтинг: 0 / 0
16.10.2016, 17:21
    #39327813
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Два дня тестировал все предложенные варианты и всё-таки решил не выносить в отдельную таблицу, решил делать каждый тип настроек в отдельном столбце. Но однозначно решил делать кеш в виде файла для каждого пользователя, завернув пхпшной функцией json_encode/json_decode, чтобы понапрасну в базу не обращался. Как-то так ))
...
Рейтинг: 0 / 0
17.10.2016, 09:10
    #39327962
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Dimitry SibiryakovGamletusУ меня же как в таблице users, так и в таблице settings будет строго по одной строке для
каждого пользователя. А вот количество столбцов в settings будет примерно 20-30...

Это плохой дизайн . Заверни все настройки в JSON и храни в одном поле таблицы users.
Поэтому предлагаешь еще более плохой ???
Справочник пользователей никогда не бывает очень большим, поэтому 20-30 полей-настроек никак не повлияет на производительность.

Как вариант - прикрутить что-то вроде EAV. Пригодиццо не только для пользователей.
...
Рейтинг: 0 / 0
17.10.2016, 09:24
    #39327971
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Если настроек будет до 30, и есть надежда, что их количество со временем устаканится, то вполне допустимо будет добавить 30 полей в таблицу users и не мучиться. Выделять отдельную таблицу со связью 1:1 никакого смысла нет.

Если же предполагается, что регулярное выдумывание и добавление новых настроек для пользователей - нормальное явление в жизни БД - тогда да, можно EAV.
...
Рейтинг: 0 / 0
17.10.2016, 13:36
    #39328163
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Dimitry SibiryakovЭто плохой дизайн. Заверни все настройки в JSON и храни в одном поле таблицы users.нормальные формы теперь не модны?
...
Рейтинг: 0 / 0
17.10.2016, 13:54
    #39328183
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Cane Cat FisherЕсли же предполагается, что регулярное выдумывание и добавление новых настроек для пользователей - нормальное явление в жизни БД - тогда да, можно EAV.Количество настроек однозначно устаканится ))
...
Рейтинг: 0 / 0
17.10.2016, 20:06
    #39328521
Serguei
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
Чтобы понять стоит ли разносить данные по разным таблицам я смотрю как часто меняются данные и их зависимость друг от друга.
У меня, например, логины-пароли вынесены в отдельную таблицу- это явно независящие от остальных настроек данные, а настройки системы хранятся в EAV- очень легко добавлять новые настройки.
...
Рейтинг: 0 / 0
18.10.2016, 07:39
    #39328648
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
GamletusДва дня тестировал все предложенные варианты и всё-таки решил не выносить в отдельную таблицу, решил делать каждый тип настроек в отдельном столбце. Но однозначно решил делать кеш в виде файла для каждого пользователя, завернув пхпшной функцией json_encode/json_decode, чтобы понапрасну в базу не обращался. Как-то так ))


ты очень много думаешь.
сделай хоть как-то.

на самом деле нет смысла делить на две таблицы если у тебя строго 1:1 и новые настройки не будут добавляться.
...
Рейтинг: 0 / 0
18.10.2016, 13:22
    #39328933
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стоит ли разбивать таблицу на две?
MasterZivты очень много думаешь.Потому, что если заранее много не подумать, то потом приходится много переделывать )) да и время позволяет никуда не спешить.

MasterZivсделай хоть как-то.Хоть как-то - это точно не для меня.

MasterZivна самом деле нет смысла делить на две таблицы если у тебя строго 1:1 и новые настройки не будут добавляться.Да, я это уже понял, решил всё в одной таблице без разбивки, так явно будет проще.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли разбивать таблицу на две? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]