Вопрос

Я воссоздаю часть базы данных моей компании, потому что она не отвечает будущим потребностям.В настоящее время у нас есть в основном плоский файл и несколько разрозненных таблиц, которые никогда не были полностью реализованы.

Мой способ мышления заключается в том, что у нас есть таблица для каждой категории, за исключением, возможно, таблицы zip, которая может служить таблицей "соедини все это вместе".Пожалуйста, обратитесь к изображению ниже:

Диаграмма базы данных http://www.freeimagehosting.net/uploads/248cc7e884.jpg

Одна вещь, о которой я думаю, - это удалить таблицу zip и просто поместить почтовый индекс в таблицу zipstocities, поскольку почтовый индекс почти уникален, а затем индексировать таблицу по почтовому индексу.Единственным недостатком является то, что почтовый индекс должен быть varchar, чтобы обрабатывать почтовые индексы с начальными нулями.Просто хочу знать, есть ли какой-то изъян в моей логике.

Это было полезно?

Решение

Я не очень хорошо знаю почтовый индекс США и систему территориального деления, но предполагаю, что она чем-то похожа на немецкую.

  • В штате много округов.
  • В округе много городов.
  • В городе много почтовых индексов.

Следовательно, я бы использовал следующую схему.

ZipCodes          CityZipCodes
------------      ----------------      Cities
ZipCode (PK) <─── ZipCode (PK)(FK)      -----------
                  City    (PK)(FK) ───> CityId (PK)
                                        Name
                                        County (FK) ───┐
                                                       │
                                                       │
                                     Counties          │
                                     -------------     │
              States                 CountyId (PK) <───┘
              -----------------      Name               
              StateId      (PK) <─── State    (FK)
              Name
              Abbreviation

Исправлено для нескольких городов по каждому почтовому индексу.

Другие советы

Одна вещь, о которой вы должны знать, - это то, что не все города находятся в округах.В Вирджинии вы находитесь либо в городе, либо в округе, но никогда в обоих сразу.

Глядя на диаграмму, которая у вас есть, таблица состояний - единственная из 4 внешних таблиц, которая действительно необходима.Таблицы подстановки, содержащие только идентификатор и одно значение, не стоят затраченных усилий.Эти связи предназначены для того, чтобы одно значение в основной таблице (ziptocities) ссылалось на набор связанных данных в справочной таблице (states).

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

Другой вопрос будет заключаться в том, насколько важно будет, чтобы адрес был точным?Сколько смертей произойдет, если важные письма не будут доставлены своевременно (возможно, много, если письмо касается отзыва отпускаемых по рецепту лекарств!)

Вероятно, вы хотите подумать об использовании данных почтовой службы, возможно, с использованием продукта, который корректирует адреса.Таким образом, когда вы получите хороший адрес, вы будете уверены, что почта может быть доставлена туда - потому что так сказала Почтовая служба!

Похоже, что есть недостатки как в вашем процессе, так и в вашей логике.

Я предлагаю вам на мгновение перестать думать о таблицах и взаимосвязях.Вместо этого подумайте о фактах.Составьте список допустимых адресов, которые должна поддерживать ваша база данных.Вас ждет много сюрпризов.

Не путайте адрес с почтовым ярлыком.Это совсем не одно и то же.Подумайте также о моделировании носителей.В США действительность адреса зависит от перевозчика.Например, мой почтовый ящик является действительным адресом, когда перевозчиком является USPS, но не когда перевозчиком является UPS.

Чтобы сэкономить время, вы можете попробовать просмотреть некоторые международные форматы адресов на битбуст.

Сработает ли ваша логика, если две страны будут иметь один и тот же почтовый индекс?В этом случае эти двое указывали бы на разные города.вот несколько моментов, которые следует учитывать

  1. Вы хотите использовать почтовый индекс как своего рода первичного ключа в адрес?(в арендуйте город, штат и страну поля).В этом случае у вас может быть почтовый индекс, город, штат, страна в одной таблице.Создайте индексы по городу, штату и т.д..(у вас есть функциональная зависимость от формы почтовый индекс-> страна, штат, город .Это как я уже сказал, может быть неверно для всех стран.
  2. Если автоматическое заполнение - это ваша единственная забота, создайте материализованный вид и используйте его.

Я бы рекомендовал прочитать "Шаблоны модели данных" Дэвида К.Сено.

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

Сан - Франциско - город в Калифорнии;это не город в Алабаме.Предотвращает ли ваш дизайн бессмысленные записи типа "Сан-Франциско, Эл"?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top