Как мой столбец адреса в таблице заказов может ссылаться на несколько типов форматов адресов?

#sql #sqlite #database-design

Вопрос:

Я делаю это в SQLite

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

Примеры форматов:

  1. США и аналогичный адрес — Название места, адрес улицы, номер квартиры, город, штат, страна, почтовый индекс
  2. Определенные места в Африке — Название места, страна, штат, район, ориентир, расстояние от отметки земли, направление от ориентира
  3. Существует множество других допустимых форматов адресов доставки.

Так что мои идеи таковы:

  1. Добавьте пустые столбцы в таблицу заказов, которые ссылаются на каждый формат адреса. Используйте флажок, чтобы подтвердить наличие хотя бы одного адреса.
  2. Есть отдельные таблицы, такие как order_us_address, order_africa_address
  3. Создайте таблицу с именем master_address_id, а затем ссылайтесь на нее в каждой таблице формата адресов, чтобы я мог просто ссылаться на этот master_address_id в таблице заказов

Какова здесь лучшая практика? Есть ли другой вариант?

Ответ №1:

Одна адресная таблица должна работать нормально. Я предполагаю, что вы хотите сохранить все отдельные поля адресов, поэтому просто добавьте их в свою таблицу. Для любой отдельной записи адреса многие из этих столбцов будут пустыми, но это не проблема.

Затем добавьте столбцы для строк почтового адреса (до максимального количества строк, которое может быть в почтовом адресе). Основываясь на логике, которую вы предположительно знаете о том, как создать почтовый адрес для каждой страны, заполните эти строки почтового адреса соответствующим образом.