powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Связывание уже созданных таблиц БД
2 сообщений из 2, страница 1 из 1
Связывание уже созданных таблиц БД
    #39521404
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Нужна помощь!
Есть 2 уже созданные таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE Region 
(
indexses INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
Region_of_the_World ENUM ('Северная Америка','Южная Америка','Центральная америка',
                                     'Европа','Азия','Австралия','Африка'), 
Opisanie VARCHAR(1000)
);
 
CREATE TABLE Climate
(
indexses INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
Region_of_the_World ENUM ('Северная Америка','Южная Америка','Центральная америка',
                                       'Европа','Азия','Австралия','Африка'), 
Country VARCHAR(30), 
Locality VARCHAR(30), 
Years TIMESTAMP, 
Months ENUM('Январь','Февраль','Март','Апрель','Май','Июнь',
                   'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'), 
Days INT,  
Temperature INT, 
Vlagnoste INT, 
Direction_of_the_wind VARCHAR(5), 
Speed_of_wind INT
);



Теперь понадобилось что бы у таблицы Climate поле Region_of_the_World ENUM подтягивалось и было связано с одноименным полем таблицы Region. В таблице Region будут храниться только наименования и описание регионов, а в таблице Climate страны этих регионов и информация по ним.

Если я правильно понял, то связь должна быть один ко многим из таблицы Region в табл Climate. Но вот выстроить данную связь у меня не получается.
Для начала я попытался модифицировать существующее поле Region_of_the_World ENUM в таблице Climate чтобы оно стало внешним ключом, но не получилось. Далее я вообще решил попробовать удалить нужный столбец, а затем добавить его снова с нужными параметрами:
Код: sql
1.
2.
3.
ALTER TABLE climate DROP Region_of_the_World;
ALTER TABLE climate ADD (CONSTRAINT 'regon-climate' FOREIGN KEY Climate ('Region_of_the_World') 
REFERENCES 'Region' ('Region_of_the_World'));



Не получилось. Заново создавать табл нельзя, по условию лабораторной. Для наглядности прикрепляю схему.

Объясните пожалуйста как модифицировать уже существующее поле в таблицы, чтобы оно стало внешнем ключом.
...
Рейтинг: 0 / 0
Связывание уже созданных таблиц БД
    #39521486
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirТеперь понадобилось что бы у таблицы Climate поле Region_of_the_World ENUM подтягивалось и было связано с одноименным полем таблицы Region. В таблице Region будут храниться только наименования и описание регионов, а в таблице Climate страны этих регионов и информация по ним.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
-- Добавить поле для связи
ALTER TABLE Climate 
  ADD COLUMN ID_Region INT NOT NULL DEFAULT 0;

-- Заполнить поле связи
UPDATE Climate, Region 
  SET Climate.ID_Region = Region.indexses 
  WHERE Climate.Region_of_the_World = Region.Region_of_the_World;

-- Проверка, что нет несвязанных записей
SELECT Climate.*
  FROM Climate
  WHERE ID_Region = 0;
-- Если обнаружены несвязанные записи - исправить.

-- Добавить внешнюю связь
ALTER TABLE Climate 
  ADD CONSTRAINT region-climate 
  FOREIGN KEY (ID_Region) 
  REFERENCES Region (indexses));

-- Удалить ненужное поле
ALTER TABLE Climate 
  DROP COLUMN Region_of_the_World;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Связывание уже созданных таблиц БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]