Прошу совета по структуре таблиц.
Допустим, есть таблица countries (Страны. Напр. Россия):
country_id (PK)
country_name
Далее таблица districts (Округа. Напр.: Центральный федеральный округ):
district_id (PK)
district_name
country_id (FK countries(country_id))
Так же есть таблица subjects (Субъекты. Напр.: Московская область):
subject_id (PK)
subject_name
district_id (FK districts(district_id))
country_id (FK countries(country_id))
И еще таблица cities (Города):
city_id (PK)
city_name
subject_id (FK subjects(subject_id ))
district_id (FK countries(district_id))
country_id (FK countries(country_id))
Вопрос:
Правильно ли организована структура?
Либо нужно удалить дополнительные внешние ключи из нижних таблиц и делать выборку по иерархии? Если да - то почему?
Большое спасибо!
Привязки лишние. Возможны противоречивые данные. Например город может находится в одной стране, а регион в другой. Не храните в таблице города страны (например), получайте к ним доступ по иерархии.
UPD:либо можно привязываться непосредственно к "родителю"
country_id (PK)
country_name
district_id (PK)
district_name
country_id (FK countries(country_id))
subject_id (PK)
subject_name
district_id (FK districts(district_id))
country_id (FK districts(country_id))
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости