Мне тут дали такое задание, в счет сдачи одного экзамена мне надо создать и внедрить т/н электронный журнал, то есть учителя должны ставить оценки, все это дело должно обрабатывать в бд и выводиться ученикам. Тот электронный журнал который есть очень далек от совершенства, много недоработок, глючит, нельзя редактировать оценки онлайн и тд Пока я очень плохо представляю как мне связать учеников с оценками, учителей с классами и предметами. Даже больше скажу - нет никаких идей. Есть бд от предыдущего журнала, но нет исходных кодов, то есть подглядывать некуда. А своих знаний не хватает. Если кто с доброй душой подкинет пару идеек как это все дело реализовать или кинет ссылки на фак с нужными темами буду премного благодарен...
таблица учителей. таблица учеников. таблица оценок. пока хватит. поля сам сообразишь. форма учителя. форма ученика (просмотр). можно листалки.
Э... А что такое листалки? Таблицы то я примерно представляю, я не понимаю как это связать, т.е как сделать чтобы пете иванову при запросе оценок по англ языку показывались оценки англ языка, а не алгебры...
Вот у меня 11 классов и в них несколько подгрупп, допустим, я буду именовать классы так, 1а - 1, 1б - 2 и тд, а оценки тогда как? В поле где я прописываю ученика добавить 11 полей(предметы) и в них это все прописывать?? А как тогда привязать класс к каким либо ученикам, если использовать ту же систему названий( иванов - 1, петров - 2)? Что-то я совсем запутался, даже мысли сформулировать правильно не могу... Начну заного, Есть поля: Ученики Оценки Учителя Классы Как мне их объеденять, как присваивать учителям те классы, которые нужны, а классам соответственно тех учеников? Вот что я понять никак не могу =(
MaRvel, с таким уровнем знаний Ваш электронный журнал будет глючить так же как старый или даже похлеще. Вообще ИМХО нормальная "CRM" для школы это экзамен разве что на Senior'a в starsoftlabs. Я бы лично не рискнул браться в одиночку, разве что с оооооооооооооочень долгими сроками. Здесь связь один к многим, это ученика нужно к классу привязывать, а не наоборот) ИМХО(первое что пришло в голову, так что такая схема не оптимальна, просто пример): Таблица учеников В которой есть как минимум: id INT NOT NULL AUTO_INCRIMENT- уникальный(неповторяющийся) номер ученика. fid - номер класса под которым у нас храниться запись класса в таблице классов. name VARCHAR(50)- имя family VARCHAR(50) - фамилия Таблица классов как минимум это: id INT NOT NULL AUTO_INCEMENT- уникальный номер класса number INT NOT NULL DEFAULT 1 - номер класса (1, 2, 3) и т.д. type ENUM ('a', 'b', 'c', 'd') NOT NULL DEFAULT 'a' - ну типа буква класса form_master INT NOT NULL - номер учителя являющегося классным руководителем данного класса type ENUM ('6-start', '7-start') - со скольки лет в данный класс поступают year_begin INT NOT NULL - год начала обучения year_eng INT NOT NULL - год выпуска Таблица учителей min: id INT NOT NULL AUTO_INCEMENT- уникальный номер учителя name VARCHAR(50) family VARCHAR(50) Таблица оценок min: id INT NOT NULL AUTO_INCEMENT - уникальный номер оценки value INT NOT NULL ну собственно оценка (1-5). fid INT NOT NULL - номер учителя который ее поставил сid INT NOT NULL - номер курса за который она выставлена type ENUM ('homework', 'written_test', ...) - тип (домашняя работа, вызов на уроке, контрольная и т.д.) date_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP - дата когда выставили Таблица курсов(под курсом подразумевается предмет, читаемый такому то классу (математика 1-й класс, математика 5-й класс и т.д.) min id INT NOT NULL AUTO_INCEMENT - уникальный номер курса number INT NOT NULL DEFAULT 1 - номер класса subject ENUM ('math', 'russian'....) - предмет (математика русский и т.д.) Но в такой схеме ИМХО учителям будет неудобно работать. Насколько я помню(давно в школе уже не был) в обычном журнале учителя пишут, например, Контрольная тогда-то, Сочинение такое-то и выставляют стобик оценок. Поэтому не помешала бы какая-то табличка, где для курса можно будет прописать на месяц распорядок проверок, и к нему уже привязать оценки. Но тут нужно уже нужно побольше подумать, как удобнее реализовать, а думать в обеденный перерыв лениво.
Да никто и не спорит, что у меня нулевой уровень, просто времени дали до мая почти, так что я подумал, что успею... В целом механизм понял, всем спасибо за помощь =)
мне больше интересно как связать таблицы ученик/оценка/предмет (( Оценки выставляет кл. руководитель ну или кто там имеет доступ, но за все сразу, а не только по одному предмету... Вот такую структуру сделал [sql]-- -- Структура таблицы `predmet` -- CREATE TABLE `predmet` ( `id` int(5) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `teacher` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ; -- -- Дамп данных таблицы `predmet` -- -- -------------------------------------------------------- -- -- Структура таблицы `pupil` -- CREATE TABLE `pupil` ( `id` int(255) NOT NULL auto_increment, `surname` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, `patronymic` varchar(50) NOT NULL, `sex` int(1) NOT NULL, `class` varchar(3) NOT NULL, `mama` varchar(255) NOT NULL, `papa` varchar(255) NOT NULL, `contact` varchar(255) NOT NULL, `password` varchar(32) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ; -- -- Дамп данных таблицы `pupil` -- -- -------------------------------------------------------- -- -- Структура таблицы `teacher` -- CREATE TABLE `teacher` ( `id` int(5) NOT NULL auto_increment, `surname` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, `patronymic` varchar(50) NOT NULL, `predmet` varchar(50) NOT NULL, `class` varchar(3) NOT NULL, `contact` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ; -- -- Дамп данных таблицы `teacher` -- -- -------------------------------------------------------- -- -- Структура таблицы `сlass` -- CREATE TABLE `сlass` ( `id` int(5) NOT NULL auto_increment, `year_old` mediumint(4) NOT NULL, `class` varchar(3) NOT NULL, `class_mama` int(3) NOT NULL, `year_new` int(4) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ; -- -- Дамп данных таблицы `сlass` -- [/sql] И еще... привязка предмета к классу.. ведь один и тот же предмет в разных классах )) И один и тот же предмет могу вести разные преподы в разных классах При этом ни один параметр заранее не известен ни кол-во предметов в классе, ни сколько преподов его ведет...
Добавь поле 'subject_id' . Один учитель часто ведет два разных предмета. [Алгебра и геометрия] или [язык и литература], например.
Мое видение реализации проекта. Первая таблица Таблицы: users, содержит в себе уникальный id имя,фамилию,пароль,тип(учитель или ученик) и т.д. subjects предметы преподаваемые, из полей уникальный - id, name - название предмета, user_id (id из таблицы users) остановлюсь чуть поподробней.Допустим у тебя всего один предмет, алгебра, запись о ней будет выглядеть примерно так (id ,name, user_id) 1,алгебра, 5 Первые два поля все понятно,а вот третье поле это id пользователя из таблицы users.если ты выполнишь запрос SELECT * FROM `users` WHERE id='5'.то ты получишь запись о пользователе который ведет данный предмет. двигаемся дальше. classes, содержит в себе информацию о классах, id и name -название класса. pupils, вот тут наверно самое сложно,если поймешь тут то дальше сам додумаешь лучше меня.Данная таблицы задаст связь между users и classes, состоять таблица будет из полей user_id - номер пользователя в таблице users, class_id-номер класса в котором учиться ученик. marks таблица оценок, теперь все становитсья проще, нужные поля кому поставили оценку, какой предмет, кто поставил, ну и дата оценки.тоесть примерно так mark, pupil_id, subject_id, teacher_id.Тут небольшая непонятка с teacher_id что это,таблицы teachers у нас же нету.teacher_id это номер пользователя в таблице users.По идее это поле совсем не надо, так как у нас есть subject_id который точно даст знать кто из преподователей ведет этот предмет,но я всеже это поле оставил бы, есть завуч который может поставить оценку за другово учителя,поэтому и предлагаю хранить еще данные о том кто именно поставил эту оценку(занес запись о ней в базу). Прошу обратить это сугубо мое мнение.Может что то из сказанного пригодиться. PS:не ругайте за плохое обьяснение