Forum Webscript.Ru

Общие => Базы данных => Тема начата: anlgizer от 25 Августа 2002, 15:14:48

Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 15:14:48
Здравствуйте, уважаемые посетители форума!

Буду очень Вам благодарен за помощь в решении следующей проблемы:

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

Существуют 3 кат. пользователей - ученик, учитель, администратор.

Доступные функции разгарничиваются соответственно категории пользователя (выставление, редактирование оценки, отправка сообщений, регистрация новых пользователей и т.д.)

В базе данных должны присутствовать массивы пользователей, массив оценок, сообщений.

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

Жду ваших предложений по наиболее удобной и логичной организации данных.


Используются следующие инструменты: Apache 1.3.23 PHP 4.1.1 (CGI) MySQL 3.23.49

Заранее благодарен!
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 15:46:49
anlgizer
Давай ты сначала нам пива купишь ?
Мы тебе за этим пивом и распишем все...
Если ты хочешь, что тебе это сделали - пости подобные темы в "Изготовление скриптов..."
Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 15:50:37
давай
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 15:54:53
anlgizer
На неделе в г. Москва на Пушкинской площади в 20.30...
День сообщу дополнительно...
Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 16:10:41
Я не прошу чтобы мне это сделали, я прошу дать совет - по какому принципу это ЛУЧШЕ и УДОБНЕЙ сделать. Сделаю я сам.
Насколько я представляю, форумы созданы именно для этого - получать и давать советы.
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 16:21:40
anlgizer
Принципов тут может быть миллион с половиною.
Все зависит от того, у кого в какую сторону мозги повернуты.
ДАнный форум предназначен для того, чтобы решать проблемы, возникшие в ходе работы на чем-либо...
А у тебя не проблема - а отсутствие знания. :(
Это лечится чтением книг и раздумыванием над проблемой...
Ну так как насчет пива?
Я подобную систему ваял :)
Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 16:36:42
Сразу тебя необнадежу :) - не в Москве  живу.
Насчет знаний и прочего ты, конечно, прав - кто-то больше кто-то меньше.
Я решил эту проблему по-своему, но не уверен, что это наиболее рациональный вариант (более того, я уверен что он громоздкий) поэтому и ищу совета.

Вот моя идея:

users (id, name, login, pass, category, birth, email, post, comment);
информация о юзере.

messages (id, from_id, to_id, body, date, viewed, priority);
сообщения - стандарт.

marks (id, science, date, puple_id, teacher_id, comment, viewed);
тут все ясно - кто, кому, когда, за что поставил оценку

sciences (список доступных наук);
список наук, занесенные id учителей, которыым можно выставлять оценку по данной науке

grades (grade_name, teacher, puples, comment);
список классов, название и кл.руководитель

categories (puple, teacher, administrator);
список доступных категорий и доступные функции.

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

Например, если в сведениях о пользователе был указан класс, то его id автоматически заносился в список соответствующего класса.

Только, пожалуйста, без пива!
Могу предоставить благодарности в конечном проекте :).
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 17:04:04
anlgizer
Автоматически заносится ничего не будет.
Это не промышленная база, где можно триггеров понавешать и решать подобные проблемы одним запросом.
Пиши второй ззапрос, который будет заносить ID в нужную тебе таблицу...
И покажи лучше дамп (структурный) а то некоторые моменты реялизации не совсем понятны (categories, например )
Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 17:28:57
так вот начинается..
а что такое дамп?
и как его показать?
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 17:49:29
anlgizer
Ну вот начинается - это я должен говорить. :mad:
http://www.mysql.com/doc/en/mysqldump.html
Название: MySQL организация данных
Отправлено: anlgizer от 25 Августа 2002, 18:08:34
--
-- Table structure for table \'categories\'
--

CREATE TABLE categories (
  puple int(11) default NULL,
  teacher int(11) default NULL,
  administrator int(11) default NULL
) TYPE=MyISAM;

--
-- Dumping data for table \'categories\'
--



--
-- Table structure for table \'grades\'
--

CREATE TABLE grades (
  grade varchar(4) NOT NULL default \'\',
  teacher int(11) NOT NULL default \'0\',
  comment text
) TYPE=MyISAM;

--
-- Dumping data for table \'grades\'
--



--
-- Table structure for table \'marks\'
--

CREATE TABLE marks (
  mark char(3) NOT NULL default \'\',
  science varchar(255) NOT NULL default \'\',
  date date NOT NULL default \'0000-00-00\',
  puple_id int(11) NOT NULL default \'0\',
  teacher_id int(11) NOT NULL default \'0\',
  viewed set(\'true\',\'false\') default \'false\',
  comment text
) TYPE=MyISAM;

--
-- Dumping data for table \'marks\'
--

--
-- Table structure for table \'messages\'
--

CREATE TABLE messages (
  mess_id int(11) NOT NULL auto_increment,
  from_id int(11) NOT NULL default \'0\',
  to_id int(11) NOT NULL default \'0\',
  body text NOT NULL,
  date date NOT NULL default \'0000-00-00\',
  viewed set(\'true\',\'false\') default \'false\',
  priority set(\'high\',\'normal\') default \'normal\',
  PRIMARY KEY  (mess_id)
) TYPE=MyISAM;

--
-- Dumping data for table \'messages\'
--



--
-- Table structure for table \'sciences\'
--

CREATE TABLE sciences (
  history int(11) default NULL,
  sport int(11) default NULL,
  english int(11) default NULL,
  biology int(11) default NULL,
  mathematics int(11) default NULL,
  physics int(11) default NULL,
  hebrew int(11) default NULL,
  literature int(11) default NULL,
  computers int(11) default NULL,
  geography int(11) default NULL
) TYPE=MyISAM;

--
-- Dumping data for table \'sciences\'
--


--
-- Table structure for table \'users\'
--

CREATE TABLE users (
  user_id int(11) NOT NULL auto_increment,
  name varchar(200) NOT NULL default \'Anonymous\',
  login varchar(64) NOT NULL default \'\',
  password varchar(64) NOT NULL default \'\',
  category set(\'puple\',\'teacher\',\'administrator\') NOT NULL default \'puple\',
  birth date NOT NULL default \'0000-00-00\',
  post text,
  comment text,
  email varchar(255) default NULL,
  PRIMARY KEY  (user_id)
) TYPE=MyISAM;

--
-- Dumping data for table \'users\'
--

во! :beer:
Название: MySQL организация данных
Отправлено: Меняздесьдавнонет от 25 Августа 2002, 22:35:05
Остальное не смотрел, а вот в этом
CREATE TABLE sciences
заметил косяк еше при словесном описании.
Здесь у тебя должно быть две таблицы.
первая - из двух полей - ид и стринг - название науки.
Вторая - в ней только ид тичеров и наук.

И так с остальными тоже в похожих случаях.

Да, и ученик пишется вот так - pupil.
Название: MySQL организация данных
Отправлено: ThE0ReTiC от 25 Августа 2002, 23:32:28
Цитировать
CREATE TABLE categories (
puple int(11) default NULL,
teacher int(11) default NULL,
administrator int(11) default NULL
) TYPE=MyISAM

Это, имхо  малопонятная конструкция...
Чуствуется велосипед.
Название: MySQL организация данных
Отправлено: dymka от 27 Августа 2002, 20:03:53
чот тоже не понял нафига так устроена categories... нормализуй.
Ващет попробуй сначала выделить сущности (предмет, учитель, оценка), а уж потом атрибуты. Далее пиши связи.
Хоть MySQL и не держит внешние ключи, тебе все равно пригодится их описание...
В общих чертах мысли верные, но с science тоже нужно поработать - налицо нарушение первой нормальной формы - а если добавишь еще предмет? править структуру базы?
В остальных таблицах логического противоречия не заметил, ибо влом изучать что нужно и куда.
Чтобы все работало автоматом как ты хочешь нужно использовать продвинутые сервера баз данных... Oracle, MS SQL, Interbase итп...