powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование справочника адресов клиентов,сотрудников
41 сообщений из 41, показаны все 2 страниц
Проектирование справочника адресов клиентов,сотрудников
    #36252563
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
помогите реализовать структуру базы.
Есть два типа адресов:
Адрес сотрудника
Адрес фирм-клиентов

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

И по поводу реализации того самого справочника адресов. Тип адреса:
Страна, Регион, Район, Населенный Пункт, Улица, номер дома, квартира/офис

Набросок структуры прилагается

Также было предложено,сделать общую таблицу адреса,

Справочник адреса
id
id_strana - Ссылка на справочник стран
id_region - Ссылка на справочник региона
id_raion - Ссылка на справочник районов
id_city - Справочник городов
id_street
numer
kvartira

В свою очеред справочники стран, региона, районов, городов, это таблицы с полями id, name

И ко всему этому безобразию необходимо реализовать древовидную структуру адреса

Россия
- Самараская область
- Тольятти
- Автозаводской район
- Центральный

и так далее. запутался уже в составлении данного справочника.
Заранее спасибо.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36252591
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вам это реально нужно?
может хранить текстом адрес и подгружать из КЛАДР классификатор?
кстати, вы уверены, что вы сможете так учесть иностранные адреса?
С уважением, Naf
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36252639
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предлагалось держать адреса сотрудника или организации полным текстом в базе. Не желают такого. Хотят именно разделения.
Также хотят разделения Фамилий, Имен, отчеств по разным таблицам, с целью их склонения по падежам вручную, но это уже совсем другая история....
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36252834
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dindilin,
Интересно, что за мода такая?
Тут в параллельной ветке Нелепый вопрос для опытных профессионалов
тоже придумали сущность "адрес" и хотят что-то делать с ее id.
Чем принципиально отличаются "типы" адресов сотрудников и фирм-клиентов?

Храните id_street, numer (дома, надо полагать?) и kvartira прямо в таблицах с атрибутами сотрудников и клиентов.

Нарисовання вами структура смотрится красиво, но не учитывает кучу нюансов территориального-административного деления даже внутри РФ (см. КЛАДР), не говоря уже о мировых масштабах.

Кроме справочника улиц, я бы сделал справочник населенных пунктов и справочник территориальных образований, соответствующе справочники типов н.п., тер. образований, ну и улиц, если уж так приспичило
Связи подчиненности между территориальными образованиями - ссылками на id родительских объектов (колонка id_ParentRegion).
Ну, страны можно выделить в отдельную таблицу, если глобальный масштаб так необходим.

С такой структурой тоже не просто работать, но она, хотя бы, не требует переделки при появлении нового уровня территориального деления.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36252861
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dindilin,
Только сейчас разглядел: а telephon зачем в таблице "адрес"?!!
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253023
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs, отредактировал схему
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253032
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для чего вы это делаете? хотелось бы узнать
С уважением, Naf
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253044
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs,
Нарисовання вами структура смотрится красиво, но не учитывает кучу нюансов территориального-административного деления даже внутри РФ (см. КЛАДР), не говоря уже о мировых масштабах.

Да, вот меж Город ,Регион, Улица, может также находится Район, и поулчается что нужна еще одна таблица, а уж если дерево потом из этого безобразия строить,можно будет рехнутся
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253052
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf, делается это для выведения данных по определенному адресу, городу,региону. И для создания отчетов.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253139
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Либо вот такой вариант по которому возможно будет отстроить дерево, но логика построения лишена смысла будет
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253191
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dindilinbaracs, отредактировал схему
Отредактировали ее, таки, вы
Я не предлагал справочник наименований (я правильно понял назначение таблицы Socr_base?), ну и бог с ним.

"Мишку мучает вопрос:" (c)
зачем же все-таки нужна таблица "adres"?
Почему нельзя street_id, nomer и kv вставить прямо в таблицы firm и sotrudnik?

Кстати, колонки nomer и kv делайте символьными. Уж номер дома-то точно: бывают литеры, корпуса, строения...
Правда, корпуса и строения лучше вынести в отдельные колонки...
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253263
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как кажется, что лучше хранить все данные об адресах в одной таблице, чем в разных. а а таблице фирмы и сотрудники хранить ссылку на адрес.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253839
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж номер дома-то точно А ещё бывают, например, такие адреса: "ул. Уличная, дом 13, кв.666, комната 1 ". Как он в Вашу схему впишется?
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36253849
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirУж номер дома-то точно А ещё бывают, например, такие адреса: "ул. Уличная, дом 13, кв.666, комната 1 ". Как он в Вашу схему впишется?
Ага, давайте еще койко-место укажем
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36254248
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, для таких дел есть поле description =)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36254320
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naf а вам это реально нужно?+1

Предлагаю таки танцевать от печки
Зачем нужен адрес - для почты? тогда идите на почту, берите их базу, подгоняйте под их требования
Для отчетов в налоговую - тут кладр рулит
Для поиска сотрудников курьерами - тогда добавляйте всякую доп инфу типа "звонить три раза, у соседа злая собака, буду пьян не будите"
Далее: кто сказал что адрес у сотрудника или организации может быть один и только один, как минимум почтовый, адрес регистрации, адрес фактического проживания и т.п.
Для отчетов - тогда адрес не применим ибо не факт. дешевле добавить однозначное доп поле для группировки по отчетам - продажи по городу, району, области

авторХраните id_street, numer (дома, надо полагать?) и kvartira прямо в таблицах с атрибутами сотрудников и клиентов.
Смысл выделения в отдельную таблицу адресов иногда есть, но в каждом случае решение надо принимать самостоятельно.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36254821
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Зачем нужен адрес - для почты? тогда идите на почту, берите их базу, подгоняйте под их требования
Для отчетов в налоговую - тут кладр рулит
А налоговая ведет КЛАДР разве не совместно с почтовой службой?
SERG1257Смысл выделения в отдельную таблицу адресов иногда есть, но в каждом случае решение надо принимать самостоятельно.
Само собой.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36255259
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Если мы упоминаем КЛАДР то давайте прочитаем определение для чего он создан :)
2) Я бы с очень большим напрягом согласился с предложенной автором структурой если бы он еще
а) не претендовал на международность (кантоны, земли, префекуты и те.де)
б) объяснил бы мне правильно ли я написал адреса
Страна (Россия), Регион (Москва), Район (Калининский), Населенный Пункт (Москва), Улица (Героев Автоматизации), номер дома (д. 23-34-46 корпус 2A строение Б2) , квартира/офис (14/2)

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

P.S. Cписок реальных адресов на примере СПБ
1) Г.САНКТ-ПЕТЕРБУРГ, ШУВАЛОВО, ПЕРВОМАЙСКАЯ УЛИЦА, ДОМ 6А, ЛИТЕРА А
2) Г.САНКТ-ПЕТЕРБУРГ, ПОСЕЛОК ЛЕВАШОВО, ЛЕВАШОВО-2 , ДОМ 1, ЛИТЕРА А
3) Г.САНКТ-ПЕТЕРБУРГ, ПОСЕЛОК ПАРГОЛОВО, ОСИНОВАЯ РОЩА, ОВРАЖНЫЙ ПЕРЕУЛОК, ДОМ 6
4) Г.САНКТ-ПЕТЕРБУРГ, КАНОНЕРСКАЯ УЛИЦА, ДОМ 6-8-10 , ЛИТЕРА А





______________________________________________________
Давайте считать обступившее нас со всех строн коричневое море шоколадным
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36255452
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ведь одна и таже улица может встречатся в разных городах
г. Самара, ул. Строителей
г. Сызрань, ул. Строителей
тогда получается что запись в улицах, Строителей будет не одна а несколько? а если такая улица, будет в 10 городах....
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36255825
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DindilinА ведь одна и таже улица может встречатся в разных городах
г. Самара, ул. Строителей
г. Сызрань, ул. Строителей
тогда получается что запись в улицах, Строителей будет не одна а несколько? а если такая улица, будет в 10 городах....
Да. Это разные объекты с одинаковым наименованием.
Сколько в бывших странах развитого социализма улиц Ленина, даже старшно подумать

Вопрос в том, на сколько важен этот факт для решаемой вами задачи.
Если, например, надо хранить историю переименований, то важен.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36256526
buhBot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мм, Господа, а почему бы не использовать простой иерархический справочник?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE [dbo].[TAdr](
	[id] [int] NULL,
	[id_parent] [int] NULL,
	[Value] [nchar]( 10 ) NULL,
	[type_record] [int] NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[SType](
	[id] [int] NULL,
	[Type_item] [nchar]( 10 ) NULL
) ON [PRIMARY]
 
TAdr.id->TAdr.id_parent
TAdr.id->SType

В справочнике SType указываем всевозможные варианты типов элементов адреса (от угла в комнате до континентов) и все - в такую структуру почти без избыточности можно поместить адреса от
стр Россия, гор. Москва, ул Ленина. дом 1
до
стр Россия, Московская обл., Мухагорский район, поселок Абыкакой, проезд Деревенских, дом 7, дробь 2, корпус 1, кв 2, а, комната 17, б.

p.s. гдет валялся пакет для импорта кладра в такую структуру :о) То, что обработка такой структуры в основном только рекурсией - нас это не волнует (это волнует программистов). Да и во многих СУБД есть средства работы с иерархическими справочниками.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36257828
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buhBot, привлекательная структура =) Таким образом id_adres_firm из таблицы Полного адреса фирмы будет равен TAddr.Id и уже по нему собирать полный адрес?
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36257982
buhBot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DindilinbuhBot, привлекательная структура =) Таким образом id_adres_firm из таблицы Полного адреса фирмы будет равен TAddr.Id и уже по нему собирать полный адрес?
Совершенно верно. Адрес собирается с конца (квартира->дом->корпус-> и т.д.)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36258990
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buhBotТо, что обработка такой структуры в основном только рекурсией - нас это не волнует (это волнует программистов).
Чтоб я так жил!
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263510
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirУж номер дома-то точно А ещё бывают, например, такие адреса: "ул. Уличная, дом 13, кв.666, комната 1 ". Как он в Вашу схему впишется?
Бывает и просто "д. Сусай", без улиц и домов.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263707
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsbuhBotТо, что обработка такой структуры в основном только рекурсией - нас это не волнует (это волнует программистов).
Чтоб я так жил!При ограничении максимального уровня вложенности можно вместо рекурсии использовать несколько left join
Кроме того, можно для каждого элемента держать полное собранное название - будет проще при типичных выборках.

По моему, это проще, удобнее и универсальнее, чем ваша структура.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263733
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКроме того, можно для каждого элемента держать полное собранное название - будет проще при типичных выборках.

если честно то это хотя и быстрее но требует доп гемороя поддержания актуальности (изменение любого элемента иерархии и синхронизация этих элементов с последующим отслеживанием текущего пложения объекта учета отностильно их при репликациях с внешними источниками) и отслеживания количества уровней иерархии ксткати (был "улица/дом/офис" а стал "улица/дом/корпус/этаж/офис" скажем)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263824
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1CmenавторКроме того, можно для каждого элемента держать полное собранное название - будет проще при типичных выборках.

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

В многих СУБД, например, в MSSQL, это можно сделаеть одним апдэйтом в триггере.

Зато выборки потом будут проще. Представьте, иначе при любых выборках адресов для фирм или сотредников нужно будет всегда делать кучу джойнов или сложный рекурсивный запрос...
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263844
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПредставьте, иначе при любых выборках адресов для фирм или сотредников нужно будет всегда делать кучу джойнов или сложный рекурсивный запрос...

alexeyvg, да знаю знаю потому и озвучил проблему т.к. всё никак не могу полностью отдать предпочтение джойнам и рекурсии или полным путям в конечных элементах (у мну 1це а там струтура иерархий довольно неудобная для прямых запросов к БД) и там и там свой геморой хотя конечно второй вариант на голову шустрее :)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263864
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenхотя конечно второй вариант на голову шустрее :)При этом этот сложный код получения полного текста адреса нужно будет написать и поддерживать только в одном месте.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263875
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg, ну если тригером отслеживать только запись конечного элемента (там и апдейтить всё что есть) то наверное да
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36263991
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenalexeyvg, ну если тригером отслеживать только запись конечного элемента (там и апдейтить всё что есть) то наверное даМожно триггером апдэйтить все поддеревья ниже изменённых элементов.
Тут ещё от СУБД и её версии зависит.

Если у вас 1с, знасит mssql

Если mssql версии от 2005, то это один апдэйт, если версия меньше, то нужно сначала в цикле несколькими итерациями собрать поддеревья.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264020
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторто нужно сначала в цикле несколькими итерациями собрать поддеревья

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

как варинат кроме полного адреса ещё и уровень пописывать (апдейтить) в сам элемент справочника (объект учета) (в той же 1це есть Уровень() но это штатно и небыстро)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264332
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenкстати тоже интересный вопрос... циклом (тогда надо знать количество уровней) или рекурсией (тогда тупим безбожно)... если циклом то надо ведь предварительно узнать количество уровней а это рекурсияДля цикла не нужно знать количества уровней.

Он сам остановится на максимально нужном уровне

Например.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264344
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторif @@rowcount = 0 break

мдя... зубрить мне ещё и зубрить

кстати а конструкция

авторwhile 1 = 1 не страшно ?
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264437
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenкстати а конструкция

авторwhile 1 = 1 не страшно ?Всегда так писал - наработанный штамп :-).
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264870
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgПри ограничении максимального уровня вложенности можно
Ниже вы про универсальность говорите...
alexeyvgПо моему, это проще, удобнее и универсальнее, чем ваша структура.
Проще и универсальнее, в данной ситуации, взаимоисключающие понятия.
То есть, рисовать структуру БД конечно проще. А вот, работать с ней...
alexeyvgКроме того, можно для каждого элемента держать полное собранное название
...
В многих СУБД, например, в MSSQL, это можно сделаеть одним апдэйтом в триггере.
Что выполнение триггера в MSSQL - тяжелая операция, изменение из триггера других таблиц (кроме той, с которой он связан) приводит к проблемам с блокировками и, наконец, триггеры весьма затрудняют понимание заложенной в БД бизнес-логики, вас видимо, тоже не волнует.

Попробую пояснить свое разбиение на таблицы.
Улица - основной объект адресации. И этих объектов будет больше всего.
Дома, квартиры и т.д. без крайней необходимости в базу пихать не стоит. Сейчас, даже в кризис, жилые дома и прочие строения появляются и исчезают как грибы. Уследить за этим "хозяйством" (т.е. поддерживать базу в актуальном состоянии) очень сложно.
Наконец, с точки зрения привязки к карте (Чем черт не шутит? Вдруг понадобится?) - это линейный объект с присущими именно ему атрибутами.
Да, конечно, кроме улиц бывают еще кварталы, микрорайоны, населенные пункты вообще без улиц... Но подавляющее большинство населения обитает все-таки на улицах.
Как быть с исключениями, надо решать в контексте поставленной задачи.

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

Наконец регионы . Это - территории, которые входят одна в другую как матрешки. Здесь не обойтись без поддержания иерархии.
Но регионов вместе со всем их "содержимым" (областями, землями, округами, районами, префектурами, сельсоветами и т.д.) на порядки меньше чем улиц и населенных пунктов. Соответственно, и ковыряться в этой иерархии будет, хоть и не на порядки, но легче (может быть, даже не придется искуственно ограничивать кол-во уровней вложенности ;-) ).
Ну, и опять таки, у регионов могут быть свои специфические атрибуты.

Отдельную таблицу стран можно рассматривать как каприз
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36264898
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsЗдесь не обойтись без поддержания иерархии.
Осспади! "Поддержания" - дело к вечеру
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36267933
Dindilin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs,
авторОтдельную таблицу стран можно рассматривать как каприз
Учитывая что в организации используются только пару стран, Россия, Украина, то смысл от такой таблицы думаю не велик будет =)

Вот только как при запросе получить полный адрес из иерархической структуры.. Сверять до тех пор пока parentid не будет равен 0 ? =)
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36268392
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DindilinВот только как при запросе получить полный адрес из иерархической структуры.. Сверять до тех пор пока parentid не будет равен 0 ? =)
Почему бы и нет?
Пример функции на T-SQL, вычисляющей уровень товарной категории в классификаторе по коду категории (CategoryId - первичный ключ, ParentCategoryId - ссылка на первичный ключ родительской категории):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE FUNCTION [dbo].[fn_GetCategoryLevel] ( @CategoryId int )
RETURNS tinyint

AS
BEGIN

  DECLARE @ParentCategoryId int, @level tinyint

  SET @level =  1 

  SELECT @ParentCategoryId = ParentCategoryId FROM dbo.Categories WHERE CategoryId = @CategoryId

  WHILE @GenCategoryId IS NOT NULL
   BEGIN

     SET @level = @level +  1 

     SELECT @GenCategoryId = GenCategoryId FROM dbo.Categories WHERE CategoryId = @GenCategoryId

   END

  RETURN @level

END

Сложность в другом: не все объекты, "вытащенные" таким образом из таблицы, могут понадобиться для формирования адреса.
Пример для Москвы.
Адрес: г. Москва, ул. Петровка, д. 38.
Что это - Центральный административный округ и муниципальный район Тверской, указывать не надо. Но, если использовать полную иерархию, они "вылезут".
Я вижу два пути:
1) просто отказаться от хранения информации по территориальному делению Москвы;
2) каким-то образом фильтровать "ненужные", при формировании адреса, территориальные образования.
...
Рейтинг: 0 / 0
Проектирование справочника адресов клиентов,сотрудников
    #36271070
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsСложность в другом: не все объекты, "вытащенные" таким образом из таблицы, могут понадобиться для формирования адреса.
Пример для Москвы.
Адрес: г. Москва, ул. Петровка, д. 38.
Что это - Центральный административный округ и муниципальный район Тверской, указывать не надо. Но, если использовать полную иерархию, они "вылезут".Если использовать иерархический справочник адресов, то не вылезут - в нём муниципальных районов не будет.

Это в справочнике административного деления есть округа и районы, а в адресном нету.
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование справочника адресов клиентов,сотрудников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]