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

Вниз

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

 
Alien1769 ©   (2006-05-19 11:01) [0]

Добрый день.
Есть например две записи в таблице:
Толстого Льва улица
Толстого Льва площадь
Имеет ли смысл для нормализации разбить информацию в две таблицы,
а в главной использовать только коды записей подчиненных таблиц.

Причем иногда ползователь иногда не знает точно какой именно адрес
(площадь Толстого, д.2) или (улица Льва Толстого, д.2).
Чего посоветуете.


 
Sergey13 ©   (2006-05-19 11:04) [1]

Знимаясь нормализацией (очень правильное занятие!) не надо забывать, что нормализация не закон, а метод, существующий наравне с ДЕнормализацией.
ИМХО.
Для описанного тобой случая - справочник абсурден, ИМХО.


 
Alien1769 ©   (2006-05-19 11:18) [2]

Для уточнения вопрос:
в главной таблице поле адрес лучше заполнять кодами улиц или напрямаю вбивать название. Допустим в городе больше 1000 улиц.


 
Sergey13 ©   (2006-05-19 11:22) [3]

2[2] Alien1769 ©   (19.05.06 11:18)
>Допустим в городе больше 1000 улиц.
А в основной сколько? Что ты собираешься делать с адресом (это самый главный вопрос для проектирования)?


 
MsGuns ©   (2006-05-19 11:23) [4]

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


 
Alien1769 ©   (2006-05-19 11:28) [5]


> >Допустим в городе больше 1000 улиц.
> А в основной сколько? Что ты собираешься делать с адресом
> (это самый главный вопрос для проектирования)?


В основной таблице будет около 50000 клиентов.

По каждой улице нужно кол-во клиентов, мало того по каждому дому и даже парадное


 
Sergey13 ©   (2006-05-19 11:32) [6]

2 [5] Alien1769 ©   (19.05.06 11:28)
> По каждой улице нужно кол-во клиентов, мало того по каждому дому и даже парадное
Вот это самое главное. Нужен справочник наподобии КЛАДР. Или он сам. Или с возможностью импорта из него.


 
Ega23 ©   (2006-05-19 11:32) [7]


> Адрес на то и адрес, чтобы быть атомарным, невзирая на то,
>  улица это, проспект, проулок и т.д. Он сам по себе может
> быть справочником, например, в телефонных справочниках или
> биллинговых системах. А вот № дома, корпуса, квартиры и
> даже эжах иногда имеет смысл выделять в одельные сущности
> - поля. Например, в системах, разработанных для бюро инвентаризации
> или коммунальных служб.


Всё на правах ИМХО.

Я бы сделал так: у любого адреса есть какое-то место (улица, площадь, проспект, переулок, проезд и т.д.). Их бы вынес в отдельную сущность Streets (все вместе). А вот дальнейший адрес (дом-корпус-строение-этаж-квартира) выделил бы как строковое поле.
Таким образом, адрес в рабочей таблице будет состоять из StreetID + Дополнительная информация.

В данном подходе сочетаются как разумная нормализация (улицы), так и разумная денормализация (не выделение дом-корпус-строение-этаж-квартира в 5 разных сущностей).

Но всё, конечно, от задачи зависит.


 
Alien1769 ©   (2006-05-19 11:36) [8]


> Вот это самое главное. Нужен справочник наподобии КЛАДР.
>  Или он сам. Или с возможностью импорта из него.


Пишется прога для охранной фирмы.


 
Sergey13 ©   (2006-05-19 11:36) [9]

2[8] Alien1769 ©   (19.05.06 11:36)
> Пишется прога для охранной фирмы.
Ну и что?


 
Alien1769 ©   (2006-05-19 11:45) [10]


> > Пишется прога для охранной фирмы.
> Ну и что?


Для каждого клиента будет поле квартира (офис), поскольку в одном офисе может быть две фирмы и каждая сдает свое помещение по определенномк коду на охранном приборе.


 
Sergey13 ©   (2006-05-19 11:47) [11]

2[10] Alien1769 ©   (19.05.06 11:45)
> Для каждого клиента будет поле квартира (офис), поскольку в одном офисе может быть две фирмы и каждая сдает свое помещение по определенномк коду на охранном приборе.

И что это меняет в справочнике адресов? Разные клиенты - разные коды.


 
Ega23 ©   (2006-05-19 11:50) [12]


> Для каждого клиента будет поле квартира (офис), поскольку
> в одном офисе может быть две фирмы и каждая сдает свое помещение
> по определенномк коду на охранном приборе.
>


В этом случае я вообще-бы всё по-другому сделал. Основная сущность - охраняемый объект. Это может быть завод на пол-города, это может быть всё здание, это может быть этаж в здании, это может быть квартира, это может быть комната, это может быть сейф. А самое прикольное, когда это охраняемый сейф в охраняемой комнате охраняемой квартиры охраняемого этажа и т.п.

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


 
Desdechado ©   (2006-05-19 11:51) [13]

как это сделано в моей БД
1. типы населенных пунктов(ид, длинное название, короткое название)
2. населенные пункты(ид, название, ид типа)
3. типы улиц(ид, длинное название, короткое название)
4. улицы(ид, название, ид типа, ид населенного пункта)
5. дома (ид, номер дома, номер корпуса, ид улицы)
6. адрес(ид адресуемого объекта, ид дома, подъезд, этаж, квартира, комната)
в принципе, можно добавить обработку районов (не городских - это бессмысленно, а сельских), т.к. в разных районах могут быть одноименные населенные пункты


 
MsGuns ©   (2006-05-19 11:52) [14]

>Ega23 ©   (19.05.06 11:32) [7]

И чем "твое" отличается от "моего" (пост [4]) ?  Тем, что я не уточнил, что по словом "адрес" подразумевал улицу (площать, проспект..) ?


 
Alien1769 ©   (2006-05-19 11:52) [15]


> И что это меняет в справочнике адресов? Разные клиенты -
>  разные коды.


В справочнике адресов ничего.

Это был ответ на цитату
(Таким образом, адрес в рабочей таблице будет состоять из StreetID + Дополнительная информация.)


 
Ega23 ©   (2006-05-19 11:56) [16]


> И чем "твое" отличается от "моего" (пост [4]) ?  Тем, что
> я не уточнил, что по словом "адрес" подразумевал улицу (площать,
>  проспект..) ?


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


 
Sergey13 ©   (2006-05-19 11:57) [17]

2 [15] Alien1769 ©   (19.05.06 11:52)
> Это был ответ на цитату
Цитата в ответе была моя и не такая. 8-)


 
Alien1769 ©   (2006-05-19 11:57) [18]


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


Спасибо за огромную подсказку. Вот это уже большой плюс.


 
Desdechado ©   (2006-05-19 11:59) [19]

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


 
Sergey13 ©   (2006-05-19 12:03) [20]

2[19] Desdechado ©   (19.05.06 11:59)
>и автоматической прокладки маршрута группы захвата
А перестрелки будут? Я дам вам Браунинг. 8-)


 
Ega23 ©   (2006-05-19 12:07) [21]


> А перестрелки будут? Я дам вам Браунинг. 8-)


Вообще-то "Парабеллум"...  :о)


 
Desdechado ©   (2006-05-19 12:08) [22]

> А перестрелки будут?
обязательно
нужно только правильно спроектировать БД и написать софт :)


 
Alien1769 ©   (2006-05-19 12:11) [23]


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


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

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


 
Sergey13 ©   (2006-05-19 12:12) [24]

2[21] Ega23 ©   (19.05.06 12:07)
> Вообще-то "Парабеллум"...  :о)
Я знаю, но Парабелумы кончились. 8-)



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

Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.044 c
2-1147855148
Мурзилка
2006-05-17 12:39
2006.06.04
Изображение на кнопках


15-1147434041
oldman
2006-05-12 15:40
2006.06.04
Какой процесс работает? (задачка для новичков)


2-1147776239
alexss
2006-05-16 14:43
2006.06.04
проблема с ShellExecute


6-1139136992
parovoZZ
2006-02-05 13:56
2006.06.04
SQL и время с датой


3-1142429352
Emik
2006-03-15 16:29
2006.06.04
FIBPlus Tools





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский