Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение двух адресов в одной строке. 
:(
    Опции темы
Wowa
Дата 8.2.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Как бы вы сделали хранение двух почтовых адресов человека?

Т.е. есть таблица со списком людей, но может быть такое, что у человека два почтовых адреса.
Город, индекс, адрес - хранятся в отдельных столбцах.
PM WWW   Вверх
Guest
Дата 8.2.2005, 19:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я делаю в таких ситуациях делаю так:

Таблица1 (люди):

Id_people|Name_people


Таблица2 (адреса):

Id|Id_people|Adress|.....|.....
  Вверх
Alex
Дата 8.2.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



Guest = Alex smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
z-END
Дата 8.2.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: нет
Всего: 102



дык пробел,запятая, тока с запятой, в мыле вроде как не используется ими наверно и разделять


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Wowa
Дата 8.2.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Alex т.е. в первой таблице хранишь поля, которые не могут повторяться, а во второй все остальные(двойные и тройные)?
PM WWW   Вверх
Alex
Дата 8.2.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



угу


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Wowa
Дата 8.2.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



А если надо хранить еще по несколько телефонов (до 5) и по несколько еще каких-то параметров.
Заводить отдельную таблицу для каждого вида данных?
PM WWW   Вверх
Alex
Дата 8.2.2005, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



Цитата(Admin @ 8.2.2005, 20:14)
А если надо хранить еще по несколько телефонов (до 5) и по несколько еще каких-то параметров.

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


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Wowa
Дата 8.2.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 1
Всего: 290



Спасибо. Решил сделать так:

данные для вынесения в отдельные таблицы, т.к. этих данных может быть несколько:
- адрес
- адрес партнера


Таблица адресов:
id|id_people|страна|индекс|город|адрес|телефон|факс


а данные так:
1|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
2|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
3|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
то получаем делаем так, то решаем проблему с несколькими адресами.



Таблица партнеров:
id|id_people|адрес


PM WWW   Вверх
Mal Hack
Дата 8.2.2005, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Admin еще как вараинт.
Если потом с данными будешь в PHP работать, то можно второй телефон, второе мыло и т.п. хранить на новой строчке, т.е.
[email protected]\n
[email protected]

Вариантов пресечения со случайно введенным значением пользователя практически ноль.
PM ICQ   Вверх
igon
Дата 9.2.2005, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 3
Всего: 21



Цитата
Заводить отдельную таблицу для каждого вида данных?

Да, для рекомендуемой Alex классической схемы "master-details" именно так и придется поступать. И при запросах эти отдельные таблицы придется ОБЪЕДИНЯТЬ.
Есть еще вариант, с точки зрения теории, возможно, весьма спорный, и пригодный далеко не в любом случае:
Цитата
ID|ID_people|parameterName|parameterValue|parameterType

Получается узкая и длинная, как "кишка", но ОДНА таблица.
Если все parameterValue одного типа (String, как, похоже, в задаче Admin'а), поле parameterType вообще не нужно.
Добавление нового вида данных достаточно просто - надо его только достойно "обозвать". Запросы к таблице тоже особой сложностью отличаться не будут, ИМХО smile

Цитата
Таблица адресов:
id|id_people|страна|индекс|город|адрес|телефон|факс

а данные так:
1|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
2|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
3|1|страна|индекс|город|адрес|телефон|факс|адрес партнера
то получаем делаем так, то решаем проблему с несколькими адресами.

Таблица партнеров:
id|id_people|адрес


ИМХО, лучше так:

1|1|страна|индекс|город|адрес|телефон|факс
2|1|страна|индекс|город|адрес|телефон|факс
3|2|страна|индекс|город|адрес|телефон|факс
4|2|страна|индекс|город|адрес|телефон|факс
5|3|страна|индекс|город|адрес|телефон|факс

Таблица партнеров:
id|id_people|id_partner
1|1|2
2|1|3
3|2|1
4|3|1
т.к. адрес есть и у people, и у его партнеров. По ID people можем определить его партнеров, а по id_partner=addressTable.id_people - их адреса.




--------------------
Хотите поговорить об этом?
PM   Вверх
Vit
Дата 9.2.2005, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



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


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
LSD
Дата 9.2.2005, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(Vit @ 9.2.2005, 07:00)
...если не будет - можно хоть в одном поле через точку с запятой...

Это черевато тем, что надо делать большой размер поля, и в определенных обстоятельствах его может не хватить.
Как я понимаю речь идет о MySQL, а там VARCHAR всего 255 символов.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Alex
Дата 9.2.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



Цитата(LSD @ 9.2.2005, 22:36)
Как я понимаю речь идет о MySQL, а там VARCHAR всего 255 символов.

А он mediumtext поставит smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Vit
Дата 10.2.2005, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(LSD @ 9.2.2005, 13:36)
VARCHAR всего 255 символов.



У нас на фирме ОЧЕНЬ большая база email (десятки миллионов), адресов длиннее 50 символов то-ли 2 то ли 3 штуки... Вероятность что 255 символов не хватит для 2х email ничтожна


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.