Я только начал применять все, что я читал о связях с таблицами, но я немного смущен тем, как вставлять данные в таблицы с отношениями MANY-TO-MANY
, учитывая, что есть третья таблица.Внешний ключ или композитный ключ?
Прямо сейчас у меня есть эти столы.
Заголовок
name
code PK
units
description
учебный год
schoolyearId PK
yearStart
yearEnd
schoolyearsubjects (многие ко многим таблице)
id PK
code FK
schoolyearId FK
Но проблема с вышеупомянутой таблицей schoolyearsubjects заключается в том, что я не знаю, как я могу вставить schoolyearId
из графического интерфейса. На скриншоте GUI, как только «Сохранить» кнопка нажата, TRANSACTION
содержащий INSERT
заявления (для вставки на subject
) и (для вставки на schoolyearsubjects
) будет выполняться. Если я придерживаюсь вышеуказанного, мне придется вставить учебное пособие. schoolyearId
определенно не будет отображаться в графическом интерфейсе.
Я имею в виду изменения столбцов schoolyearsubjects
и schoolyear
к этому:
учебный год
--composite keys (yearStart, yearEnd)
yearStart (PK)
yearEnd (PK)
schoolyearsubjects (многие ко многим таблицы)
id PK
code (FK)
yearStart (FK) --is this possible?
yearEnd (FK) --is this possible?
1.) Является ли решение для изменения столбцов и создания составного ключа, поэтому я могу просто вставить значения yearStart
и yearEnd
вместо schoolyearId
?
2.) Является ли мой соединительный/соединительный стол школьным языком правильным?
3.) Что вы можете посоветовать?
Буду признателен за любую помощь.
Спасибо.
Мне кажется, что база данных не проблема (вы можете либо работать с техническими идентификаторами, либо с помощью естественных составных клавиш, оба из них прекрасны). Это графический интерфейс. Что вы хотите сделать? Добавить новую тему? Добавить новый учебный год? Связать предмет с учебным годом? Кажется, вы смешиваете эти вещи, которые должны быть отдельными действиями. –
Спасибо за замечание. Я хотел бы связать учебный год с предметами. Но объединение предметов должно происходить при создании темы. Любое предложение? – p3ace
Я не совсем понимаю проблему. Вы говорите об этом графическом интерфейсе, как если бы он был каким-то образом создан и не написан вами. Это так? Для чего еще вы не можете просто позволить пользователю выбрать учебный год из списка (список или combobox со строками «2015/2016», «2016/2017» и т. Д.), Попросите их ввести тему, начать транзакцию , создать и выполнить оператор, чтобы сохранить тему, создать и выполнить инструкцию для сохранения школьных объектов и совершить? –