Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
ДД коллеги! Никак не могу сообразить как лучше сделать,
имеется две таблицы "Регионы" и "Города", каждый город относится к какому-то региону, у каждого региона есть город, который является административным центром.

Все идеи сводятся к тому, чтобы сделать связь многие к многим с дополнительными ограничениями, но не нравится мне это решение...
Может есть идеи
8 сен 19, 19:51    [21966352]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
m0m0k0
Все идеи сводятся к тому, чтобы сделать связь многие к многим с дополнительными ограничениями, но не нравится мне это решение...
Может есть идеи

Все идеи это какие и почему?
8 сен 19, 20:14    [21966360]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
iOracleDev,

Идея:
Сделать связь многие ко многим, дополнительно в связующей таблице добавить административный центр
8 сен 19, 20:27    [21966361]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 32131
Блог
m0m0k0,

вообще-то та же Москва - самостоятельный регион )
8 сен 19, 20:29    [21966362]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Критик,

ну на МОскве города не заканчиваются
8 сен 19, 20:31    [21966363]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48134

m0m0k0
но не нравится мне это решение...

Потому что оно неправильное. В зависимости от конечной задачи решения могут варьироваться,
но ни одно из них не включает отношение M:N.

Posted via ActualForum NNTP Server 1.5

8 сен 19, 21:20    [21966377]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
m0m0k0
имеется две таблицы "Регионы" и "Города", каждый город относится к какому-то региону, у каждого региона есть город, который является административным центром.


В городе ссылка на регион (у каждого города строго один регион получится), в регионе ссылка на город (он будет тоже строго один). Единственное дополнительно сделать проверку, чтобы в в поле "город"(главный город) региона нельзя было поставить город, который к этому региону не относится. Чем не нравится решение?


m0m0k0
Сделать связь многие ко многим, дополнительно в связующей таблице добавить административный центр


Прикольный совет ) Это как? город может в 2 региона входить? Не очень хороший совет.
8 сен 19, 21:44    [21966386]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 429
m0m0k0, будьте проще:

Регионы
код_региона
название_региона
код_админ_центра
...

Города
код_города
название_города
код_региона
...
8 сен 19, 21:46    [21966389]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
Serguei
В городе ссылка на регион (у каждого города строго один регион получится), в регионе ссылка на город (он будет тоже строго один). Единственное дополнительно сделать проверку, чтобы в в поле "город"(главный город) региона нельзя было поставить город, который к этому региону не относится. Чем не нравится решение?

Уроборос какой то получился, зачем кусать свой собственный хвост?
8 сен 19, 21:52    [21966391]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
Gerros,

Что такое код_админ_центра?
8 сен 19, 21:53    [21966392]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48134

iOracleDev
зачем кусать свой собственный хвост?

Потому что это простейшее и надёжнейшее решение. Остальные идут под бритву старого араба.

Posted via ActualForum NNTP Server 1.5

8 сен 19, 22:09    [21966398]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
vmag
Member

Откуда: MP
Сообщений: 3235
m0m0k0,

Регион - главная, город - подчиненная (связь один ко многим, в регионе много городов)...
Признак центра:
- или в самом городе (может быть код из классификатора 0-Адм. центр, 1-просто город, 2- деревня, ...) что проще и шире и наверное правильнее...
- или в регионе код города (его ID в таблице город), тоже вариант (как у Gerros), хотя он мне и не нравится
8 сен 19, 22:09    [21966399]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 429
iOracleDev, Foreign Key на код_города
8 сен 19, 22:18    [21966400]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
Dimitry Sibiryakov
Потому что это простейшее и надёжнейшее решение. Остальные идут под бритву старого араба.

Зацикливание самого на себя это простейшее и надежнейшее решение? В иерархическом классификаторе тоже?

Чем не нравится поле/поля с типом территориального образования и типов таких типов может быть много?
8 сен 19, 22:26    [21966401]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
vmag
Признак центра:
- или в самом городе (может быть код из классификатора 0-Адм. центр, 1-просто город, 2- деревня, ...) что проще и шире и наверное правильнее...

Если нужен именно административный центр, то это флаг 1- для административного центра и отсутствие значения для всех остальных, если нужно гарантировать чтобы таких центров в регионе не было больше одного можно построить уникальный ключ.
8 сен 19, 22:40    [21966406]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
iOracleDev
зачем кусать свой собственный хвост?

Есть такой хитрый прием - причем рабочий ;-)

iOracleDev
Зацикливание самого на себя это простейшее и надежнейшее решение? В иерархическом классификаторе тоже?

Это не есть зацикливание. Это связи разного типа. И ничего страшного в этом нет.
8 сен 19, 23:00    [21966413]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
Serguei
Есть такой хитрый прием - причем рабочий ;-)

6 на 9, не самая удобная позиция

Serguei
Это не есть зацикливание. Это связи разного типа. И ничего страшного в этом нет.

Имеем город Б ссылающийся по внешнему ключу на регион А и в то же время регион А ссылается также внешним ключом на город Б, мне такой секас не нравится ))
9 сен 19, 00:28    [21966442]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 256
Критик
вообще-то та же Москва - самостоятельный регион )

Только вот это город, а не регион, точнее город Федерального значения и если не заводить такой регион, то уроборос останется без хвоста ))
9 сен 19, 00:34    [21966443]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 730
отдельную таблицу запили:
adm_center2region
gorod int -- админ.центр
region int
9 сен 19, 01:21    [21966452]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
vmag,

В первом случае может быть два адм. центра у региона, не подходит
9 сен 19, 06:04    [21966483]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
iOracleDev,

Построить уникальный ключ на флаг, это как?
9 сен 19, 06:06    [21966484]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Alibek B.
Member

Откуда:
Сообщений: 3189
iOracleDev
Уроборос какой то получился, зачем кусать свой собственный хвост?

Циклическая связь — это как раз недостаток малозначительный.
Более существенно то, что с такой схемой не получится нормально добавить Москву, Санкт-Петербург или Байконур.
Поэтому лучше добавить третью таблицу связей — таблица подчинения с полями (код_региона, код_столицы, тип_иерархии). Тип иерархии будет определять категорию, в которой указанный город является столицей (административная, финансовая, туристическая и т.д.).
9 сен 19, 09:01    [21966544]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
Alibek B.
Поэтому лучше добавить третью таблицу связей — таблица подчинения с полями (код_региона, код_столицы, тип_иерархии). Тип иерархии будет определять категорию, в которой указанный город является столицей (административная, финансовая, туристическая и т.д.).

Можно и так сделать, только не уверен, что это проще, этот функционал шире чем было заявлено было. Решение предлагалось строго под потребности. И регион москва и т.д. Это не проблема. Таблица связи многие ко многим кстати этот вопрос тоже не не решает.
Про моногорода я бы сделал регион с названием гМосква и у него бы поставил признак "самостоятельный регион" и запретил бы в города проставлять этот региогн более чем 1 раз.
9 сен 19, 10:37    [21966610]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
Alibek B.
Поэтому лучше добавить третью таблицу связей — таблица подчинения с полями (код_региона, код_столицы, тип_иерархии). Тип иерархии будет определять категорию, в которой указанный город является столицей (административная, финансовая, туристическая и т.д.).

Можно и так сделать, только не уверен, что это проще, этот функционал шире чем было заявлено было. Решение предлагалось строго под потребности. И регион москва и т.д. Это не проблема. Таблица связи многие ко многим кстати этот вопрос тоже не не решает.
Про моногорода я бы сделал регион с названием гМосква и у него бы поставил признак "самостоятельный регион" и запретил бы в города проставлять этот региогн более чем 1 раз.
9 сен 19, 10:57    [21966629]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48134

Alibek B.
с такой схемой не получится нормально добавить Москву, Санкт-Петербург или Байконур.

А их и не надо добавлять "нормально". Достаточно "в соответствии с потребностями задачи".

Posted via ActualForum NNTP Server 1.5

9 сен 19, 12:24    [21966738]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить