Хранения адресов и телефонов в таблице

Рейтинг: 1Ответов: 1Опубликовано: 03.03.2015

Возник вопрос при создании таблицы. Делаю таблицу пользователей. Нужно заносить информацию: адрес проживания и адрес регистрационной прописки. Как лучше сделать все это, что пришло сразу в голову, так это сделать поля:

*для адрес регистрации:*
-город
-район
-улица и номер дома

*адрес прописки:*
-город2
-район2
-улица и номер дома2

Все это в одной таблице, но получается дублирования полей. То же самое и с телефоном, может быть один телефон, а может быть и 2 телефона. Как по мне, дублирования полей - не совсем правильное решения. Видел, делают одно поле для телефона и заносят данные в формате json.

Ответы

▲ 3Принят

То, что вы хотите реализовать, называется нормализацией таблицы, и это очень правильно, что вы захотели ее осуществить. Обычно сюда приходят те, кто борется с последствиями отказа от нормализации.

Вам нужно сделать отдельные таблицы "телефон" и "адрес":

телефон
  id INTEGER PRIMARY KEY AUTO INCREMENT
  phone VARCHAR(32) NOT NULL
  owner INTEGER NOT NULL
адрес
  id INTEGER PRIMARY KEY AUTO INCREMENT
  city VARCHAR(128) NOT NULL
  district VARCHAR(64) NULL
  street VARCHAR(128) NULL
  building VARCHAR(128) NOT NULL

И в основной таблице ссылаться на адрес по его id, а в таблице телефонов ссылаться на основную запись через owner.

Видел делают одно поля для телефона и заносят данные в формате json.

Эт когда человек любит переделывать все по два раза и хочет написать все красиво, но не сейчас, а через полгода.