2014-01-06 6 views
0

У меня есть таблица MySQL, которая хранит пользовательские сообщения электронной почты:Сохранение нескольких значений для одной переменной (PDO)

user_id | user_phonenumber 
---------------------------- 
id1  | 555-123456789 

Я хочу, чтобы позволить пользователю хранить несколько и номера телефонов я не хочу, чтобы ограничить число номеров, с которыми может быть связан пользователь.

Каков наилучший способ структурирования моих данных и как будет работать запрос в PDO?

Например, следует ли хранить их все в одном поле с разделителями запятой, а затем анализировать выходные данные при возврате запроса или использовать другую таблицу и иметь каждую строку как отдельный номер с общими user_id? Как будет работать поиск (пожалуйста, укажите пример кода, если это возможно)?

Thanks

+1

Используйте таблицу со строкой для каждого адреса электронной почты для каждого пользователя. Список, разделенный запятыми, - это кошмар (например, если вы хотите найти пользователя с адресом электронной почты [email protected], вам нужно будет использовать find_in_set или LIKE с ведущими и конечными символами% - оба из них не будут использовать индексы и будет медленным) – Kickstart

ответ

1

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

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

В любом случае Если это не домашнее задание или подобное короткое жизненное задание, вам следует выбрать подход 1 номер телефона/1 запись.

Я имею в виду то, как это может быть в будущем доказательства:

create table user_phonenumbers(
    id   auto_increment primary key. 
    user_id  integer references user(id), 
    phonenumber varchar(32) 
); 
+0

Спасибо, так что предположим, у меня есть отдельная таблица с 2-мя символами для 1 id, как бы выглядел запрос? – alias51

+0

Я добавил примерную структуру таблицы. Вы также можете выбрать из этой новой таблицы. Я не понимаю, на ваш вопрос 100% ваш вопрос ... –

+0

Извините, я имею в виду, я хотел бы вернуть все фонограммы из user_phonenumbers, как выглядел бы оператор PDO? – alias51

0

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

Смежные вопросы