![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нормализация информации [D6, IB6.x]
Альберт © (2008-02-15 14:32:00)Доброго времени суток.
Вопрос знатокам:
1.Имеет ли смысл имена клиентов выделять в отдельную таблицу, а в основной проставлять только ИД записи имени.
2.Могут ли при этом быть проблемы с сортировкой основной таблицы ?
Прошу привести аргументы за и против.
Заранее спасибо за ответы.
Игорь Шевченко (2008-02-21 00:33:00) [41]DiamondShark © (20.02.08 23:46) [69]
> Всё это меркнет пред лицом ПК из трёх строковых полей.
Собственно, если на таблицу никто не ссылается и требуется уникальность, в этом нет криминала. Не к этому примеру, а вообще.
DiamondShark (2008-02-20 23:46:00) [42]
> Чем так подчеркивание не угодило ?
Ну не нравится оно мне ;) Шуму много, а толку мало, только глаза спотыкаются.
Впрочем, это сущие пустяки. Имена -- дело привычки, стиля и вкуса.
Всё это меркнет пред лицом ПК из трёх строковых полей.
Sergey13 (2008-02-20 16:36:00) [43]> [67] Игорь Шевченко © (20.02.08 16:31)
Она просто на собаку не откликается.
Игорь Шевченко (2008-02-20 16:31:00) [44]
> CREATE DOMAIN "DOG" AS VARCHAR(10) CHARACTER SET WIN1251;
Это имя собаки ?
А нафига ?
Павел Калугин (2008-02-20 13:23:00) [45]> [63] Альберт (19.02.08 17:04)
Если стремтитесь к нормализации то почему в одну структуру свалено нессколько сущностей?
в идеале , если речь действительно о нормализации надо сначала анализировать предметную область
я вот с трудом, ибо > [61] DiamondShark © (19.02.08 15:33)кроме пункта 2 верно, вижу следующее
сущности
Лицо,Документ, Адрес, Должность, Телефон номер
связи
владеет документом
проживает по адресу
работает по адресу
работает в должности
доступен по номеру
Если все это расписать грамотно, то получится вполне удобный справочник. В отличии от помойки из которой вынесены имена :)
Но чтобы это все описывать надо знать конкретную предметую область.
Так что рекомендую читать про модели "сущности-связи", Анализировать предмиетную область. И только после постороения такой модели, после ее нормализации приступать к "погружению" в БД
так что опять рав
> [61] DiamondShark © (19.02.08 15:33)
Уничтожить и начать с чистого листа
Сергей М. (2008-02-20 10:41:00) [46]
> невозможностью ввести двух Ивановых Иван Иванычей
Ну отчего же ?
Если предобработки регистра символов вводимых данных нет, то запросто:
Первый - Иванов И Ван Иваныч
Второй - Иванов И ван Иваныч
Здесь автора скореее другая засада поджидает - ограничение на длину индексов по строковым полям.
MsGuns (2008-02-19 22:45:00) [47]>PRIMARY KEY ("MAN_NAME_F", "MAN_NAME_I", "MAN_NAME_O")
Маленький Освенцим. Ни одного плюса, одни минуса и тучи не граблей, а бОрон как в отладке, так и (особенно !) при эксплуатации. Начиная от тормозов и заканчивая невозможностью ввести двух Ивановых Иван Иванычей
Остальное не комментирую - Шарк достаточно красочно описал.
Альберт (2008-02-19 17:04:00) [48]
> От MAN_ глаза пучит
- Согласно примеров
> За капс -- убивать.
- Так это с метаданных взято.
> Откуда такая шизофрения в типах атрибутов "MAN_NAME_F",
> "MAN_NAME_I", "MAN_NAME_O"?
- ну у каждого свои тараканы
> "MAN_GOR_CODE" SMALLINT, "MAN_STR_CODE" SMALLINT, --
> Нью-Йорк, проспект Калинина.
А почему бы нет, ... брайтон бич давно уже одесский... :)
> За подчёркивание -- вешать ногами вниз.
Как хочу так и ворочу.
ANB (2008-02-19 16:00:00) [49]
> 2. За подчёркивание -- вешать ногами вниз.
Со всем согласен, кроме этого пункта. Чем так подчеркивание не угодило ?
Очень удобно выставлять Инит_Капс в форматалке и форматить запросы.
DiamondShark (2008-02-19 15:33:00) [50]
> Ладно, вот такая структура пока есть.
Ахтунг.
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, -- Нью-Йорк, проспект Калинина.
> Нет, она будет изменена.
Это не поможет. Она должна быть уничтожена.
Sergey13 (2008-02-19 10:58:00) [51]> [59] Альберт (19.02.08 10:39)
> Нет, она будет изменена.
Ура! Мы сделали это! На когда запланировано это эпохальное событие (я в календаре отмечу красным)?
Альберт (2008-02-19 10:39:00) [52]
> Т.е. 4 дня и 50 постов обсуждения псу под хвост? 8-)
Нет, она будет изменена.
Sergey13 (2008-02-19 10:33:00) [53]> [57] Альберт (19.02.08 10:25)
> Ладно, вот такая структура пока есть.
Т.е. 4 дня и 50 постов обсуждения псу под хвост? 8-)
Альберт (2008-02-19 10:25:00) [54]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")
);
Ладно, вот такая структура пока есть.
Альберт (2008-02-19 10:15:00) [55]
> Кстати, насчёт паспорта: у военных паспорта нет. Есть или
> Военный билет, или Удостоверение личности.
Мой пост
>
> для этой цели есть документ его заменяющий, причем в отдельной
> таблице.
ANB (2008-02-19 10:05:00) [56]
> у военных паспорта нет.
Уже есть. У офицеров и прапорщиков - на руках, у срочников отбирают при призыве.
Причем сначала выдавали по блату, потом по желанию, а потом многие структуры стали требовать только паспорт (это незаконно, но хрен кому чего докажешь) и народ начал получать уже практически принудительно.
Ega23 (2008-02-19 10:00:00) [57]Кстати, насчёт паспорта: у военных паспорта нет. Есть или Военный билет, или Удостоверение личности.
AnSi_Sr (2008-02-18 20:25:00) [58]Описанное выведение ФИО в справочнике - опасная тенденция в разработке архитектуры. Для любой мало-мальски сложной выборки при таком подходе очень быстро разрастается количество подзапросов или джойнов в селекте.
ANB (2008-02-18 15:51:00) [59]
> Anatoly Podgoretsky © (18.02.08 15:19) [51]
Ну это как репу почесать. Сейчас не великая проблема нарыть готовый справочник имен. А дистинкт будет значить, что только из ранее введенных предлагать будет. Во. Мысля.
дистинкт
юнион олл
справочник.
Anatoly Podgoretsky (2008-02-18 15:19:00) [60]
> то только в качестве вспомогательного справочника
А для этого не надо никаких отдельных таблиц, запрос distinct и в dbcombo его