хранить необязательные (нулевые) и обязательные (не нулевые) данные в одной и той же таблице или в отдельных таблицах? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть два набора входных данных в форме поставки продукта -

  1. информация о получателе ( требуется ) - (country, state, city, zipcode, street, contact_no)
  2. alternate_recipient_information ( Необязательно ) - (country, state, city, zipcode, street, recipient name, contact_no)

Мне нужна эффективная и гибкая схема базы данных, и вот то, что я думал, может работать для меня:

user id, name, email

country id, country, iso_code

state id, state, country_id

city id, city, state_id

address_type id, type 1 required 2 optional

address id, street(null), city_id(null), state_id(null), country_id(null), type_id

recipient id, user_id, address_id, contact_no

alternate_recipient id, name, address_id, contact_no

delivery_info id, recipient_id, alt_recipient_id(null)

ИЛИ мне просто использовать две отдельные таблицы для обязательных и необязательных наборов данных, или мне подходит go? Есть ли лучшие решения?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

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

0 голосов
/ 10 февраля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...