Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Регионы и их детализация ... / 4 сообщений из 4, страница 1 из 1
13.05.2005, 17:39
    #33063127
RomanSW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Регионы и их детализация ...
Всем привет.
Подскажите пожалуйста как лучше поступить в данной ситуации:
Есть регионы, у регионов могут быть области или округа (например Москва имеет округа в округе может быть несколько управ, у управы может находится какое то метро и т.д.). Но это Москва, если брать другой город то там соответственно все иначе.
В итоге, когда мы идем от города и его детализируем до (например) метро, где (например) проживает сотрудник. Как видно, конечным результатом является метро где находится сотрудник (id метро привязывается к базе адресов сотрудников), а город, округ и т.д. всего лишь его территориальное отношение в сторону укрупнения.
Вопрос: как наиболее гибко предоставить возможность создания города, а далее округа если он нжуент. То есть если создали город Москва, создали округа и метро, а управы создавать не стали.
У меня пока на уме дерево, то есть:

id | parent_id | level | name |

1 | 0 | 0 | Москва
2 | 1 | 1 | АО 1
3 | 2 | 2 | Метро 1
4 | 1 | 1 | АО 2
5 | 4 | 2 | Метро 1

В базу адреса сотрудников заносим соответственно ID 3 и 5 но никак не 2 или 1.

Это удачное решение или нет? На что можно наткнуться при этой реализации?
Какие могут быть минусы?
Заранее благодарю за помощь ...
...
Рейтинг: 0 / 0
13.05.2005, 17:52
    #33063152
Paul Sacks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Регионы и их детализация ...
В принципе нормальное дерево. Но все прочие ошибки и просчеты полезут во время реализации самого алгоритма а также при эксплуатации продукта. Чтобы все это просчитать необходимо применить как минимум элементы реляционной алгебры. В ней, на основе теории множеств и можно все просчитать.
...
Рейтинг: 0 / 0
13.05.2005, 18:13
    #33063209
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Регионы и их детализация ...
RomanSW
Вы говорите о несбалансированной иерархии. По сути есть два метода ее реляционной реализации. Первый - Ваш, то есть нормальное дерево. При этом у узла может быть признак "тип" (город, метро итп), может быть флаг "оконечный" (как знак того, что на такую вершину можно ссылаться как на максимально точный адрес" итп.

Другой вариант - так называемые skip-level hierarchies. Механизм примерно такой: допустим, есть таблицы "города", "округа", "управы" и "станции метро". Тогда, желая описать метро без управы, Вы вставляете в таблицу управ фейковую запись "округ X", и привязываете станцию метро к ней. Если достаточно города - вставляете фейковые записи "город Y" в таблицы округов, управ и метро. Соответственно, ссылаетесь всегда на метро, а уж там, анализируя флаги фейковости, получаете реальную картину.
...
Рейтинг: 0 / 0
14.05.2005, 09:18
    #33063830
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Регионы и их детализация ...
Мне кажется что город с его территориальным делением -
это один объект - дерево.
Метро это ещё один объект - сеть.
Я бы построил отдельно дерево города
и сеть метро (его тоже можно привязать к дереву
города при достаточном уровне детализации),
а потом привязывал бы
адреса сотрудников к обеим структурам.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Регионы и их детализация ... / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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