Каков наилучший способ ввода данных в небольшую базу данных при сопоставлении таблиц?

У меня есть небольшая проблема, и я считаю, что у вас все умные люди уже есть простое решение. Я еще этого еще не осознал.

Я дизайнер для проекта, и в рамках этой работы я полагаюсь на базу данных PostgreSQL, чтобы у меня была одна версия правды. Я настраивал свои таблицы, используя обычные методы, такие как использование ПК (последовательный) для каждой таблицы. Когда я свяжу две таблицы вместе, я буду использовать внешний ключ. Это помогает мне в здравом рассудке проверять дизайн и делать отчеты об этом.

Возьмем, например, следующие три таблицы с одним полем:

student_id : student_name
1 : j bloggs
class_id : class_name
1 : physics
student_class_assoc : student_id : class_id
1 : 1 : 1

Я могу вводить данные с помощью PGAdmin для студентов и классов без проблем, но когда дело доходит до того, чтобы связать ученика и класс вместе, я должен пойти в каждую таблицу и найти идентификатор. В этом случае это тривиально, однако, когда у меня около 70 или 80 записей, это становится хлопотным. В идеале я хотел бы иметь возможность вводить данные путем поиска через имя_имя_имя_и_и_и_и_и_и_и_и_и_и поля, а затем ввода идентификатора.

Я подумал об использовании простой формы PHP для этого, но я подумал, что сначала попрошу всех остальных увидеть, есть ли лучшие решения.

С наилучшими пожеланиями,

Адам

1 ответ

Предполагая, что student_class_assoc является серийным

insert into student_class_assoc (student_id, class_id)
select student_id, class_id
from (values ('j bloggs', 'physics'), ('m mary', 'math') ) a (student_name, class_name) inner join student using (student_name) inner join class using (class_name)

Но есть проблема общих имен. Если есть два m mary они будут оба в math классе.

licensed under cc by-sa 3.0 with attribution.