Как разбить денормализованную таблицу (M: M) на модель данных (из той же таблицы)?

Я хотел бы задать вопрос о том, как моделировать данные из той же таблицы

Исходная таблица: клиент

Fields : cust_id , Firstname , LastName , Address No , Street , Province , PostalCode

СТАТЬ МОДЕЛЬЮ

ТАБЛИЦА : Клиент

Fields : cust_id , Firstname , LastName

ТАБЛИЦА : Дом

Fields : House_id, Address No , Street , Province , PostalCode

ТАБЛИЦА : CUST_HOUSE_RELATION

FIELD : CUST_ID,HOUSE_ID,RELATE_TYPE

ИНФОРМАЦИЯ

  • 1 клиент M домов (адрес) и 1 дом (адрес) M клиентов
  • Создайте CUST_HOUSE_RELATION, чтобы решить отношения M:M
  • Адрес таблицы отсутствует (разделяется)

Проблема

  • Я не могу определить HouseID, потому что в источнике нет адреса (в таблице Customer содержится информация о клиенте и информация об адресе (без ключа информации об адресе). Пожалуйста, предложите.

person SN Palita    schedule 19.05.2021    source источник
comment
Это разовая миграция данных? Вам нужно сгенерировать ключ. Вставьте запись о доме, зафиксируйте идентификатор и используйте его при вставке записи CUST_HOUSE_RELATION. Окончательная модель фактически не соответствует входным данным.   -  person Nick.McDermaid    schedule 19.05.2021
comment
Могу я спросить, если я сгенерирую идентификатор дома, как я могу соединить идентификаторы дома и cust_id? Я имею в виду, что не знаю, какие поля я могу использовать для соединения между HouseId и Cust Id.   -  person SN Palita    schedule 19.05.2021
comment
Это разовая миграция данных?   -  person Nick.McDermaid    schedule 19.05.2021


Ответы (1)


Вот один подход, но подходит ли он, зависит от того, что вы делаете.

  1. Добавить поле столбца cust_id в house
  2. Загрузите customer и house из исходной таблицы, заполнив house.cust_id.
  3. Я предполагаю, что house.house_id сгенерируется автоматически, но вы не предоставляете достаточно информации, чтобы сказать
  4. Загрузите cust_hous_relation из house (в нем есть оба ключа)
  5. Выбросить cust_id из house

Вы не предоставили достаточно информации, чтобы дать правильное решение.

person Nick.McDermaid    schedule 19.05.2021
comment
Извините за поздний ответ, я реализую хранилище данных (чтобы сохранить данные об отношениях и истории), готовлюсь к витрине данных. Я имею в виду, что данные будут загружаться в модель данных каждый день автоматически. - person SN Palita; 19.05.2021
comment
Загрузка хранилища данных обычно содержит промежуточный уровень. Здесь вы можете применить логику, которую я описал выше. - person Nick.McDermaid; 21.05.2021