Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить