Во-первых, какой ключ в таблице ImportA? если вам нужна нормализованная модель, вы должны установить sh ключ в денормализованной таблице, потому что это единственный способ сделать связанную модель позже, если нет, как вы связываете квартиру с другими таблицами? Вам нужно будет экспортировать ключи из ImportA в цену таблицы и место в таблице.
Наиболее вероятные поля, которые можно использовать в качестве ключа для таблицы ImportA с примером, который вы здесь видите, будут (apartment_url, apartment_name) Хотя в воздухе много вопросов, но нет факта, что (apartment_url, apartment_name) не будет повторяться вдоль таблицы, мы хотим, чтобы нормализованная модель была в третьей нормальной форме, по крайней мере, и мы должны дать последовательный идентификатор для таблицы квартиры. мы могли бы сделать следующее:
Сначала мы создадим таблицу цен с ее ключом, нам нужно будет экспортировать этот ключ в таблицу квартир в качестве основного ключа позже
CREATE TABLE price AS SELECT ROW_NUMBER() OVER(ORDER BY monthly_price, weekly_price) AS id,monthly_price, weekly_price
FROM ImportA
GROUP BY monthly_price, weekly_price;
ожидаемый результат
SELECT * FROM price;
+-----------+----------------------+---------------------+--+
| price.id | price.monthly_price | price.weekly_price |
+-----------+----------------------+---------------------+--+
| 1 | 7 | 3 |
| 2 | 10 | 5 |
+-----------+----------------------+---------------------+--+
Во-вторых, когда мы создадим таблицу мест с ее ключом, мы должны будем экспортировать этот ключ в таблицу апартментов в качестве первичного ключа позже
CREATE TABLE place AS SELECT ROW_NUMBER() OVER(ORDER BY street, country) AS id, street, country
FROM ImportA
GROUP BY street, country;
ожидаемый результат
SELECT * FROM place;
+-----------+---------------+----------------+--+
| place.id | place.street | place.country |
+-----------+---------------+----------------+--+
| 1 | a | b |
| 2 | c | d |
| 3 | x | y |
+-----------+---------------+----------------+--+
Теперь мы готовы экспортировать ключи из таблицы цен и размещения в таблицу квартир
CREATE TABLE apartment AS
WITH ap AS(
SELECT ROW_NUMBER() OVER(ORDER BY apartment_url) AS id,
a.apartment_url AS au,a.apartment_name AS an, a.monthly_price AS mp,
a.weekly_price AS wp,street,country, p.id AS id_price
FROM ImportA AS a
JOIN price AS p ON(a.monthly_price = p.monthly_price AND a.weekly_price = p.weekly_price))
SELECT ap.id AS id,au AS apartment_url, an AS apartment_name,mp as monthly_price, wp AS weekly_price, p.street, p.country,id_price, p.id AS id_place
FROM ap
JOIN place AS p ON(ap.street = p.street AND ap.country = p.country);
ожидаемый результат
SELECT * FROM apartment;
+---------------+--------------------------+---------------------------+--------------------------+-------------------------+-------------------+--------------------+---------------------+---------------------+--+
| apartment.id | apartment.apartment_url | apartment.apartment_name | apartment.monthly_price | apartment.weekly_price | apartment.street | apartment.country | apartment.id_price | apartment.id_place |
+---------------+--------------------------+---------------------------+--------------------------+-------------------------+-------------------+--------------------+---------------------+---------------------+--+
| 1 | url1 | name1 | 10 | 5 | a | b | 2 | 1 |
| 2 | url2 | name2 | 10 | 5 | c | d | 2 | 2 |
| 3 | url3 | name3 | 10 | 5 | a | b | 2 | 1 |
| 4 | url4 | name4 | 7 | 3 | x | y | 1 | 3 |
+---------------+--------------------------+---------------------------+--------------------------+-------------------------+-------------------+--------------------+---------------------+---------------------+--+
Надеюсь, это даст вам некоторые идеи, с уважением .