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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда:
Сообщений: 255
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

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

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

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

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

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

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

Откуда: планета орков, г.Зверополис
Сообщений: 728
отдельную таблицу запили:
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

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

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

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

Posted via ActualForum NNTP Server 1.5

9 сен 19, 12:24    [21966738]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Alibek B.,
Вот, решение с помощью дополнительной таблицы - гуд!
9 сен 19, 12:29    [21966742]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov,
Предложите ваш вариант
9 сен 19, 12:30    [21966745]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
Предложите ваш вариант

Вариант чего? Ты задачу-то так и не озвучил.

Posted via ActualForum NNTP Server 1.5

9 сен 19, 12:33    [21966749]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
m0m0k0
Построить уникальный ключ на флаг, это как?

Легко, в таблице городов комбинацию ссылки на регион и флаг административного центра можно сделать уникальной.
9 сен 19, 12:34    [21966752]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
Всё зависит от степени абстракции, с которой проектировать БД. Вариант от Gerros хороший, но его можно немного доработать. Если почитать Википедию , то в России существуют административные единицы четырех уровней. На первом уровне - 85 субъектов Федерации (области, республики, края), из них 3 города федерального значения (Москва, Санкт-Петербург и Севастополь). Город федерального значения не относится ни к какому региону, поэтому у таких городов в поле Код_Региона должно стоять NULL.

Соответственно, если есть города федерального подчинения, то есть регионы без формального центра (Московская область, Ленинградская область).


Регионы
ID_региона
код_региона
название_региона


ID_региона и код_региона разные вещи, потому что у одного субъекта может быть несколько кодов (г. Москва - 77, 97, 99, 177 и т.д.). Поэтому нужна дополнительная таблица (связь один-ко-многим)
Регионы
ID_региона
код_региона


Города
ID_города
название_города
код_региона
признак_административного_центра


Таблица_административных_единиц_по_странам
(https://ru.wikipedia.org/wiki/Таблица_административных_единиц_по_странам)

Кстати, область и город - не единственные административно-территориальные единицы. Есть более крупная - федеральный округ и более мелкая - районы, городские округа. Соответственно, можно развить абстракцию и дальше.
9 сен 19, 12:44    [21966759]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
m0m0k0
Alibek B.,
Вот, решение с помощью дополнительной таблицы - гуд!

Чем оно хорошо?

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

На самом деле нужно отталкиваться от того как будет эта информация использоваться, если в отчетах по городам нужно выводить признак административный центр, то однозначно простой флаг в таблице городов, т.е. если эта информация используется для города, то помещать в таблицу городов, если в основном будет требоваться показывать город являющийся административным центром в списке регионов, тогда в таблицу регионов добавить ссылку на административный центр.
9 сен 19, 12:48    [21966761]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
Немного ошибся. Хотел предложить таблицы вот в таком варианте:
Регионы
ID_региона
название_региона


Коды_регионов
ID_региона
код_региона


Города
ID_города
название_города
код_региона
признак_административного_центра
9 сен 19, 12:54    [21966772]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
ultrasonic7
поэтому у таких городов в поле Код_Региона должно стоять NULL.

С одной стороны вроде бы правильно, с другой не всегда, зависит от задач, возможно для реальной системы будет выгоднее продублировать города федерального значения в регионы и добавить тип записи - регион, город федерального значения.
9 сен 19, 12:56    [21966776]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
Жаль, нельзя отредактировать опубликованное сообщение. Во втором варианте в таблице "Города" вместо "код_региона" должно быть "ID_региона"
9 сен 19, 12:57    [21966778]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
ultrasonic7
Немного ошибся. Хотел предложить таблицы вот в таком варианте:

Сейчас точно ошибся, почему в городах код_региона вместо ID_региона, для разных кодов одного региона будешь списки городов дублировать?
9 сен 19, 13:01    [21966783]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
iOracleDev
ultrasonic7
поэтому у таких городов в поле Код_Региона должно стоять NULL.

С одной стороны вроде бы правильно, с другой не всегда, зависит от задач, возможно для реальной системы будет выгоднее продублировать города федерального значения в регионы и добавить тип записи - регион, город федерального значения.


Да, если посмотреть таблицу административных единиц, то города федерального значения, как и области, края и республики - это административные единицы первого уровня. Но только это не регионы, а субъекты РФ))
9 сен 19, 13:04    [21966785]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
iOracleDev
ultrasonic7
Немного ошибся. Хотел предложить таблицы вот в таком варианте:

Сейчас точно ошибся, почему в городах код_региона вместо ID_региона, для разных кодов одного региона будешь списки городов дублировать?


Да, уже поправил))
9 сен 19, 13:05    [21966787]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
Отредактированная таблица городов
Города
ID_города
название_города
ID_региона
признак_административного_центра
9 сен 19, 13:07    [21966788]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

А почему бы не послать аффтара сразу на ФИАС-ко?..

Posted via ActualForum NNTP Server 1.5

9 сен 19, 13:13    [21966794]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov,
"имеется две таблицы "Регионы" и "Города", каждый город относится к какому-то региону, у каждого региона есть город, который является административным центром."
Этого не достаточно?
9 сен 19, 14:41    [21966894]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

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

Могу озвучить задачу, есть определенные товары, распределенные по городам (в основном по адм. центрам), при выдаче товара клиенту, нужно проверить его наличие в городе, который клиент указал при регистрации, если товаров в этом городе нет, то берем его из города, который является адм. центром.
9 сен 19, 14:59    [21966925]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

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

Отличная идея
9 сен 19, 15:01    [21966928]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
iOracleDev
m0m0k0
Построить уникальный ключ на флаг, это как?

Легко, в таблице городов комбинацию ссылки на регион и флаг административного центра можно сделать уникальной.


я про эту
9 сен 19, 15:01    [21966929]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
Могу озвучить задачу

Ну наконец-то разродился... Для этого не нужна ни таблица регионов, ни административные
центры. Для каждого города просто указывается ссылка "где искать если здесь нету".

Posted via ActualForum NNTP Server 1.5

9 сен 19, 15:37    [21966980]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov
m0m0k0
Могу озвучить задачу

Ну наконец-то разродился... Для этого не нужна ни таблица регионов, ни административные
центры. Для каждого города просто указывается ссылка "где искать если здесь нету".


Так себе решение
9 сен 19, 16:51    [21967073]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
Так себе решение

Это решение конкретной задачи, которое не сломается если в один прекрасный день опорная
база логистики окажется не в административном центре, а вообще в соседнем регионе.

Posted via ActualForum NNTP Server 1.5

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

Откуда: Papua New Guinea
Сообщений: 680
m0m0k0
Могу озвучить задачу, есть определенные товары, распределенные по городам (в основном по адм. центрам), при выдаче товара клиенту, нужно проверить его наличие в городе, который клиент указал при регистрации, если товаров в этом городе нет, то берем его из города, который является адм. центром.


Странная постановка задачи, немного "прибитая гвоздями". Если требуется отслеживать наличие товаров, то нужно описание складов и описание какого то графа транспортной сети и выбирать по каким то (чуть чуть более сложным) правилам откуда брать (например- по кратчайшему расстоянию).
9 сен 19, 17:45    [21967129]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

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


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


Описание центров выдачи (складов) имеется.
Всю логистику по доставке и распределению товаров по городам клиент берет на себя, необходимо считать только в разрезе городов.
9 сен 19, 18:17    [21967168]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov
m0m0k0
Так себе решение

Это решение конкретной задачи, которое не сломается если в один прекрасный день опорная
база логистики окажется не в административном центре, а вообще в соседнем регионе.


Приличный аргумент. Как бы вы релизовали данное решение? (конечно же целостность данных в проиритете).
9 сен 19, 18:31    [21967180]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
Как бы вы релизовали данное решение?

А какое слово из "для каждого города просто указывается ссылка" Вам непонятно?

Posted via ActualForum NNTP Server 1.5

9 сен 19, 18:38    [21967184]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov
m0m0k0
Как бы вы релизовали данное решение?

А какое слово из "для каждого города просто указывается ссылка" Вам непонятно?

Т.е. вы предлагаете в таблице городов проставить ссылки на адм. центры? В таком случае, где гарантия, что вы не ошибетесь и такого города не окажется?
9 сен 19, 18:42    [21967188]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
В таком случае, где гарантия, что вы не ошибетесь и такого города не окажется?

Откройте для себя всю мощь foreign key.

Posted via ActualForum NNTP Server 1.5

9 сен 19, 18:47    [21967192]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov
m0m0k0
В таком случае, где гарантия, что вы не ошибетесь и такого города не окажется?

Откройте для себя всю мощь foreign key.


FK на ту же таблицу? Так что можно что-ли OO
9 сен 19, 18:55    [21967203]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

m0m0k0
Так что можно что-ли OO

А кто запретит-то?..

Posted via ActualForum NNTP Server 1.5

9 сен 19, 19:09    [21967214]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
L.Otujktd
Member

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

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

Третья таблица напрашивается:)
9 сен 19, 22:07    [21967307]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Serguei
город может в 2 региона входить?

Один город может даже в две страны входить. Граница между кухней и туалетом. Прецеденты есть и в Европе, и в Южной Америке.

Вообще я бы рекомендовал рассматривать и город и регион как контейнеры для более мелких объектов. И слить их в одну таблицу.

А административное деление и признак центра указывать в отдельной табличке.

Оно конечно для сдачи курсовой не прокатит, но в промышленной эксплуатации работать как раз будет отлично. Особенно если города и регионы грузить из внешних источников, а не садить на их ведение умственно отсталых.
10 сен 19, 08:31    [21967420]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
Сергей Васкецов
Один город может даже в две страны входить. Граница между кухней и туалетом. Прецеденты есть и в Европе, и в Южной Америке.

Конкретными примерами можете поделиться?

Сергей Васкецов
Вообще я бы рекомендовал рассматривать и город и регион как контейнеры для более мелких объектов. И слить их в одну таблицу.


Возможно нужно так рассматривать. Весь вопрос в постановке задачи) Теоретически можно хоть до номера дома расписать. Только нужно понять зачем...
10 сен 19, 10:13    [21967489]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
zeon11
Member

Откуда: Сибирь, Кемерово
Сообщений: 1146
m0m0k0,

Создай одну таблицу, назови нейтрально, например, geographical_place,
сделай таблицу иерархическую (дерево),
В корень поставь "Россия", все регионы, включая Москву и Севастополь - в подчинение.
Области так-же подчиняются узлу "Россия"
В подчинении "Область" районы и города области. Для областного центра придумай какой-нибудь признак.
Основное преимущество "дерева" - не надо ломать голову над созданием таблиц, если в будущем потребуется более подробная детализация.

К сообщению приложен файл. Размер - 53Kb
10 сен 19, 12:21    [21967609]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
vmag
Member

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

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


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

Многие задачи долго простаивают и в конце концов умирают по причине того, что разработчик пытается решить все решаемые и не решаемые проблемы за счет схемы БД (как будто у него нет в и планах делать интерфейс, типа юзеры будут вбивать данные непосредственно в таблицы).

Задача не стоит и выеденного яйца, - показать на карте за выбранный регион все пункты выдачи, а административный центр выделить красным. Зайди в яндекс почту, выбери карты и нарисуй за 20 минут без всяких бд...
10 сен 19, 12:51    [21967651]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

vmag
просто указать в регионе все реальные пункты выдачи

Не будет это работать. Возьмём реальный пример: центр выдачи в Агрызе. Регион - Татарстан,
его центр - Казань. Но до Ижевска, регионального центра Удмуртии всего полчаса езды в то
время как до Казани - шесть. Аффтар всерьёз уверен, что недостающий товар в Агрыз будут
везти из Казани или посылать туда клиента?..

Posted via ActualForum NNTP Server 1.5

10 сен 19, 13:13    [21967688]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
ultrasonic7
Member

Откуда:
Сообщений: 114
Вот какая модель представляется. Сразу скажу, чего в ней нет - федеральных округов и районов. Что в ней есть - регионы, коды регионов и города, в том числе федерального значения. Таблица REGIONS связана отношением "один-ко многим" с таблицей REGION2CODE и так же отношением "один-ко многим" с таблицей CITIES.

+ Код
Создаём структуру
-- Create tables section -------------------------------------------------

-- Table REGIONS
CREATE TABLE REGIONS(
  REGION_ID Number NOT NULL,
  REGION_NAME Varchar2(200 CHAR),
  REGION_TYPE Number
);

-- Add keys for table REGIONS
ALTER TABLE REGIONS ADD CONSTRAINT PK_REGIONS PRIMARY KEY (REGION_ID);

-- Table and Columns comments section
COMMENT ON TABLE REGIONS IS 'Регионы';
COMMENT ON COLUMN REGIONS.REGION_ID IS 'ID региона (области, края, республики).';
COMMENT ON COLUMN REGIONS.REGION_NAME IS 'Название региона (области, края, республики)';
COMMENT ON COLUMN REGIONS.REGION_TYPE IS 'Тип региона (1 - область, 2 - республика, 3 - автономный округ, 4 - край, 5 - автономная область, 6 - город федерального значения)';

-- Table REGION2CODE
CREATE TABLE REGION2CODE(
  REGION_ID Number NOT NULL,
  REGION_CODE Number NOT NULL
);

-- Add keys for table REGION2CODE

ALTER TABLE REGION2CODE ADD CONSTRAINT PK_REGION2CODE PRIMARY KEY (REGION_ID,REGION_CODE);

-- Table and Columns comments section
  
COMMENT ON TABLE REGION2CODE IS 'Коды регионов';
COMMENT ON COLUMN REGION2CODE.REGION_ID IS 'ID региона (ссылка на REGIONS.REGION_ID)';
COMMENT ON COLUMN REGION2CODE.REGION_CODE IS 'Код региона';

-- Table CITIES
CREATE TABLE CITIES(
  CITY_ID Number NOT NULL,
  REGION_ID Number,
  CITY_NAME Varchar2(200 CHAR) NOT NULL,
  ADM_CENTER Number,
  IS_FEDERAL Number
);

-- Add keys for table CITIES
ALTER TABLE CITIES ADD CONSTRAINT PK_CITIES PRIMARY KEY (CITY_ID);

-- Table and Columns comments section
COMMENT ON TABLE CITIES IS 'Города (населенные пункты)';
COMMENT ON COLUMN CITIES.CITY_ID IS 'ID города';
COMMENT ON COLUMN CITIES.REGION_ID IS 'ID региона (ссылка на REGIONS.REGION_ID)';
COMMENT ON COLUMN CITIES.CITY_NAME IS 'Наименование города (населенного пункта)';
COMMENT ON COLUMN CITIES.ADM_CENTER IS 'Признак административного центра (0 - не является административным центром, 1 - является административным центром)';
COMMENT ON COLUMN CITIES.IS_FEDERAL IS 'Город федерального значения (0 - не является городом федерального значения, 1 - является городом федерального значения)';

-- Create relationships section ------------------------------------------------- 
ALTER TABLE REGION2CODE ADD CONSTRAINT Relationship2 FOREIGN KEY (REGION_ID) REFERENCES REGIONS (REGION_ID);
ALTER TABLE CITIES ADD CONSTRAINT Relationship5 FOREIGN KEY (REGION_ID) REFERENCES REGIONS (REGION_ID);


Заполняем
INSERT INTO SCHEMATEST.REGIONS VALUES (1, 'Москва', 6);
INSERT INTO SCHEMATEST.REGIONS VALUES (2, 'Санкт-Петербург', 6);
INSERT INTO SCHEMATEST.REGIONS VALUES (3, 'Севастополь', 6);
INSERT INTO SCHEMATEST.REGIONS VALUES (4, 'Свердловская область', 1);
INSERT INTO SCHEMATEST.REGIONS VALUES (5, 'Ненецкий автономный округ', 3);
INSERT INTO SCHEMATEST.REGIONS VALUES (6, 'Московская область', 1);
INSERT INTO SCHEMATEST.REGIONS VALUES (7, 'Ленинградская область', 1);

INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 77);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 97);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 99);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 177);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 199);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 197);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (1, 777);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (2, 78);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (2, 98);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (2, 178);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (4, 66);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (4, 96);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (5, 83);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (6, 50);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (6, 90);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (6, 150);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (6, 190);
INSERT INTO SCHEMATEST.REGION2CODE VALUES (7, 47);

INSERT INTO SCHEMATEST.CITIES VALUES (1, 1, 'Москва', 1, 1);
INSERT INTO SCHEMATEST.CITIES VALUES (2, 2, 'Санкт-Петербург', 1, 1);
INSERT INTO SCHEMATEST.CITIES VALUES (3, 3, 'Севастополь', 1, 1);
INSERT INTO SCHEMATEST.CITIES VALUES (4, 4, 'Екатеринбург', 1, 0);
INSERT INTO SCHEMATEST.CITIES VALUES (5, 4, 'Нижний Тагил', 0, 0);
INSERT INTO SCHEMATEST.CITIES VALUES (6, 5, 'Нарьян-Мар', 1, 0);
INSERT INTO SCHEMATEST.CITIES VALUES (7, 6, 'Сергиев Посад', 0, 0);




Модель довольно упрощенная, но для практических задач должно хватить.
Если нужно совсем-совсем подробную модель, то попытайтесь скопировать структуру ФИАС.

К сообщению приложен файл. Размер - 27Kb
10 сен 19, 13:20    [21967699]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 780
Dimitry Sibiryakov
vmag
просто указать в регионе все реальные пункты выдачи

Не будет это работать. Возьмём реальный пример: центр выдачи в Агрызе. Регион - Татарстан,
его центр - Казань. Но до Ижевска, регионального центра Удмуртии всего полчаса езды в то
время как до Казани - шесть. Аффтар всерьёз уверен, что недостающий товар в Агрыз будут
везти из Казани или посылать туда клиента?..

+1. И чем дальше на восток, тем больше расстояния. И тем выгоднее искать доставку из другого административного образования. Схема ТС возможно актуальна для Московского региона. Может внести в базу координаты пунктов и считать расстояния? Так не пойдёт. Слишком просто. Нужна маршрутная сеть.
10 сен 19, 13:46    [21967723]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Serguei
Сергей Васкецов
Один город может даже в две страны входить. Граница между кухней и туалетом. Прецеденты есть и в Европе, и в Южной Америке.

Конкретными примерами можете поделиться?

Тынц.
Про Южную Америку сами найдёте.
10 сен 19, 13:48    [21967727]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Сергей Васкецов
Serguei
пропущено...

Конкретными примерами можете поделиться?

Тынц.
Про Южную Америку сами найдёте.

Собственно говоря не катит. Это разные города. Ибо в тынце написано:
https://fishki.net/2553106-neobychnaja-granica-mezhdu-belygiej-i-gollandiej.html
Марион де Гон-Велентурф, бургомистр Баарле-Нассау (Нидерланды): "Объединить два муниципалитета из разных стран в единое европейское образование было бы прекрасной идеей. Но в реальности это все еще остается утопией".
Лео ван Тилбург, бургомистр Баарле-Гертога (Бельгия): "Наверное мы никогда до этого не доживём. Сейчас это невозможно по закону. А если это когда-нибудь и случится, что я полностью поддерживаю, наружу вылезут культурные различия".

Так же и скорее всего, в Южной Америке.
Так же как и в России с Украиной (Чертково Ростовской области и Меловое Луганской)
10 сен 19, 14:12    [21967750]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Mr.Fontaine
Собственно говоря не катит. Это разные города

То, что их называют по-разному, сути не меняет.
Есть даже комната, находящаяся в разных странах.
Уж про комнату-то никак не скажете, что это разные комнаты.
10 сен 19, 14:28    [21967766]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Сергей Васкецов, чё, крестики прям по комнате проложены?
10 сен 19, 14:35    [21967776]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Крестики для наглядности. То есть для туристов по большей части. В комнатах крестики наверняка не рисуют, незачем.
В Южной Америке так точно не рисуют.
10 сен 19, 14:36    [21967777]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Сергей Васкецов, Вы лучше бы проработали вопрос нахождения одного города в разных странах на примере Солтни (Англия-Уэльс), но там думается всё проще, ибо всё-таки государство одно: объединённое королевство. Узнайте как там с главой города обстоит: один или два
10 сен 19, 14:38    [21967778]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Mr.Fontaine
Узнайте как там с главой города обстоит: один или два

А какое это имеет значение?
А ещё там может быть сотня депутатов...
Предлагаю вернуться к теме.
10 сен 19, 15:17    [21967815]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
vmag
Member

Откуда: MP
Сообщений: 3235
Dimitry Sibiryakov
Не будет это работать. Возьмём реальный пример: центр выдачи в Агрызе. Регион - Татарстан,
его центр - Казань. Но до Ижевска, регионального центра Удмуртии всего полчаса езды в то
время как до Казани - шесть


Это как раз и будет работать, я на карте как клиент увижу, что мне ближе к Ижевску, на карте видно все пункты выдачи, в этом и весь смысл, плохо что проектировщик думает по другому...
10 сен 19, 16:04    [21967862]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
vmag
Member

Откуда: MP
Сообщений: 3235
такое ощущение, что никто не заказывал детали на exist те... пофиг где ты, сделал заказ, тебе показали ближайшие пункты выдачи...
10 сен 19, 16:10    [21967871]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
vmag
такое ощущение, что никто не заказывал детали на exist те... пофиг где ты, сделал заказ, тебе показали ближайшие пункты выдачи...

Логика видимая пользователю в exist думаю другая, чем доставка на большие расстояния.Подозреваю, что exist не обязательно возит по кратчайшему маршруту. Думаю там есть какая то схема логистики и вся привязка к ней. 100% не уверен, но мне кажется это логичным: не делать доставку одной запчасти из ближайшего магазина, если уже есть потребность доставки из более дальнего, но более крупной партии. Логично решать данную задачу не прямо "в лоб"
10 сен 19, 21:38    [21968147]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
vmag
Member

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

Согласен, просто ТС видит все со своей колокольни, а нужен глобальный подход. Перечень пунктов доставки в регионе это частный случай и интересен только с точки зрения регистрации в БД, для клиента более интересен и продуктивен полный список пунктов доставки вокруг его местоположения, независимо от принадлежности их к региону, об этом и речь...
10 сен 19, 23:26    [21968168]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Сергей Васкецов
Mr.Fontaine
Узнайте как там с главой города обстоит: один или два

А какое это имеет значение?
А ещё там может быть сотня депутатов...
Предлагаю вернуться к теме.

Так-то изначально не надо было уходить от темы, и писать чушь типа
Сергей Васкецов
Один город может даже в две страны входить

Сами же дали ссылку, где написано, что законодательство запрещает иметь один город в двух странах.
Потому при проектировании БД ВСЕГДА следует делать, что один город привязан к одной стране.
А в какой стране находится диван, а какой телевизор это никому не интересно и в структуре БД никто это отображать не будет
11 сен 19, 06:44    [21968206]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
vmag
Serguei,

Согласен, просто ТС видит все со своей колокольни, а нужен глобальный подход. Перечень пунктов доставки в регионе это частный случай и интересен только с точки зрения регистрации в БД, для клиента более интересен и продуктивен полный список пунктов доставки вокруг его местоположения, независимо от принадлежности их к региону, об этом и речь...

В данном случае речь вообще не об описанном Вами глобальном подходе. Ибо обсуждаемая задача - это не выбор пункта выдачи пользователем.
Она сидит дальше, уже после того как пользователь выбрал пункт выдачи (правда там похоже закреплено, что в одном населённом пункте всегда один пункт выдачи, но это к нашей задаче отношения не имеет)
После выбора пользователем пункта выдачи и начинает работать обсуждаемый алгоритм:
- проверяется наличие товара в указанном пользователем пункте выдачи
- если есть товар, то лон видимо бронируется
- а вот если его нет, то принимается решение откуда везти товар, чтобы пользователь его получил в указанном им пункте выдачи. Вот этот момент мы и обсуждаем.
На exist.ru эта задача тоже работает, но ты её не видишь, потому давай не уходить от темы обсуждения.
11 сен 19, 07:05    [21968211]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 680
Mr.Fontaine
потому давай не уходить от темы обсуждения.

а что еще то хотите услышать? )
Выяснили: описать связи регионов и городов можно несколькими способами и все они правильные. Каждый выбирает свой путь :)
11 сен 19, 07:41    [21968224]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Serguei, так-то вроде бы выяснили, что в данной задаче связывать города с регионами вообще не требуется.
Достаточно указать из какого города надо везти, не привязываясь к регионам и их административным центрам.
Как-то так.
11 сен 19, 09:02    [21968253]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
Mr.Fontaine
законодательство запрещает иметь один город в двух странах

При чём тут вообще законодательство?

Mr.Fontaine
А в какой стране находится диван, а какой телевизор это никому не интересно и в структуре БД никто это отображать не будет

Если рассуждать в рамках законодательствоа, то задача вообще иначе ставится.
11 сен 19, 12:06    [21968402]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
Mr.Fontaine
Serguei, так-то вроде бы выяснили, что в данной задаче связывать города с регионами вообще не требуется.
Достаточно указать из какого города надо везти, не привязываясь к регионам и их административным центрам.
Как-то так.

Возможно просто есть самостоятельные региональные филиалы, потому и регионы появились и возможно везти из соседнего региона нельзя, даже если близко, именно потому что локальные пункты соседнего филиала относятся к своему региональному и в другой регион им запрещено отгружать. Тут задача скорее на организационную структуру организации, о которой ТС информации не предоставил.
11 сен 19, 12:52    [21968452]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
iOracleDev
Member

Откуда:
Сообщений: 255
Сергей Васкецов
При чём тут вообще законодательство?

Да при том, что даже если часть города за границей, то это уже не просто другой город, это страна другая.
11 сен 19, 12:54    [21968455]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

Откуда:
Сообщений: 18
ultrasonic7
Вот какая модель представляется. Сразу скажу, чего в ней нет - федеральных округов и районов. Что в ней есть - регионы, коды регионов и города, в том числе федерального значения. Таблица REGIONS связана отношением "один-ко многим" с таблицей REGION2CODE и так же отношением "один-ко многим" с таблицей CITIES.


Что-то много всего, что такое за "REGION_CODE"?
11 сен 19, 13:27    [21968485]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
m0m0k0
Member

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

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


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

Многие задачи долго простаивают и в конце концов умирают по причине того, что разработчик пытается решить все решаемые и не решаемые проблемы за счет схемы БД (как будто у него нет в и планах делать интерфейс, типа юзеры будут вбивать данные непосредственно в таблицы).

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


Причём здесь карты вообще? У меня есть вся иерархия и страны и районы и города и пункты выдачи, товары распределены по городам, логистику между пунктами выдачи на себя берет заказчик. Где вы тут увидели решение всех решаемых и не решаемых проблем?
11 сен 19, 13:31    [21968492]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Dimitry Sibiryakov
Member

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

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

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

Posted via ActualForum NNTP Server 1.5

11 сен 19, 13:42    [21968517]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
Сергей Васкецов
Mr.Fontaine
законодательство запрещает иметь один город в двух странах

При чём тут вообще законодательство?

При том, что принадлежность населённого пункта тому или иному региону определяется законом.
Ни одно государство не имеет право распоряжаться территорией вне закона. Неожиданно для Вас не правда ли?

Вот когда будет закон, в котором говорится, что город Баарле является единым субъектом и управляется двумя государствами, тогда и можно будет его вписать в раздел кондоминиумов. Но в настоящее время от этих понятий отходят, не создавая новые кондоминиумы. Из территорий похоже осталось всего пара таких объектов: остров Фазанов (на котором нет населённых пунктов) и деревня Хадт (единственный населённый пункт, управляемый двумя государствами). Да и то нет нигде указаний, сколько в этой деревне населения.
Так что учитывая тенденции международного права в отказе от кондоминиумов, и наличие единственного пункта во всем мире, который действительно управляется двумя государствами, говорить о том, что в БД требуется предусматривать привязку города к нескольким странам как-то нерационально.
12 сен 19, 07:26    [21969075]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Владимир П.
Member

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

Не надо таких проверок. Бывают ситуации, когда административным центром района является город, который сам в этот район входит. У нас, например, в Свердловской области таких две штуки.
12 сен 19, 09:59    [21969142]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Владимир П.
Member

Откуда: Екатеринбург
Сообщений: 437
В эту тему загляните:
Организация ГЕО деления для системы
12 сен 19, 10:11    [21969152]     Ответить | Цитировать Сообщить модератору
 Re: Помогите построить связь  [new]
Сергей Васкецов
Member

Откуда:
Сообщений: 19310
iOracleDev
Сергей Васкецов
При чём тут вообще законодательство?

Да при том, что даже если часть города за границей, то это уже не просто другой город, это страна другая.

Есть даже ОДНА КОМНАТА в ОДНОЙ КВАРТИРЕ в разных странах.
ПС. Но вы конечно можете продолжать делать вид, что у Вас получается кипятить...

Mr.Fontaine
и деревня Хадт (единственный населённый пункт, управляемый двумя государствами)

Тогда к чему этот праведный спор ни о чём?

iOracleDev
говорить о том, что в БД требуется предусматривать привязку города к нескольким странам как-то нерационально.

Разве я такое говорил? Я обратил внимание на то, что так бывает. И даже не так, а ещё хуже.
А надо это автору или нет - это пусть он сам решает.
12 сен 19, 14:49    [21969531]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / Проектирование БД Ответить