|
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
|
|||
---|---|---|---|
#18+
Добрый день! Столкнулась с проблемой при работе с 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 тж не помогло(( Прошу помощи, буду благодарна любым зацепкам ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:29 |
|
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
|
|||
---|---|---|---|
#18+
Странница и тут получаю ошибку типа (очень похожая ошибка) Так вы не похожую ошибку и не условный запрос читайте, а свою конкретную ошибку, затем в своём конкретном запросе найдите место, с которого начинается ошибка парсера и внимательно подумайте над куском непосредственно перед ошибкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:35 |
|
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
|
|||
---|---|---|---|
#18+
Странница В этой базе данных Таблица 1 должна быть связана с Таблицей 2 и Таблицей 3 по разным полям, то есть в Таблице 1 два поля должны быть ключами, а primary key бывает только один. За связь отвечает foreign key, а их может быть несколько. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 22:10 |
|
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
|
|||
---|---|---|---|
#18+
Странница, если я правильно понял проблему: 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.
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 10:56 |
|
Нужен первичный ключ из одной таблицы к двум другим (прямо не связанным между собой)
|
|||
---|---|---|---|
#18+
Странница Таблица 1 должна быть связана с Таблицей 2 и Таблицей 3 по разным полям, то есть в Таблице 1 два поля должны быть ключами, а primary key бывает только один. Если таблицы 2 и 3 должны ссылаться на значения таблицы 1, то в таблице 1 должны существовать уникальные индексы по выражениям для ссылки. Именно уникальные - необязательно первичные. А их в таблице может быть... на сколько фантазии хватит. Если наоборот, таблица 1 должна разными отдельными полями ссылаться на таблицы 2 и 3, то это внешние ключи, а не первичные, и на их количество вообще нет никаких ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 13:10 |
|
|
start [/forum/topic.php?fid=47&fpage=5&tid=1827939]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 379ms |
0 / 0 |