Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

Нормализация информации   Найти похожие ветки 

 
Альберт   (2008-02-15 14:32) [0]

Доброго времени суток.

Вопрос знатокам:

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

2.Могут ли при этом быть проблемы с сортировкой основной таблицы ?

Прошу привести аргументы за и против.

Заранее спасибо за ответы.


 
Anatoly Podgoretsky ©   (2008-02-15 14:47) [1]

Связь один к одному оправдана только на плохих базах.


 
Sergey13 ©   (2008-02-15 14:49) [2]

> [0] Альберт   (15.02.08 14:32)
> а в основной проставлять только ИД записи имени.

А что содержится в основной?


 
Альберт   (2008-02-15 14:54) [3]

Ладно скажу так.
У меня три важных поля: "Фамилия", Имя, "отчество".
Так вот при наличии сотни тысяч записей считаю необходимым поле "Имя" вынести в отдельную таблицу. Таблица имен будет максимально заполнена из всех известных имен.


 
Альберт   (2008-02-15 14:56) [4]

Да, основную таблицу не я придумал.


 
Альберт   (2008-02-15 14:58) [5]

На данный момент три вышеприведенных поля в составе "Primary key"


 
Sergey13 ©   (2008-02-15 15:01) [6]

> [5] Альберт   (15.02.08 14:58)

И что, ты не допускаешь мысли о двух (или более) Ивановых Иванов Ивановичей?

ЗЫ: было сомнение, теперь оно отпало - ты фигней занимаешься. см [1].


 
Anatoly Podgoretsky ©   (2008-02-15 15:04) [7]

> Sergey13  (15.02.2008 15:01:06)  [6]

Какие проблемы, одного уволить.


 
Альберт   (2008-02-15 15:04) [8]


> Sergey13 ©   (15.02.08 15:01) [6]

Ну чего сразу стеб про одинаковые записи.

Есть поле еще "серия и номер паспорта"


 
Альберт   (2008-02-15 15:06) [9]


> было сомнение, теперь оно отпало - ты фигней занимаешься.
>  см [1].

Не убедил


 
Альберт   (2008-02-15 15:12) [10]

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

Пример: склонение имен по падежам.


 
Сергей М. ©   (2008-02-15 15:12) [11]


> чего сразу стеб про одинаковые записи


Почему стеб-то ?
Вполне резонный вопрос - если такая ситуация возможна, то почему у тебя она недопустима ?

Если уж на то пошло, то выносить в отдельный справочник следует все три поля : Имя, Отчество, Фамилия.


 
Sergey13 ©   (2008-02-15 15:14) [12]

> [9] Альберт   (15.02.08 15:06)
> Не убедил

Я и не пытался. Ты же не привел аргументов в пользу решения вынести имена (кстати а почему отчество тогда тоже ен вынести?) в справочник. Ты просто спросил "А не забабахать ли нам вот такую фиговину?"


 
Альберт   (2008-02-15 15:15) [13]


> Если уж на то пошло, то выносить в отдельный справочник
> следует все три поля : Имя, Отчество, Фамилия.


Вот это уже нормальный ответ.
Я и спросил про "Имя", так как на основании этого поля можно создать и отчество как для мужчин так и женщин.


 
Сергей М. ©   (2008-02-15 15:15) [14]


> Пример: склонение имен по падежам


Секретарша-блондинка упарится изобретать для этой таблицы падежные варианты имен корейцев, китайцев и прочих узбеков)


 
Anatoly Podgoretsky ©   (2008-02-15 15:15) [15]

> Сергей М.  (15.02.2008 15:12:11)  [11]

Я пока ни слова не вижу про справочник, так какие то общие рассуждения и никакой постановки задачи.


 
Альберт   (2008-02-15 15:16) [16]


> Секретарша-блондинка упарится изобретать для этой таблицы
> падежные варианты имен корейцев, китайцев и прочих узбеков)

согласен, плохой пример.


 
Сергей М. ©   (2008-02-15 15:16) [17]


> "Имя", так как на основании этого поля можно создать и отчество
> как для мужчин так и женщин


Как насчет "Оглы" ?)


 
Альберт   (2008-02-15 15:18) [18]


> Я пока ни слова не вижу про справочник

извините, не так выразился.

Таблица-справочник имен с дополнительными полями.


 
Сергей М. ©   (2008-02-15 15:18) [19]


> плохой пример


Но это же не означает, что секретарше таки не придется работать при помощи твоей программы с прочими узбеками, так ?


 
Сергей М. ©   (2008-02-15 15:20) [20]


> Таблица-справочник имен


Почему только имен-то ?

А фамилий и отчеств ? Их же тоже надо склонять, коль уж требуется автоматизация процесса падежного склонения узбеков)


 
Sergey13 ©   (2008-02-15 15:24) [21]

> [10] Альберт   (15.02.08 15:12)
> можна очень много сделать полезного для приемной

А чего приемная то? Прачечная что-ли? Или премная депутата?
Чего хочется то в конечном итоге?


 
Anatoly Podgoretsky ©   (2008-02-15 15:27) [22]

> Альберт  (15.02.2008 15:18:18)  [18]

Смотря какая цель, можно немного размер базы уменьшить, за счет усложнения работы.
Но решение иногда используется, а критерием является условия работы оператора.


 
Сергей М. ©   (2008-02-15 15:29) [23]

Вот придет в приемную какой-нть Остап Ибрагим Сулейман Берта Мария Бендер-Бей - попробуй-ка занести его в свой электронный гроссбух да посклонять)


 
Sergey13 ©   (2008-02-15 15:31) [24]

> [8] Альберт   (15.02.08 15:04)
> Есть поле еще "серия и номер паспорта"

1.А если у человека нет [вообще или с собой] паспорта? Или он не российский например?
2. А если потребуются таблицы ссылающиеся на твою "основную" (ведь логично предположить и наличие НЕосновных), ты будешь все 5 атрибутов переписывать для ссылки?
3. А если человек поменяет паспорт/ФИО?

Это к определению твоего ПК.


 
Правильный_Вася   (2008-02-15 15:31) [25]

видел я подобные справочники
и реализация никогда не выходила за рамки самой идиотской

1. кроме того, в зависимости от национальности человека его имя может склоняться или не склоняться по падежам, даже если оно одинаковое
2. многие имена/отчества/фамилии имеют несколько форм для каждого падежа, но в паспорте у человека прописано строго одно (например, Витальевич и Виталиевич)
как ты это в справочник хочешь втулить?

так что вывод: хочешь формы склонения - встраивай их в карточку конкретного клиента, а не в абстракный справочник имен


> спросил про "Имя", так как на основании этого поля можно
> создать и отчество как для мужчин так и женщин.

интересен взгляд на отчество от имени Елена


 
Сергей М. ©   (2008-02-15 15:34) [26]


> интересен взгляд на отчество от имени Елена


Это уже не отчество, а какое-то "матершинство" получится - "Еленович")..
Хотя никто вроде бы не мешает челу с именем "Елена" фигурировать в ксиве мужчиной)


 
Johnmen ©   (2008-02-15 15:47) [27]

1. Не только не имеет, но и является полной ерундой.
2. вопрос отпал...


 
Альберт   (2008-02-15 16:35) [28]


> интересен взгляд на отчество от имени Елена


до конча не читаем ?

> Таблица-справочник имен с дополнительными полями.

для имена Елена поле "Отчество" будет "null", достаточно стеба.

То что хотел услышать, я уже услышал.

Всем спасибо.


 
Сергей М. ©   (2008-02-15 16:39) [29]


> для имена Елена поле "Отчество" будет "null"


Дискриминация сексменьшинств)


 
Правильный_Вася   (2008-02-15 16:42) [30]


> для имена Елена поле "Отчество" будет "null", достаточно стеба.

а если это мужское имя какого-нибудь малайца?

снимаем шоры с мышления, расширяем сознание


 
Anatoly Podgoretsky ©   (2008-02-15 16:44) [31]

> Сергей М.  (15.02.2008 16:39:29)  [29]

Какие еще меньшинства - большинство


 
Anatoly Podgoretsky ©   (2008-02-15 16:45) [32]

> Правильный_Вася  (15.02.2008 16:42:30)  [30]

И вообще астрашируемся.
Программист должен уметь абстрактно думать.


 
Сергей М. ©   (2008-02-15 16:47) [33]


> Anatoly Podgoretsky ©   (15.02.08 16:44) [31]


В смысле отцы с традиционно женским (по кр.мене по русским народным представлениям) именем с нек.пор перешли в разряд большинства ?)


 
Правильный_Вася   (2008-02-15 16:50) [34]

и вообще, второе (третье и т.п.) имя не обязано быть отчеством, тем более производным от мужского имени
пример уже приводили
Остап Сулейман Берта Мария Бендер-бей


 
Альберт   (2008-02-15 17:18) [35]


> Чего хочется то в конечном итоге?

Максимальную информацию по клиентам.


> Смотря какая цель, можно немного размер базы уменьшить,
> за счет усложнения работы.
> Но решение иногда используется, а критерием является условия
> работы оператора.

Хороший совет, отдельное спасибо.


> 1.А если у человека нет [вообще или с собой] паспорта? Или
> он не российский например?

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


 
Павел Калугин ©   (2008-02-15 17:45) [36]


> Альберт   (15.02.08 17:18) [35]

1. не имеет, так же как и не имеет смысла ключом делать документ. ИНН еще куда ни шло но не у всех он есть. а документ? один и тот же Вася Пупкин с паспортом и с загран паспортом уже 2 Васи?

2. проблемы будут
    1. со вставкой удалением изменением
    2. с написанием горы кода -> "утяжеление" системы
    3. операторы взвоют. Особенно если ФИО больше 3-х слов
    4. сортировать можно по разным полям без проблем но выборка из одной таблицы все же чуть быстре чем из 2-х


 
Альберт   (2008-02-15 17:45) [37]


> 2. А если потребуются таблицы ссылающиеся на твою "основную"
> (ведь логично предположить и наличие НЕосновных), ты будешь
> все 5 атрибутов переписывать для ссылки?


про 5 атрибутов, если не жалко времени по подробнее, плиз.


 
Альберт   (2008-02-15 17:52) [38]


> Павел Калугин ©   (15.02.08 17:45) [36]


Большое Спасибо за толковый ответ, как раз то что нужно и без подначек.


 
Правильный_Вася   (2008-02-15 18:11) [39]


> без подначек

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


 
Ega23 ©   (2008-02-17 10:19) [40]

Хочу напомнить, что далеко не у всех есть Фамилия, Имя и Отчество.
У монголов, например, нет фамилии. Только Имя и Отчество.
У каких-нибудь зимбабвийцев кроме основного имени может быть родовое и запасное.
И т.д.
Это я всё к тому, что специфику применения справочника тоже нужно учитывать.


 
sniknik ©   (2008-02-17 13:08) [41]

> специфику применения справочника тоже нужно учитывать.
с нее вообще надо начинать, а не общие теории разводить.

у меня к примеру местная (для своей конторы) программа по учету работ, так там вообще никакого разделения на имена, фамилии, просто одно поле "ФИО" и пишут, что хотят... и какой смысл "парится" если всего таких записей 500шт (по количеству работников конторы), ну будет там небольшая денормализация, ну и что, все одно никаких поисков/группировок отдельно по именам/фамилиям не бывает, единственное где используется подставляется к основной таблице, показать кто заявку оформлял и выполнял (ну не ID же, т.е. ключ по сотруднику там показывать ;)). сортировка есть конечно если захотят по фамилии (т.к. ее забивают первой) но не пользуется, т.к. работа исключительно с группами по отделам/должностям а такого идиотизма как "посмотреть сколько сделано товарищами с именем Вася например ..." пока нет, и вряд ли будет, а если вдруг когда возникнет, на тот невероятный случай и будем "парится", а не заранее.

но если бы в программе список людей был основным, типа как общесоюзный справочник, или телефонный... тогда бы "моя" огранизация таблицы людей была бы ущербной т.к. там как раз поиск по "Васям" вполне естественен... типа "помню что Вася, помню что в 12й квартире, и вроде на улице Пушкина... ну вы выведите по первым 2м параметрам, если там немного то почитаю и по улицам вспомню..."

а вот так абстрактно, как в [0], к некой базе с неизвестно чем занимающейся..., имхо, бред. (как в общем то практически все абстрактное...)
хотя там у него проскакивало "сотни тысяч", т.е. всетаки больше на справочник по людям похоже, тут бред в естественном ключе... прямо показательный бред, как аргумент в споре естественный vs искусственный можно использовать.


 
Ega23 ©   (2008-02-17 13:50) [42]

Кстати, я бы всё равно нормализацию по именам-фамилиям начал бы от миллиона человек делать.


 
Sergey13 ©   (2008-02-17 13:55) [43]

2Альберт   (15.02.08 17:45) [37]

> про 5 атрибутов, если не жалко времени по подробнее, плиз.

Если ПК одной таблицы состоит из 5 полей, то в ссылающейся на нее таблице должны быть те же 5 полей для ссылки на первую.


 
sniknik ©   (2008-02-17 14:08) [44]

> Кстати, я бы всё равно нормализацию по именам-фамилиям начал бы от миллиона человек делать.
какая разница сколько там людей в базе если сама специфика справочника требует выборок/группировок по именам или фамилиям? будеш "вычленять" имя из общего поля?
главное всетаки не размер базы, а ее специфика. а вот если если на требования специфики можно "забить", ну не нужно там ничего "эдакого", то вторым уже размер, можно провести нормализацию только ради него...


 
Anatoly Podgoretsky ©   (2008-02-17 14:26) [45]

Я бы не назвал вывод фамилий в отдельный справочник нормализацией.
Не говоря уже об возможных аномалиях, сегодня Петров, а завтра Сидоров - это как последствие.


 
Anatoly Podgoretsky ©   (2008-02-17 14:28) [46]

Кроме того экономия байтов тоже не может являться критерием, разве что в терабайтных базах, а усложнение и артефакты налицо.


 
Sergey13 ©   (2008-02-18 08:51) [47]

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


 
Альберт   (2008-02-18 11:19) [48]


> Хочу напомнить, что далеко не у всех есть Фамилия, Имя и
> Отчество.
> У монголов, например, нет фамилии. Только Имя и Отчество.
>
> У каких-нибудь зимбабвийцев кроме основного имени может
> быть родовое и запасное.
> И т.д.
> Это я всё к тому, что специфику применения справочника тоже
> нужно учитывать.

Спасибо за хороший совет.

> хотя там у него проскакивало "сотни тысяч", т.е. всетаки
> больше на справочник по людям похоже,

Да, вы правы и он вырастет на порядок, постепенно.


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

Спасибо за хороший совет.


 
ANB   (2008-02-18 14:05) [49]


> Альберт   (18.02.08 11:19) [48]

ИМХО :
Если уж прикручивать такую штуку, то только в качестве вспомогательного справочника. Никаких ссылок, имя по прежнему хранить в текстовом виде. И только по кнопке/сочетанию кнопок, выдавать в качестве доп. сервиса.
Очень похоже было сделано в АСУ Экспресс-2.


 
Альберт   (2008-02-18 14:21) [50]

Так я уже понял, еще после 36 поста. Но я отписываюсь, увидев новые советы знающих людей.


 
Anatoly Podgoretsky ©   (2008-02-18 15:19) [51]


> то только в качестве вспомогательного справочника

А для этого не надо никаких отдельных таблиц, запрос distinct и в dbcombo его


 
ANB   (2008-02-18 15:51) [52]


> Anatoly Podgoretsky ©   (18.02.08 15:19) [51]

Ну это как репу почесать. Сейчас не великая проблема нарыть готовый справочник имен. А дистинкт будет значить, что только из ранее введенных предлагать будет. Во. Мысля.
дистинкт
юнион олл
справочник.


 
AnSi_Sr   (2008-02-18 20:25) [53]

Описанное выведение ФИО в справочнике - опасная тенденция в разработке архитектуры. Для любой мало-мальски сложной выборки при таком подходе очень быстро разрастается количество подзапросов или джойнов в селекте.


 
Ega23 ©   (2008-02-19 10:00) [54]

Кстати, насчёт паспорта: у военных паспорта нет. Есть или Военный билет, или Удостоверение личности.


 
ANB   (2008-02-19 10:05) [55]


> у военных паспорта нет.

Уже есть. У офицеров и прапорщиков - на руках, у срочников отбирают при призыве.
Причем сначала выдавали по блату, потом по желанию, а потом многие структуры стали требовать только паспорт (это незаконно, но хрен кому чего докажешь) и народ начал получать уже практически принудительно.


 
Альберт   (2008-02-19 10:15) [56]


> Кстати, насчёт паспорта: у военных паспорта нет. Есть или
> Военный билет, или Удостоверение личности.

Мой пост

>
> для этой цели есть документ его заменяющий, причем в отдельной
> таблице.


 
Альберт   (2008-02-19 10:25) [57]

CREATE DOMAIN "CITY" AS VARCHAR(20) CHARACTER SET WIN1251;
CREATE DOMAIN "DOG" AS VARCHAR(10) CHARACTER SET WIN1251;
CREATE DOMAIN "HOME" AS VARCHAR(7) CHARACTER SET WIN1251;
CREATE DOMAIN "MYNAME" AS VARCHAR(15) CHARACTER SET WIN1251;
CREATE DOMAIN "POST" AS VARCHAR(5) CHARACTER SET WIN1251
 CHECK ((VALUE >= "000" AND VALUE <= "99999")
OR (VALUE IS NULL));

CREATE TABLE "MAN_LIST"
(
 "MAN_NAME_F"   "CITY" NOT NULL,
 "MAN_NAME_I"   "DOG" NOT NULL,
 "MAN_NAME_O"   "MYNAME" NOT NULL,
 "MAN_R_DATE"   DATE,
 "MAN_GOR_CODE"  SMALLINT,
 "MAN_STR_CODE"   SMALLINT,
 "MAN_B1"   "HOME",
 "MAN_B2"   "HOME",
 "MAN_ROOM"   "HOME",
 "MAN_P_COUNT"   SMALLINT,
 "MAN_P_NUMBER"   SMALLINT,
 "MAN_E_COUNT"   SMALLINT,
 "MAN_E_NUMBER"   SMALLINT,
 "MAN_JOB_CODE"   SMALLINT ,
 "MAN_ORG_CODE"  SMALLINT,
 "MAN_CODE"   SMALLINT,
 "MAN_POST"    "POST",
 "MAN_P_DATE"    DATE,
 "MAN_P_CODE"    "DOG",
 "MAN_P_POLICY"    SMALLINT default 1,
 "MAN_DOOR"    SMALLINT default 1,
 "MAN_DOOR_CODE" SMALLINT,
 "MAN_R_COUNT"    SMALLINT default 1,
 "MAN_TEL_CODE"    SMALLINT,
 "MAN_MOB_CODE"   SMALLINT,
 "MAN_PST_CODE"    SMALLINT,
 "MAN_WRK_CODE"   SMALLINT,
PRIMARY KEY ("MAN_NAME_F", "MAN_NAME_I", "MAN_NAME_O")
);

Ладно, вот такая структура пока есть.


 
Sergey13 ©   (2008-02-19 10:33) [58]

> [57] Альберт   (19.02.08 10:25)
> Ладно, вот такая структура пока есть.
Т.е. 4 дня и 50 постов обсуждения псу под хвост? 8-)


 
Альберт   (2008-02-19 10:39) [59]


> Т.е. 4 дня и 50 постов обсуждения псу под хвост? 8-)

Нет, она будет изменена.


 
Sergey13 ©   (2008-02-19 10:58) [60]

> [59] Альберт   (19.02.08 10:39)
> Нет, она будет изменена.

Ура! Мы сделали это! На когда запланировано это эпохальное событие (я в календаре отмечу красным)?


 
DiamondShark ©   (2008-02-19 15:33) [61]


> Ладно, вот такая структура пока есть.

Ахтунг.

1. За капс -- убивать.
2. За подчёркивание -- вешать ногами вниз.
3. От MAN_ глаза пучит. Информационный шум.
4. Использование доменов -- шизофрения. Неужели "MAN_NAME_I" и "MAN_P_CODE" -- это однотипные данные с типом "DOG"?
5. Откуда такая шизофрения в типах атрибутов "MAN_NAME_F",  "MAN_NAME_I", "MAN_NAME_O"?
6. За PRIMARY KEY ("MAN_NAME_F", "MAN_NAME_I", "MAN_NAME_O") -- колесовать без права переписки. Это не праймари кей, это северный пушной зверёк.
7. "MAN_TEL_CODE"    SMALLINT, а если у меня пять телефонов?
8. _CODE означает ссылку по внешнему ключу? Тогда суффикс -- информационный шум.
9. "MAN_GOR_CODE"  SMALLINT, "MAN_STR_CODE"   SMALLINT, -- Нью-Йорк, проспект Калинина.


> Нет, она будет изменена.

Это не поможет. Она должна быть уничтожена.


 
ANB   (2008-02-19 16:00) [62]


> 2. За подчёркивание -- вешать ногами вниз.

Со всем согласен, кроме этого пункта. Чем так подчеркивание не угодило ?
Очень удобно выставлять Инит_Капс в форматалке и форматить запросы.


 
Альберт   (2008-02-19 17:04) [63]


> От MAN_ глаза пучит
- Согласно примеров

> За капс -- убивать.
- Так это с метаданных взято.

> Откуда такая шизофрения в типах атрибутов "MAN_NAME_F",
>  "MAN_NAME_I", "MAN_NAME_O"?
- ну у каждого свои тараканы

> "MAN_GOR_CODE"  SMALLINT, "MAN_STR_CODE"   SMALLINT, --
> Нью-Йорк, проспект Калинина.


А почему бы нет, ... брайтон бич давно уже одесский... :)


> За подчёркивание -- вешать ногами вниз.

Как хочу так и ворочу.


 
MsGuns ©   (2008-02-19 22:45) [64]

>PRIMARY KEY ("MAN_NAME_F", "MAN_NAME_I", "MAN_NAME_O")

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

Остальное не комментирую - Шарк достаточно красочно описал.


 
Сергей М. ©   (2008-02-20 10:41) [65]


> невозможностью ввести двух Ивановых Иван Иванычей


Ну отчего же ?

Если предобработки регистра символов вводимых данных нет, то запросто:

Первый - Иванов ИВан Иваныч
Второй - Иванов Иван Иваныч

Здесь автора скореее другая засада поджидает - ограничение на длину индексов по строковым полям.


 
Павел Калугин ©   (2008-02-20 13:23) [66]

> [63] Альберт   (19.02.08 17:04)

Если стремтитесь к нормализации то почему  в одну структуру свалено нессколько сущностей?
в идеале , если речь действительно о нормализации надо сначала анализировать предметную область
я вот с трудом, ибо > [61] DiamondShark ©   (19.02.08 15:33) кроме пункта 2 верно, вижу следующее
сущности
 Лицо,Документ, Адрес, Должность, Телефон номер
связи
 владеет документом
 проживает по адресу
 работает по адресу
 работает в должности
 доступен по номеру
Если все это расписать грамотно, то получится вполне удобный справочник. В отличии от помойки из которой вынесены имена :)
Но чтобы это все описывать надо знать конкретную предметую область.
Так что рекомендую читать про модели "сущности-связи", Анализировать предмиетную область. И только после постороения такой модели, после ее нормализации приступать к "погружению" в БД

так что опять рав
> [61] DiamondShark ©   (19.02.08 15:33)

Уничтожить и начать с чистого листа


 
Игорь Шевченко ©   (2008-02-20 16:31) [67]


> CREATE DOMAIN "DOG" AS VARCHAR(10) CHARACTER SET WIN1251;


Это имя собаки ?
А нафига ?


 
Sergey13 ©   (2008-02-20 16:36) [68]

> [67] Игорь Шевченко ©   (20.02.08 16:31)

Она просто на собаку не откликается.


 
DiamondShark ©   (2008-02-20 23:46) [69]


> Чем так подчеркивание не угодило ?

Ну не нравится оно мне ;) Шуму много, а толку мало, только глаза спотыкаются.

Впрочем, это сущие пустяки. Имена -- дело привычки, стиля и вкуса.
Всё это меркнет пред лицом ПК из трёх строковых полей.


 
Игорь Шевченко ©   (2008-02-21 00:33) [70]

DiamondShark ©   (20.02.08 23:46) [69]


> Всё это меркнет пред лицом ПК из трёх строковых полей.


Собственно, если на таблицу никто не ссылается и требуется уникальность, в этом нет криминала. Не к этому примеру, а вообще.


 
Павел Калугин ©   (2008-02-21 00:42) [71]

> [69] DiamondShark ©   (20.02.08 23:46)
> Всё это меркнет пред лицом ПК из трёх строковых полей.


особенно если учесть что из сочетание не уникально


 
ЮЮ ©   (2008-02-21 04:55) [72]

> Так что рекомендую читать про модели "сущности-связи", Анализировать
> предмиетную область. И только после постороения такой модели,
> после ее нормализации приступать к "погружению" в БД


Вот именно.
Таблицв "Имена" возможна только в серьезном Филологическом НИИ занимающегося проблемами имяобразования в России.

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

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

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


 
Игорь Шевченко ©   (2008-02-21 09:59) [73]


> К тому же из документа абсолютно неясно, Иван там стоит
> или ивАн (большая - ударная), а это извмните два разных
> объкты сущности "Имя" и где-то могут вылезти боком эти особенности


Да-да. Особенно увлекательно написание фамилии Щучкин в загранпаспорте.


 
ANB   (2008-02-22 17:25) [74]


> Собственно, если на таблицу никто не ссылается и требуется
> уникальность,

Я тоже так думал. До тех пор, пока не пришла необходимость ссылаться на линковку, на которую ну ни в жисть бы не подумал, что придется. С тех пор тока искусственные ключи. Причем целые. Гуиды тоже идут лесом.


> > Чем так подчеркивание не угодило ?
>
> Ну не нравится оно мне ;) Шуму много, а толку мало, только
> глаза спотыкаются.

Толк есть и очень прикольный. Когда форматишь запрос девелопером с настройкой ИнитКапс - очень клево получается.


 
Игорь Шевченко ©   (2008-02-22 21:42) [75]


>  С тех пор тока искусственные ключи.


Эта...все оно хорошо, искусственные, в смысле синтетические, ключи..До тех пор, пока не взводится в догму. А оно, как известно учение Маркса всесильно, потому что верно.
В общем, первичный ключ на то и первичный, что однозначно определяет уникальные атрибуты записи в таблице. И если на то есть несинтетические ключи, а, например, искусственные типа некоего кода, то вполне разумно пользоватт именно этот код, а не вводить искусственные идентификаторы.

Я так думаю (с)


 
DiamondShark ©   (2008-02-23 01:06) [76]


> Толк есть и очень прикольный. Когда форматишь запрос девелопером
> с настройкой ИнитКапс - очень клево получается.

Ни разу не форматил запрос девелопером, я даже не знаю, что такое девелопер. Да и запрос я не помню, когда форматил хоть чем-нибудь, кроме табов в текстовом редакторе.
Но это не суть.
Главное, что идентификаторы с подчёркиваниями очень сильно тормозят чтение. Для языков, вроде Паскаля, это не так страшно, потому что плотность идентификаторов на квадратный метр текста там небольшая. В SQL эта плотность раза в 2--3 больше. Кроме того, Паскаль императивный язык, и его естественно читать строчка за строчкой. SQL не императивный, и  его приходится схватывать крупными блоками, что при ряби в глазах значительно труднее.


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

Вообще-то, речь тут больше о том, что приятнее иметь ПК атомарный. А естественный он или генномодифицированный -- дело шестнадцатое.


 
Anatoly Podgoretsky ©   (2008-02-23 12:16) [77]

> DiamondShark  (23.02.2008 01:06:16)  [76]

И для Паскаля тоже в глазах рябит и идет отторжение кода. Это удел СИ подобных языков.


 
Альберт   (2008-02-23 18:28) [78]


> Это имя собаки ?
> А нафига ?

Нет, код человека, дословно /data of global/, пенсионный.
Если нет данных по паспорту, тогда сверка из пенсионной базы.  


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


Имена взяты с книги "Что имя твое значит", где представлены все славянские, греческие и германские их производные.

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


 
Сергей М. ©   (2008-02-23 18:46) [79]


> имен узбеков, монгол и иже подобных здесь нет, потому как
> они мне не нужны


Спасибо тебе, о великий, что всего через неделю, всего лишь на 78-м посту ты посвятил нас в свою великую тайну - узбеки и иже с ними в контору к вам будут  не вхожи)


 
Petr V. Abramov ©   (2008-02-23 18:50) [80]


> ЮЮ ©   (21.02.08 04:55) [72]
> Если исходить из того, что таблица - это объект предметной
> области, то всякий его эккземляр не должен возникать неизвестно
> откуда

ну подумаешь, следующий вопрос будет по поиску дублей
:)

> Но, как тут заметили имен узбеков, монгол и иже подобных
> здесь нет, потому как они мне не нужны.

автор, а как же осетинские и якутские?


 
Сергей М. ©   (2008-02-23 18:54) [81]

"Матюгальник на березе голосит, как узбеков, латышей сплотила Русь" (С)


 
Альберт   (2008-02-23 19:43) [82]


> автор, а как же осетинские и якутские?

->
> узбеки и иже с ними в контору .. будут  не вхожи)


 
Альберт   (2008-02-23 19:44) [83]


> ты посвятил нас в свою великую тайну

постепенно тайна открывается :)


 
Sergey Masloff   (2008-02-25 12:45) [84]

Ega23 ©   (17.02.08 13:50) [42]
>Кстати, я бы всё равно нормализацию по именам-фамилиям начал бы от >миллиона человек делать.
И был бы не прав. Не ИМХО.
Из реальных я видел имя из 17 слов.Что там имя что отчество хрен его знает и пропусти хоть что-то - смертельная обида.

Но у нас на вводе висит некая эвристика которая делает примитивный лексический анализ и если видит что-то похожее на имя или отчество которые есть у нее в словаре то говорит пользователю - ты не это имел в виду? и если это то заменяет.


 
Альберт   (2008-02-25 13:00) [85]


> Из реальных я видел имя из 17 слов.Что там имя что отчество
> хрен его знает и пропусти хоть что-то - смертельная обида.
>

А по паспорту, как ? Да, еще и регистрация временная она как была ?


 
Sergey Masloff   (2008-02-25 14:02) [86]

Альберт   (25.02.08 13:00) [85]
>А по паспорту, как ?
Вот именно так
>Да, еще и регистрация временная она как была ?
С каких пор дипломатическим работникам требуется временная регистрация?


 
Альберт   (2008-02-25 14:26) [87]


> С каких пор дипломатическим работникам требуется временная
> регистрация?


Подымаю руки, сорри.


 
Sergey Masloff   (2008-02-25 14:31) [88]

Альберт   (25.02.08 14:26) [87]
Да дело не в этом. В российских паспортах тоже могут быть составные имена и фамилии. Выгоды от разделения - никакой.
 В чем смысл отдельного хранения - я из ветки не выяснил. Экономия места? Спорно будет ли она вообще. Что еще?


 
Альберт   (2008-02-25 16:42) [89]

 В чем смысл отдельного хранения - я из ветки не выяснил.
>  Экономия места? Спорно будет ли она вообще. Что еще?


Хорошо, простая задача:
Нужно сформировать письмо и в нем должно быть :

Уважаемый Анатолий Николаевич ! (для русских)
Шановний Анатоліє Миколайовичу ! (для украицев)
и т.д.
Записей в базе клиентов на данный момент больше 25 тысяч.

1.Как быстро выбрать имена и отчества из таблицы ?    
2.Как сделать алфавитку для приемной, где только фамилия и инициалы ?


 
Sergey Masloff   (2008-02-25 21:02) [90]

Альберт   (25.02.08 16:42) [89]

>Хорошо, простая задача:
>Нужно сформировать письмо и в нем должно быть :
Это вообще задача нерешаемая напрямую.

Можно хранить наименование (ФИО) как одно поле и в отдельной таблице языковые синонимы по связке один ко многим.

Я бы сделал так - в таблице поля наименование-поисковое наименование-иностр. наименование (последнее избыточно но удобно для основного иностранного. Например английский эквивалент хранится денормализовано а все остальные - через синонимы потому что английский используется постоянно а остальные - раз в сто лет.

В поисковое наименование при вводе автоматически преобразуется строка из основного наименования например Петров Игорь Иванович => Петров И.И. но пользователь может поправить если автомат неверно отработал. В иностранное можно транслитерировать по умолчанию но тоже с возможностью правки.

Имена и отчества выбирать - зачем? В какой реальной задаче это нужно? Словари имен и отчеств доступны, можно в принципе использовать для проверки но не обязательно. Это уже бантики которые дяют 5% удобства.


 
Павел Калугин ©   (2008-02-25 21:55) [91]

> [89] Альберт   (25.02.08 16:42)

Так может ввсе таки озвучить задачу и предметную область?


 
Ega23 ©   (2008-02-25 21:57) [92]


> Имена взяты с книги "Что имя твое значит", где представлены
> все славянские, греческие и германские их производные.


Марлен там тоже есть?


 
Petr V. Abramov ©   (2008-02-25 22:12) [93]


> и в отдельной таблице языковые синонимы по связке один ко
> многим.

а зачем синонимы? человек все ж либо русский, либо украинец, и обращаться к нему надо либо  "Уважаемый", либо "Шановний". Случай зависимости от политической ситуации выходит за пределы обсуждения :)


> 2.Как сделать алфавитку для приемной, где только фамилия
> и инициалы ?

построить view, в котором будут только фамилия и инициалы, и роли "примная" дать гранты на него.


 
Германн ©   (2008-02-26 01:54) [94]

Терзают меня смутные сомнения, что Альберт задумал что-то супер-пуперное. Сам не зная куда он лезет.


 
Sergey13 ©   (2008-02-26 08:54) [95]

> [94] Германн ©   (26.02.08 01:54)

А по моему он пытается придумать задачу под свою (не очень удачную, ИМХО, но интересную с его т.з.) идею.


 
Павел Калугин ©   (2008-02-26 11:32) [96]


> Альберт   (23.02.08 18:28) [78]
> Если нет данных по паспорту, тогда сверка из пенсионной
> базы.

Иванов Петр Петрович 21 год студент (пенсионного еще нет)
через полгода с новым паспортом взамен утеряного
Иванов Петр Петрович 21 год студент (пенсионного еще нет)

два разных ? или один и тот же?

Переводить имена это бред.

Завести структуру для хранения обращения и не мучать кошек

полное ФИО        Иванов Иван Иванович
краткое ФИО       Иванов И. И.
обрашатся как    Дорогому Ванюшеньке


 
Petr V. Abramov ©   (2008-02-26 13:35) [97]


> Павел Калугин ©   (26.02.08 11:32) [96]

я б обращение все-таки флагом/справочником сделал. Чтоб "Дарагой" не написал кто-нить


 
Альберт   (2008-02-26 14:34) [98]


> Терзают меня смутные сомнения, что Альберт задумал что-то
> супер-пуперное. Сам не зная куда он лезет.

Потом будет видно, но зато сейчас ончень интересно, да и опыта наберусь.

> А по моему он пытается придумать задачу под свою (не очень
> удачную, ИМХО, но интересную с его т.з.) идею.

Идея автоматизации отчетов и документов, плюс самый новый справочник по телефонам и адресам клиентов и организаций.

Но вопросы все таки есть.
а)Нужно поле "Фамилия имя отчество" ежемесячно для новых "клиентов" передавать в ексель как три ячейки:
1.Фамилия
2.Имя
3.Отчество

б)Поиск (выборка) по частям:
пример найти "Вагиф Оглы", но оператор ввела "Вгиф Аглы"


 
Sergey13 ©   (2008-02-26 14:49) [99]

> [98] Альберт   (26.02.08 14:34)
> Идея автоматизации отчетов и документов

Это настолько общее определение, что практически ЛЮБАЯ программа под это определение попадает.

> плюс самый новый справочник по телефонам и адресам клиентов и организаций.
Эта задача не особо нуждается в лингвистических примочках.

Хотя если интересно, то почему бы не помучаться. Но с другой стороны, раз работаешь над конкретной задачей рискуешь нарваться на вопрос работодателя: "А че ты тут делаешь то?"


 
Альберт   (2008-02-26 14:57) [100]


> "А че ты тут делаешь то?"

А я инженер-аналитик . Так вот запросы могут быть разные у начальства, а я себе работу облегчаю. А информация дорого стоит.


 
Sergey13 ©   (2008-02-26 15:04) [101]

> [100] Альберт   (26.02.08 14:57)
> А информация дорого стоит.

Так то информация, а не ее склонения по падежам.


 
Sergey13 ©   (2008-02-26 15:11) [102]

> [10] Альберт   (15.02.08 15:12)
> можна очень много сделать полезного для приемной и т.д

> [100] Альберт   (26.02.08 14:57)
> А я инженер-аналитик ....  я себе работу облегчаю.

Хватит отираться в приемной и пудрить мозги секретарше! 8-)))))))))))))


 
Альберт   (2008-02-26 15:33) [103]


> Хватит отираться в приемной и пудрить мозги секретарше!
> 8-)))))))))))))

Споймал, согласен. :)


 
Ditrix ©   (2008-02-26 16:06) [104]

>>а)Нужно поле "Фамилия имя отчество" ежемесячно для новых "клиентов"
>>передавать в ексель как три ячейки:
вот в процессе формирования реестра новеньких и разделишь фио на составляющие.

а усложнять "ежедневку" - недальновидно.
Kepp It Simple Stupid
// озвучивалось тут уже


 
Павел Калугин ©   (2008-02-27 07:21) [105]

> [97] Petr V. Abramov ©   (26.02.08 13:35)

А я бы оставил на усмотрение Манагера. если он считает обосновано чт дАрАгой Леонид правильное обращение именно к этому леониду то пусть буде так. а если слажал  пусть меньше бабла получит

> [98] Альберт   (26.02.08 14:34)
> Идея автоматизации отчетов и документов

Идея далеко не нова.


> [98] Альберт   (26.02.08 14:34)
> а)Нужно поле "Фамилия имя отчество" ежемесячно для новых
> "клиентов" передавать в ексель как три ячейки:

И вопрос в чем? и хранить три поля. Но полное и краткое ФИО хранить не давая их править. То есть править можно одно из трех полей а полное и краткое фио тем же триггером корректировать но ни как не через форму


> б)Поиск (выборка) по частям:

а вот это лечится 2-мя путями. и тольо комплексом
1. баблом по вбившему ошибку или дубль
2. смотреть на функции , например, soundex. Для меня открытием стали когда-то слова "Функция Левенштайна". рекомендую поискать и почитать.
Но опять же лечит только комплексный подход. И больший вес таки играет административная его часть. И если администрация в таких вопросах не идет на компромис то.. может им не слишком оно надо?


> [104] Ditrix ©   (26.02.08 16:06)
> вот в процессе формирования реестра новеньких и разделишь
> фио на составляющие.

угу. особенно если имя 5 слов а фамилия 2 слова. Не, таки придется хранить кажное в своем поле. Но справочник имен.. Эт чтоб секретарше на жениха гадать, разве что.


 
Альберт   (2008-02-27 10:00) [106]


> может им не слишком оно надо?

Надо, иначе получит начальник,  а дальше по цепочке, в том числе и я.


 
Sergey13 ©   (2008-02-27 10:27) [107]

> [106] Альберт   (27.02.08 10:00)
> Надо

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


 
Павел Калугин ©   (2008-02-27 14:32) [108]


> Альберт   (27.02.08 10:00) [106]

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


> Sergey13 ©   (27.02.08 10:27) [107]

Хотябы документ вида "Хотелка" получить и подписать :) а то явно секретаршу вздрючили, она поплакалась и срочно изобретать лисапед


 
Sergey13 ©   (2008-02-27 14:38) [109]

> [108] Павел Калугин ©   (27.02.08 14:32)
> Хотябы документ вида "Хотелка" получить и подписать

Так я и говорю типа "Техническое задание". 8-)


 
Альберт   (2008-02-27 16:26) [110]

Благодарю всех отвечавших !!



Страницы: 1 2 3 вся ветка

Форум: "Базы";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.78 MB
Время: 0.009 c
15-1214150174
KilkennyCat
2008-06-22 19:56
2008.08.10
XML-парсеры для Delphi.


2-1215494611
Zhentos
2008-07-08 09:23
2008.08.10
Можно ли обрезать изображение???


2-1215460486
Olegus
2008-07-07 23:54
2008.08.10
Dll в Delphi


15-1213908323
dev
2008-06-20 00:45
2008.08.10
NMPOP3


15-1214370815
Djulia
2008-06-25 09:13
2008.08.10
Help!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский