powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
5 сообщений из 5, страница 1 из 1
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
    #40099959
Странница
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Столкнулась с проблемой при работе с SQL:
необходимо создать базу данных, которая структурно будет состоять из пяти таблиц. В этой базе данных Таблица 1 должна быть связана с Таблицей 2 и Таблицей 3 по разным полям, то есть в Таблице 1 два поля должны быть ключами, а primary key бывает только один. Подскажите, пожалуйста, как решить данную задачу?

Подробнее о структуре: Таблица 1 состоит из 5 столбцов. Стобец 2 Таблицы 1 должен быть связан с Таблицей 2, а Столбец 3 Таблицы 1 — с Таблицей 3. Можно ли создать такую связь? Мне говорят, что можно, но на практике пока не получается( Натолкните, пожалуйста, на зацепки

Пробовала действовать таким образом (пишу условно):
create table tabl1(st1 int, st2 int, st3 int, st4 decimal, st5 date, primary key (st2, st3));

затем создаю Таблицу 2:
create table tabl2(id, st2_id, primary key(st2_id), foreign key (id) references tabl1 (st2));

и тут получаю ошибку типа (очень похожая ошибка):
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ', st2
_id, primary key(st2_id), foreign key (id) references tabl1 (st2))' at line 1

В гугле по тексту ошибки, к сожалению, не удалось найти ответов.

Выходит, если primary key задается для двух столбцов сразу, тогда в Таблице 2, связанной с Таблицей 1, необходимо воспроизвести связь по двум столбцам, или все же есть другое решение?

Чтение мануала mysql тж не помогло((

Прошу помощи, буду благодарна любым зацепкам
...
Рейтинг: 0 / 0
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
    #40099962
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странница
и тут получаю ошибку типа (очень похожая ошибка)

Так вы не похожую ошибку и не условный запрос читайте, а свою конкретную ошибку, затем в своём конкретном запросе найдите место, с которого начинается ошибка парсера и внимательно подумайте над куском непосредственно перед ошибкой.
...
Рейтинг: 0 / 0
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
    #40099972
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странница
В этой базе данных Таблица 1 должна быть связана с Таблицей 2 и Таблицей 3 по разным полям, то есть в Таблице 1 два поля должны быть ключами, а primary key бывает только один.
А при чем тут primary key?
За связь отвечает foreign key, а их может быть несколько.
...
Рейтинг: 0 / 0
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
    #40100150
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странница, если я правильно понял проблему:

t2 и t3 ссылаются на таблицу t1, у каждой таблицы - свой foreign key.
t1 содержит отдельный уникальный ключ для каждой из таблиц t2, t3.
Немного многословно, но сделано для иллюстрации идеи:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table t1
( pk1_id int
, uk2_id int
, uk3_id int
, primary key(pk1_id)
, unique( uk2_id)
, unique( uk3_id));

create table t2
( pk2_id int
, fk2_1_id int
, primary key( pk2_id)
, foreign key( fk2_1_id) references t1( uk2_id)
);

create table t3
( pk3_id int
, fk3_1_id int
, primary key( pk3_id)
, foreign key( fk3_1_id) references t1( uk3_id)
);



Код: sql
1.
2.
3.
insert into t1 values( 1, 10, 100), (2, 20, 200);
insert into t2 values( 1, 10), (2, 10), (3, 20), (4, 20);
insert into t3 values( 1, 100), (2, 200), (3, 200);
...
Рейтинг: 0 / 0
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
    #40100183
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странница
Таблица 1 должна быть связана с Таблицей 2 и Таблицей 3 по разным полям, то есть в Таблице 1 два поля должны быть ключами, а primary key бывает только один.
Не путайте тёплое с мягким. С зелёным тоже не путайте.

Если таблицы 2 и 3 должны ссылаться на значения таблицы 1, то в таблице 1 должны существовать уникальные индексы по выражениям для ссылки. Именно уникальные - необязательно первичные. А их в таблице может быть... на сколько фантазии хватит.

Если наоборот, таблица 1 должна разными отдельными полями ссылаться на таблицы 2 и 3, то это внешние ключи, а не первичные, и на их количество вообще нет никаких ограничений.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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