Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как внести новые данные в бд

Алексей Лебедев Ученик (143), на голосовании 1 год назад
Представим что есть таблица Человек и курсы которые он прошёл
Например
Петя - Маникюрный курс
Так вот, как сделать так чтобы у пети например было несколько курсов, как это реализовать?
И в течение какого-то времени петя будет проходить новые курсы и в конце концов у него будет курсов 3-7.
Как это сделать по всем правилам?
Голосование за лучший ответ
_ Искусственный Интеллект (833754) 1 год назад
Можешь в одной ячейке через перенос строки написать все курсы.
Павел МихаловскийПросветленный (36126) 1 год назад
Так можно, но так не совсем правильно. Согласно теории плохо, когда несколько данных в одном поле.
А если какой-то курс придется удалить? Или изменить данные? Это будет сложновато.
_ Искусственный Интеллект (833754) Павел Михаловский, Ну тогда это делать в разных столбцах надо. По другому никак.
Айрат Шигапов Просветленный (38297) 1 год назад
Таблицы Петь и таблица курсов.
И таблица их сведЕний. Типа, флажок на пересечении чувака и курса. Данные вносить туда, логические или числовые или текстовые. Числовыми можно отразить степень завершённости курса. Ноль будет значить, что курс и не начинался у данного перса.
АлександрИскусственный Интеллект (301571) 1 год назад
да. но маловато вы насоветовали... всего две таблицы... ужас... тихий ужас...
Айрат Шигапов Просветленный (38297) Александр, маловато вы умеете считать ... ужас... тихий ужас... Такой высокоранговый - и с таким тупым комментом ... ужас... тихий ужас...
Павел Михаловский Просветленный (36126) 1 год назад
Вообще правильно сделать 3 таблицы.
Таблица людей
Таблица курсов
Таблица связей люди курсы

Например таблица людей
*ID (номер записи)
*Фамилия
*Имя
*Отчество

Таблица курсов
*ID (номер записи)
*Название курса
*Дата начала
*Дата конца

Таблица связи
*ID человека
*ID курса

В таблицу связи можно еще данные добавить о том, как человек курс проходил. Балл за курс.
Саня Семенов Оракул (60497) 1 год назад
Для реализации отношения "человек прошел несколько курсов" нужно создать две таблицы - "Человек" и "Курсы".
Таблица "Человек" будет содержать информацию о каждом человеке (id, имя, возраст и т.д.).
Таблица "Курсы" будет содержать информацию о каждом курсе (id, название, описание и т.д.).

Для отношения "человек прошел несколько курсов" можно создать третью таблицу "Сертификаты" или "Успешное прохождение курсов". Данная таблица будет содержать информацию о каждом сертификате или успешном прохождении курса (id, id_человека, id_курса, дата получения и т.д.).

Теперь, когда у Пети может быть несколько курсов, мы можем добавить несколько строк с его id в таблицу "Сертификаты", отражая каждый новый курс и дату получения сертификата.

Пример структуры таблиц:

Таблица "Человек":
  • id (уникальный идентификатор)
  • имя
  • возраст
...

Таблица "Курсы":
  • id (уникальный идентификатор)
  • название
  • описание
...

Таблица "Сертификаты":
  • id (уникальный идентификатор)
  • id_человека (ссылка на таблицу "Человек")
  • id_курса (ссылка на таблицу "Курсы")
  • дата получения
...

Пример SQL-запроса для добавления информации о прохождении курса:
 INSERT INTO Сертификаты (id_человека, id_курса, дата_получения)   

VALUES (1, 1, '2020-01-01');
В данном примере мы добавляем информацию о том, что человек с id = 1 прошел курс с id = 1 и получил сертификат на дату '2020-01-01'.
АлександрИскусственный Интеллект (301571) 1 год назад
ии ничего не сжевало?
Саня Семенов Оракул (60497) Александр, три точки означают тол что в таблице могут быть и другие поля
Jurijus Zaksas Искусственный Интеллект (445767) 1 год назад
Внести Петин ID и ID курса, который он прошел, в таблицу, связывающую петь с курсами. Еще в такой таблице, как правило, содержатся какие-то дополнительные данные, например - дата получения сертификата курса. Если один и тот же курс нельзя проходить более одного раза, имеет смысл сделать первичный ключ на оба ID.
Александр Искусственный Интеллект (301571) 1 год назад
хранить записи о "петях" в одной таблице, а записи об возможных "классах" -- в другой... и записи о том кто чё брал в третьей таблице... и всё связано...

попробуй размышлять так...
ты говоришь о "петях" -- это одна таблица
и ты говоришь о курсах -- это друга я таблица
ни одна из этих таблиц не обязана хранить информацию о другой таблице...
и поэтому есть третья таблица... очень простенькая... связывающая погоняло "пети" с каждым отдельно взятым им курсом... можно даже с петиной оценкой...

в этом кроется много хорошестей... это не просто исключение повторяющихся данных...
доставая данные из таблицы про "петей" ты не трындишь о его личных делах...
доставая данные из таблицы про курсы, ты не суёшь своё рыло в личные дела "петей"...
вникаешь?

короче, если всё это тебе жизненно важно, то бросай курить и начинай учиться...

если кто спросил зачем такое разделение, скажи что это "нормализация"... пусть хоть на минуту подумают о тебе лучше, чем обычно.
Похожие вопросы