Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 514
от 26.06.2006, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 365, Экспертов: 70
В номере:Вопросов: 2, Ответов: 7


Вопрос № 46855: Добрый день. Возник спор на работе как лучше в базе хранить ФИО, целиком (в одной ячейке) либо по отдельности (т.е. Фамилия Имя Отчество в разных ячейках). Подскажите варианты. Желательно объяснить свою точку зрения. Спасибо. А...
Вопрос № 46876: Здравствуйте! Я от нечё делать полез в "почтовые спонсоры". Конечно, работать никто и не думал, а вот прогу написать чтоб она автоматом работала это по нашему! Так вот я все адреса знаю и всё должно было бы работать, но оказалось если грузи...

Вопрос № 46.855
Добрый день.
Возник спор на работе как лучше в базе хранить ФИО, целиком (в одной ячейке) либо по отдельности (т.е. Фамилия Имя Отчество в разных ячейках).

Подскажите варианты. Желательно объяснить свою точку зрения.

Спасибо. Алексеев А.В.
Отправлен: 20.06.2006, 22:17
Вопрос задал: Алексеев Александр Владимирович (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Татьяна
Здравствуйте, Алексеев Александр Владимирович!
Безусловно разделение этих полей добавляет некоторые преимущества, например, вы сможет немного быстрее узнать сколько у вас в базе "Андреев" и сколько "Ивановичей"
Хотя, честно говоря, если вам уж это очень понадобится (думаю редко) такая информация, вы без труда сможете организовать подобные запросы при помощи like и при условии хранения в одной ячейке.
C другой стороны, ФИО в одной ячейке дает свободу на тот случай, если у вас могут храниться не полные имена, а например инициалы - как то несолидно хранить их в отдельных ячейках.
Я бы все-таки сделала в одной, ибо некие специфические запросы по именам бывают достаточно редко.
А если у вас еще и индексы на это поле будут ставиться, то совсем будет нелогично ставить индекс на 3 поля. Да и честно говоря, не могу я вспомнить базу с разделением этих полей. Конечно, они есть, но их все-таки их не так много.
Хотя опять же - наверное много зависит от предметной области
---------
Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 20.06.2006, 22:43
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо.

Отвечает: Евгения
Здравствуйте, Алексеев Александр Владимирович!
это вопрос не много не по Делфи :)
Существует такое понятия, как нормализация баз данных.
Первая и основная нормальная форма баз данных звучит так:
"Отношение находиться в первой Нормальной Форме тогда и только тогда, когда все используемые домены содержат скалярные значения. Иными словами, значения всех полей отношения должны быть неделимыми (подразумевается логическая неделимость)."
Если Фамилия Имя и Отчество вместе, то база данных будет считаться ненормализованной. Это правила такие :) Давно их уже придумали :)
Сами посудите, что гораздо удобнее хранить эти данные в разных ячейках.
Производить запросы например по имени и фамилии, вдруг вам отчество просто не известно. Или Вам надо найти всех Николаев в предприятии и поздравить их с именинами, например. Или Вам известна Фамилия работника и инициалы его, гораздо проще делать запросы, когда фамилия, имя и отчество находятся в разных ячейках. При смене фамилии чьей-то (хотя кто-то может и имя и отчество поменять), гораздо проще произвести замену и т.д.

Счастливо!
---------
Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?
Ответ отправила: Евгения (статус: 7-ой класс)
Ответ отправлен: 20.06.2006, 22:45
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо.

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Алексеев Александр Владимирович!

Если на данном этапе работы нет необходимости разделять Фамилию, Имя и Отчество, то с первого взгляда кажется, что лучше сохранять ФИО в одной ячейке - проще вносить данные в базу.

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

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

Также, например, при вводе одного "клиента" вы написали ФамилияИмяОтчество, а при вводе другого ИмяОтчествоФамилия - выделить из обоих вариантов Фамилию будет не очень легко , а если все это будет в разных полях - вероятность ошибки - поменьше .

Исходя из вышеизложенного советую Вам все-таки ФИО разделять на три ячейки (иногда даже в адресе советуют номер дома и номер квартиры разделять в разные ячейки).

Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 20.06.2006, 22:52

Отвечает: METALLDOCTOR
Здравствуйте, Алексеев Александр Владимирович!
Это зависит от ваших конкретных нужд, если, БД используется в офф. документах, то там достаточно одной ячейки, в которой будут "Фамилия И. О.", а если в проге типа адресной книги, то лучше в отдельных полях, что бы можно было представлять в разных форматах, например "Фамилия Имя Отчество" или "Имя Отчество, Фамилия", техническая сторона, я считаю, тут менее важна, чем удобство, но выборка трёх полей при больших объёмох будет грузиться ощутимо дольше...
---------
Ни о чём не жалею!
Ответ отправил: METALLDOCTOR (статус: 3-ий класс)
Ответ отправлен: 20.06.2006, 22:53
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо.

Отвечает: LanK
Здравствуйте, Алексеев Александр Владимирович!

Ну раз Вам необходимо несколько мнений и как то странно мнения разделились (!!?) то выскажу свои доводы:

Мое мнение однозначно разделять.
Те же инициалы легче вытащить "взяв" только ПЕРВЫЕ буквы поляИ поляО. А попробуйте написать запрос когда они в одной строке? К тому же сортировка базы как правило производится по фамилиям - вы поиск будете делать? И скроссть базы будет существенно выше если вы сначала сделаете выборку всех Ивановых, чем всех Ивановых (Полных).

Ну и абсолютно согласен с "Евгения" : нормализация баз данных !!!

Вступили на стезю программистов Баз Данных (БД)? Очень рекомендую прочитать книгу Мартин Грабер "Введение в SQL" книге уже 16 (!) лет, но лучше ничего более написано не было. И там _чистый_ ANSI SQL - работать будет всегда и на всех БД.
---------
Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: Студент)
Ответ отправлен: 21.06.2006, 11:46
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо.

Отвечает: Zлоумышленник
Здравствуйте, Алексеев Александр Владимирович!
Согласно рекомендациям ВСЕХ учебников по БД - храните раздельно. Я по работе сталкивался с ФИО в одном поле в чужих БД. Ну и всегда материл их авторов.
Но хуже всего был адрес (улица корпус дом квартира) всё в одном флаконе.
---------
Стандарт есть легкоусвояемая форма, маскирующая присутствие или отсутствие содержания.
Ответ отправил: Zлоумышленник (статус: 9-ый класс)
Ответ отправлен: 21.06.2006, 19:05
Оценка за ответ: 4
Комментарий оценки:
Огромное спасибо.


Вопрос № 46.876
Здравствуйте! Я от нечё делать полез в "почтовые спонсоры". Конечно, работать никто и не думал, а вот прогу написать чтоб она автоматом работала это по нашему! Так вот я все адреса знаю и всё должно было бы работать, но оказалось если грузить страницы через FastNet то ихний скрипт не видет кукисов и не может авторизировать меня. На счёт кукисов это теория, а вот как обойти эту проблему без использования браузера!?
Буду благодарен за советы, идеи и решения!
Отправлен: 21.06.2006, 02:46
Вопрос задал: Mirgorodchenko Anton (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Mirgorodchenko Anton!
Иногда проше просто полностью сэмулировать поведение пользователя и работать через TWebBrowser. Впрочем, ваши "спонсоры" могли дать вам что-дь, устанавливающееся поверх IE... и l 6;но может и не сработать с встроенным броузером Delphi.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 21.06.2006, 11:49


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное