Stek

Рейтинг
315
Регистрация
23.05.2004

Какая локация, что за CPU ?

провайдер +id юзера = его логин в твоей системе

ortegas:
Сложность чего? Производительность кода сильно упадет?

А возьмите листочек бумаги, да начертите логику, когда работа с двумя таблицами или с десятком.

Я уже свою точку зрения (как бы делал сам) высказал. Принять или нет - уже за вами.

Вам накидали вариантов развития плюсов и минусов, далее решайте сами.

edogs, у вас фактически 2 варианта:

1) хранить строго типизированную информацию в одной таблице

2) хранить просто информацию в двух таблицах, или как еще предлагалось в едином поле в виде json или другой структуры.

Хранить же в разных таблицах по типам данных - это бред. Выигрыша ноль, сложность большая. Но вы всегда в праве набить свои собственные косяки и шишки, тут спору нет :D

Москвичи редко город указывают, ибо жизни за мкадом нет. А на Украине даже вэбмани прикрыли, так что гривна едина по всей планете :D

Кстати похожей манией страдают англичане, они цены в фунтах указывают, даже когда рекламят свои услуги на мировой рынок.

ortegas:
Stek, ну пока что я решил привести таблицу к 3 нормальному виду. То-бишь, под каждое значение - своя таблица + строгая типизация для полей + учет. Критика?

Я тоже так раньше страдал, когда хотел сделать идеальный код. Но требования пользователей обламывали все мои старания, поэтому я стал делать проще и жить стало легче 🤪

В вашем "телефонном" случае сначала придет бухгалтер и поинтересуется "а как мне записать номер клиента, у которого надо дополнительно код внутренней телефонной станции вводить, т.е. 1452367(312). Вот так, как у него на визитке".

А далее из столовой ваш любимый шеф повар, с запросом "а как к телефону указать примечание [при звонке спросить Любу]".

И будете вы вечно туда сюда менять структуру таблицы, которая при ляме записей будет на пол часа зависать с операцией alter table и под конец вообще рухнет. А с innodb никаких repair table не предусмотрено 🙅

В то же время дай запись в виде text - и пускай туда хоть пароль к черту лысому пишут.

Если вы хотите хранить строго типизированную структуру - то делайте как на вашем скришоте. Если же просто хранить данные, делайте из двух таблиц. Задайте поле text или blob и живите спокойно.

Какой смысл делить на "VARCHAR(255) VARCHAR(50)", если для базы это один и тот же тип.

Строгая типизация нужна, когда вы работаете с жестко заданными данными. А вашем случае, структура из двух таблиц, будет имитацией nosql с выборкой по ключу.

Ну вытянете 100 связанных записей, не трагедия совершенно. Зато нормальная расширяемость при случае.

Понадобиться хранить фотографию, скан визитки контакта - в третью таблицу таким же образом, где уже blob поля.

У меня сейчас на одном из проектов за пару лет данных в похожей табличке, только с text полями, уже под 20 миллионов собралось. Выборка по индексированному varchar полю менее секунды. А по int первичному ключу вообще моментом.

Экономия на спичках в виде размера поля ничего не даст.

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

Все равно поля юзера будете по ключу вытягивать.

Почему поле телефона int а не тот же varchar ? Телефоны могут по разному записываться http://stdcxx.apache.org/doc/stdlibug/26-1.html

Всего: 2766