Дизайн базы данных: пользователь с контактной информацией - PullRequest
0 голосов
/ 24 мая 2011

У меня вопрос по дизайну базы данных.

В моем приложении пользователь имеет контактную информацию, включая

  • номер телефона
  • Адрес электронной почты
  • адресная линия 1
  • почтовый ящик
  • Населенный пункт (Город)

Это текущий файл, расположенный в таблице «user» с другой информацией, такой как имя пользователя, имя, ...

Дело в том, что пользователь должен иметь такую ​​же информацию (телефон, электронная почта, ...), но для своей компании.

Кажется излишним добавлять дополнительные поля в таблицу «user». Поскольку данные похожи, я мог бы создать таблицу «ContactInfo» с полями:

  • телефон
  • Адрес электронной почты
  • адрес
  • почтовый ящик
  • ...

Это хорошая идея, и как мне установить связь между таблицей user и этой таблицей contactInfo? 1035 *

РЕДАКТИРОВАТЬ: Я забыл сказать, что контактная информация компании не является обязательным. У пользователя не может быть никакой компании.

Ответы [ 3 ]

1 голос
/ 24 мая 2011

Все, что связано с отношением 1: M между пользователем, должно находиться на его собственной таблице. Если вы заботитесь только о первичной контактной информации пользователя, то можете оставить ее на столе пользователя.

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

0 голосов
/ 24 мая 2011

У вас должна быть отдельная таблица телефона, отдельная таблица электронной почты и отдельная таблица адресов.У людей больше, чем один из трех.

0 голосов
/ 24 мая 2011

Отдельные таблицы являются правильным выбором.

CREATE TABLE users (
  id INT UNSIGNED NOT NULL,
  foo VARCHAR(50),
  PRIMARY KEY (id) );

CREATE TABLE user_contact_info (
  id INT UNSIGNED NOT NULL,
  user_id INT UNSIGNED NOT NULL,
  contact_type VARCHAR(40) NOT NULL,
  phone VARCHAR(20),
  email VARCHAR(200),
  address VARCHAR(200),
  postal_box VARCHAR(20),
  PRIMARY KEY (id, user_id) );

Если ваша база данных поддерживает внешние ключи, то должен быть внешний ключ от user_contact_info.user_id до users.id.user_contact_info.contact_type будет установлен на work или home или любые другие категории, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...