Организация базы

lolshik

Новичок
Организация базы

Доброе всем время суток. Помогите организовать базу данных.
Цель: организовать базу данных в mysql для одного ученика (для оценок по всем предметам.) Нужно реализовать так, чтобы можно было посчитать в любой момент средную оценку по какому-либо предмету, и оценки за полугодия.

Я новичёк в этом деле. Умею добавлять базы, таблицы. Не могу понять как заставить считать среднее арифметическое. Сколько бы вы таблиц сделали под такую базу? И в чём хранить там символ? Кодировка.
Зарание спасибо.
 

lolshik

Новичок
Вообщем делаю так. База. Там таблица marks (оценки)
Там создаю id (auto_increment) правда не знаю зачем создаю этот столбец, мож пригодится для сортировки.
Далее солбецы subjects, marks, marks_first (1ое полугодие) marks_second (2ое
В ячейках как я понял можно хранить или строки (стринг) или цифры. Как мне в столбец marks каждый день добавлять оценку? Ведь туда к примеру помещу 1ую 4ку, далее берём 3ку (отметка), и куда её? как бужет выглядеть запись в этой ячейки? 4+3 или 4,3? И как потом посчитать среднеарифметическое?
 

lolshik

Новичок
Автор оригинала: Фанат
добавлять надо не в ячейку, а новую строку
Я это и имел в виду (описался). А как организовать среднеорифметическое число? и в каком формате хранить оценки
 

Фанат

oncle terrible
Команда форума
Ведь туда к примеру помещу 1ую 4ку, далее берём 3ку (отметка), и куда её? как бужет выглядеть запись в этой ячейки? 4+3 или 4,3?
хехе. описался, говоришь? =)

оценки хранить в формате оценок.
для получения среднего арифметического есть функция avg()

только делается такая таблица не для одного ученика, а для всей школы.
 

lolshik

Новичок
Может кто нить премерно (маленькую заготовку) сюда бросить.
Типа
CREATE TABLE marks (
id ....
subject..

и т.п. Зарание спасибо, а то в досовском окне тяжело представить как будет это всё выглядить (mysql.exe)
 

Фанат

oncle terrible
Команда форума
а ты не представляй в досовском окне.
ты представляй в текстовом редакторе.

сначала, наверное, надо придумать структуру базы, а потом уже писать запрос.

ты структуру базы уже придумал?

-~{}~ 09.05.07 13:00:

похоже, ты пока не понял основного принципа базы данных.
весь анализ данных производится при выборке.
 

lolshik

Новичок
Автор оригинала: Фанат
похоже, ты пока не понял основного принципа базы данных.
весь анализ данных производится при выборке.
вот это дельный совет. начинаю немного понимать. А в какой кодировке хранить?

mysql Ver 14.7 Distrib 4.1.14, for Win32 (ia32)
Connection id: 2
Current database:
Current user: admin@localhost
SSL: Not in use
Using delimiter: ;
Server version: 4.1.14-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306
Uptime: 5 hours 10 min 14 sec

Я так понимаю в данный момент она хранится в латинице?
 

Фанат

oncle terrible
Команда форума
ты спрашиваешь, в какой кодировке тебе хранить ОЦЕНКИ? =)

-~{}~ 09.05.07 13:08:

Храни в той, какая тебе больше нравится.
если речь о таблицах с учениками/названиями предметов
 

lolshik

Новичок
Понимаю что вопрос в какой кодировке хранить цифры смешной. В любой. А вот если у меня к примеру фамилия на русском? Тогда как? И так чтоб у мну потом не возникло проблем, при работе с базой посредствам пхп. А то читал, что частые траблы - через консольку всё норм отображается, а через пхп вывод - ????
 

Фанат

oncle terrible
Команда форума
ну почитай дальше, как это исправить.
раздел "Вопрос-ответ"

-~{}~ 09.05.07 13:16:

хотя по-моему, не закончив со структурой базы, рано заниматься кодировками.
 

lolshik

Новичок
Автор оригинала: Фанат

хотя по-моему, не закончив со структурой базы, рано заниматься кодировками.
вы правы. Но я так и не разобрался как у меня будут хранится оценки. В одной строке все оценки, или через ;
=((
 

lolshik

Новичок
а как по другому? Если оценок к примеру 100 штук, то будет долго её парсить, так как она распухнет сильно =( или не так?
 

Фанат

oncle terrible
Команда форума
lolshik
добавлять надо не в ячейку, а новую строку
ты, похоже, просто не понял, что я сказал.
каждая оценка хранится в своей строке.

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

если ты, конечно, понимаешь, о чем я говорю

-~{}~ 09.05.07 13:38:

Если оценок к примеру 100 штук, то будет долго её парсить, так как она распухнет сильно
не переживай за базу данных.
лучше попереживай за себя.

-~{}~ 09.05.07 14:03:

У тебя три таблицы.
первая - с учениками.
вторая - с предметами.
третья - с оценками.

таблица оценок примерно содержит колонки:
ид предмета
ид ученика
дата
оценка

оценки за полугодия и четверти выбираются запросом.
средняя выбирается запросом.

для итоговых оценок делается отдельная таблица. наверное
или в этой же добавляется поле - признак оценки.
 

lolshik

Новичок
Спасибо большое. Сейчас буду разбираться =) Если всё будет ок, выложу дамп. Может кому из новичков понадобится.
 

Фанат

oncle terrible
Команда форума
Нет. Никому из новичков не понадобится.
Но дамп выложи - тебе укажут на ошибки.
 

lolshik

Новичок
Запустался. Что делать дальше? ((
дамп прилагается

CREATE TABLE `marks` (
`id_subject` char(20) NOT NULL default '',
`id_pupil` char(20) NOT NULL default '',
`mark` char(5) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `pupils` (
`id_pupil` int(11) NOT NULL auto_increment,
`fio` char(30) NOT NULL default '',
PRIMARY KEY (`id_pupil`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `subject` (
`id_subject` int(11) NOT NULL auto_increment,
`name` char(20) default NULL,
PRIMARY KEY (`id_subject`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 

AP

Новичок
почему у тебя в таблице marks id_subject и id_pupil типа char ?

в той же таблице поле mark - тут и Int подойдёт!
 
Сверху