Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нормализация информации [D6, IB6.x]


Страницы:   1 2 3 4 5 6

Альберт ©   (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 его


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо