• ? Жуйк, нужно как-то организовать в базе хранение информации о населённых пунктах. Склоняюсь к древовидной структуре:

    Районный центр
    Район
    — Населённый пункт района

    В каждой записи также указывается тип: город, район, посёлок, станция, микрорайон, улица и т. д.

    Или лучше без района и дерева? Просто списком с указанием типа.

Replies (16)

  • @deni, лучше дерево и тип. Не забудь про индексы
  • @FGNTFG, db_index = True, так что ли?
  • @deni, у тебя какая бд?
  • @FGNTFG, MySQL с движком InnoDB и таблицами MyISAM
  • @deni, у тебя много данных будет?
  • @FGNTFG, Сейчас тысяч 10, рассчитываю конечно чем больше, тем лучше.
  • @deni, поиск по каким полям идет? по pk?
  • @FGNTFG, Поиск? Поиска нет вообще. Ты не к тому, что если есть поиск, то нужны индексы?
  • @deni, по каким полям ты делаешь select?
  • @FGNTFG, SELECT чего? Одной записи — по pk, нескольких записей — по category_id с LIMIT. Намерен теперь вот ещё и по location_id. Есть по user_id, по created.
  • @deni, построй индексы, чтоб избежать full scan. хотя, пока вся бд может удержаться в озу это не критично.
  • @FGNTFG, Потом. Сейчас у меня много таблиц с разными типами записей, хочу привести всё к одной таблице с всеохватывающим набором полей. Потом убрать лишнее и перейти на постгрес.
  • @deni, Возможно, мимо темы, но эта задача решена минимум дважды — в КЛАДРе и в БД ФИАС. Причем у первой древовидная структура, у второй плоская.
    С первой работать удобнее в целом.
  • @deni, Деревянная. Тут идеален NestedSets. Я бы несколько другую иерархию сделал (столица региона и регион на одном уровне), но ее всегда будет можно поменять если дерево. К тому же бывают и 4 уровня, если мы только нас.пункты рассматриваем. А можно туда же и улицы воткнуть, если зада такая. Кароч, @FGNTFG все верно говорит.
  • @alex0b, Ну да, я и использую NestedSets.
  • @rakoth, По аналогии с КЛАДРом и хотел сделать, только упростить до уровня района.