Форум: "Начинающим";
Текущий архив: 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.051 c