Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Человек->город->страна. Если город не указан, то в какой он стране?

$
0
0
Давно сталкиваюсь с этой неприятной ситуацией.
Общий случай
Люди
ФИО Город_ID

Города
ID Город Страна_ID

Страны
ID Страна

Если юзеру укажу, что он в городе ID=12, то по этому городу ясно, в какой он находится стране.
Но если город не указан, то как указать страну?

Есть несколько решений у меня в голове, но ни одно меня не устраивает, дефективные они все (хотя именно так пока и справлялся)

  • Создать город "Регионы России". Не подходит, ибо если город не задан, то должна быть надпись "город не задан", либо пусто. А если стран 1000? То добавить 1000 фиктивных городов? Бредовое решение.
  • Добавить избыточность, поставив крест на нормальных формах. В моей проге сейчас и без того полно избыточностей (в связи с оптимизацией доступа). "Города-страны" - это я в пример привёл. У меня в программе подобных ситуаций, когда 3-4 таблицы идут каскадом, полно. Это при том, что БД пока небольшая (55 таблиц). И мне теперь на каждую делать избыточность и следить, чтобы она не была противоречивой? Это тяжело будет поддерживать в большой БД.

    (админы-модераторы, почему у меня текст отступает от края экрана после списка пунктов списка?)

    Мой случай.
    Я тут всё клепаю свою программулину по соревнованиям.
    Один из таких каскадов - вместо "городов" у меня "весовые категории", а вместо "стран" - "возрастные категории"
    Каждой возрастной категории соответствует свой список весовых категорий.
    Участник
    ФИО Вес_ID
    Петров1

    Весовые категории
    ID ВесКат ВозрастКат_ID
    1 33-35кг2

    Возрастные категории
    ID ВозрКат
    1 8-9 лет
    2 10-12 лет

    Каждому участнику приписываю запись из таблицы "весовые категории" и, таким образом, легко определяю его возрастную через таблицу весовых.
    А вот если не указать человеку "весовую категорию", то и возрастной у него указано не будет.

    Как быть?
    Какое существует грамотное решение этой ситуации?

  • Viewing all articles
    Browse latest Browse all 7251

    Trending Articles