2015-04-27 5 views
0

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

Мое желание: У меня есть приложение, в котором есть вкладка «местоположения» и вкладка «контакт». Эти данные будут извлечены из базы данных. Информация будет заполнена в cms. Для контакта вы можете выбрать две вещи: выберите существующий контакт из местоположения (который вытащил имя + почту) или создайте новый. В моем файле я затем извлекаю данные из таблицы контактов и просто показываю строки в элементах выбора (см. Ниже краткий пример).

Так что в моем контактном таблицы мне нужно иметь две вещи: либо ссылку на имя + почту из моей таблицы местоположения или новую запись (пользовательские почты + имя)

У меня есть две таблицы:

+-------------------+ 
| LOCATION   | 
+-------------------+ 
| primary   | 
| name    | 
| zip    | 
| mail    | 
| ...    | 
+-------------------+ 

+-------------------+ 
| CONTACT   | 
+-------------------+ 
| primary   | 
| (lid)    | 
| name    | 
| mail    | 
+-------------------+ 

Взаимосвязь между местоположением и контактом - отношение один к одному/нет. Таким образом, могут быть места без контакта.

Контакт может быть двумя вещами: ссылкой на местоположение (которое затем тянет имя + почта оттуда), так что, когда пользователь обновляет местоположение, контакт автоматически обновит или создаст «пользовательский» контакт.

Ex:

Пользователь создает местоположение с: именем «Test» почта «[email protected]»

Пользователь выбирает «Тест» для создания нового контакта, который: тянет «Тест» и «[email protected]» в качестве имени и почты от местоположения таблицы (также обновляет его, когда местоположение обновляется)

Пользователь создает контакт с: имя почты «Custom» «[email protected]»

I затем введите контактную форму, которая извлекает данные из таблицы контактов, так что затем отображается:

<select> 
    <option>Test</option> 
    <option>Custom</option> 
</select> 

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

Заранее благодарен!

+0

, который вы хотите заполнить выпадающим списком со значениями из базы данных ?, на каком языке вы используете? – Haris

+0

Я использую php, но заполнение значений из базы данных не является проблемой. Проблема заключается в комбинации в таблице 1) пользовательских данных, заполненных пользователем, и 2) данных, относящихся к другой таблице. –

+0

Я не могу увидеть общее поле в обеих таблицах, которое можно было бы использовать для ссылок? – Haris

ответ

1

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

+-------------------+ 
| LOCATION   | 
+-------------------+ 
| id    | 
| contact_id  | 
| zip    | 
| ...    | 
+-------------------+ 

+-------------------+ 
| CONTACT   | 
+-------------------+ 
| id    | 
| name    | 
| mail    | 
+-------------------+ 

При изменении местоположения Если пользователь выбирает существующий контакт, вы можете сохранить идентификатор в contact_id. Если они добавляют новый, то сначала попросите приложение сохранить новый контакт, а затем использовать этот вновь созданный контактный идентификатор

+0

Эй, я не знаю точно, как отобразить это в моем сообщении, но связь между местоположением и контактом - это отношение один к одному/нет.Таким образом, могут быть места без контакта. –

+0

, так что один и тот же контакт не может быть в нескольких местах? –

+0

, вы можете разрешить contact_id в местоположении иметь нулевое значение, указывая, что нет соответствующей записи контакта. –

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