Прямой ответ: Тот факт, что проблема относительно проста, не является причиной того, чтобы не делать что-то, чтобы сделать ее простой. Мне намного легче ходить на ногах, чем на руках. Я не помню, чтобы когда-нибудь говорил: «О, мне нужно пройти всего полмили, это небольшое расстояние, так что я мог бы идти на руках».
Более длинный ответ: если вы не храните никакой информации о городе, кроме его названия, и у вас нет предварительно заданного списка городов (например, для построения раскрывающегося списка), то ваша схема уже нормализована. Что будет в таблице City, кроме названия города? (Я предполагаю, что штат не может зависеть от города, потому что у вас могут быть два города с одинаковым названием в разных штатах, например, Дейтон, штат Огайо, и Дейтон, штат Теннесси.) Соответствующее правило нормализации - «никаких неключевых зависимостей», то есть вы не можете иметь данные, которые зависят от данных, не являющихся ключом. Если бы у вас были, скажем, широта и долгота каждого города, то эти данные повторялись бы в каждой записи, относящейся к одному и тому же городу. В этом случае вы, безусловно, захотите создать отдельную таблицу городов для хранения широты и долготы. Конечно, вы можете создать «код города», представляющий собой целое число или аббревиатуру, которая ссылается на таблицу городов. Но если нет других данных о городе, я не вижу, как это что-то дает.
Технически я бы предположил, что город зависит от места проведения. Если место проведения — «Рокфеллеровский центр», это означает, что городом должен быть Нью-Йорк. Но если место проведения не является обязательным, это создает проблемы. Одна из возможностей состоит в том, чтобы иметь таблицу «Место проведения», в которой перечислены название места, город и штат, а для случаев, когда вы не указываете место, иметь «не указано» для каждого города. Это было бы более хрестоматийно правильно, но на практике, если в большинстве случаев не указывать вену, это мало что выиграет. Если большую часть времени вы ДЕЙСТВИТЕЛЬНО указываете место проведения, это, вероятно, будет хорошей идеей.
О, и действительно ли существует связь 1:1 между мероприятием и спонсором? Я могу поверить, что у мероприятия не может быть более одного спонсора. (В реальной жизни существует множество мероприятий с несколькими спонсорами, но, возможно, для ваших целей вас интересует только «основной спонсор» или что-то в этом роде.) Но разве спонсор никогда не проводит более одного мероприятия? Это кажется маловероятным.
person
Jay
schedule
20.09.2010