Автор Тема: MySQL организация данных  (Прочитано 5572 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« : 25 Августа 2002, 15:14:48 »
Здравствуйте, уважаемые посетители форума!

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

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

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

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

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

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

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


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

Заранее благодарен!
php i php

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #1 : 25 Августа 2002, 15:46:49 »
anlgizer
Давай ты сначала нам пива купишь ?
Мы тебе за этим пивом и распишем все...
Если ты хочешь, что тебе это сделали - пости подобные темы в "Изготовление скриптов..."
AS IS...

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« Ответ #2 : 25 Августа 2002, 15:50:37 »
давай
php i php

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #3 : 25 Августа 2002, 15:54:53 »
anlgizer
На неделе в г. Москва на Пушкинской площади в 20.30...
День сообщу дополнительно...
AS IS...

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« Ответ #4 : 25 Августа 2002, 16:10:41 »
Я не прошу чтобы мне это сделали, я прошу дать совет - по какому принципу это ЛУЧШЕ и УДОБНЕЙ сделать. Сделаю я сам.
Насколько я представляю, форумы созданы именно для этого - получать и давать советы.
php i php

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #5 : 25 Августа 2002, 16:21:40 »
anlgizer
Принципов тут может быть миллион с половиною.
Все зависит от того, у кого в какую сторону мозги повернуты.
ДАнный форум предназначен для того, чтобы решать проблемы, возникшие в ходе работы на чем-либо...
А у тебя не проблема - а отсутствие знания. :(
Это лечится чтением книг и раздумыванием над проблемой...
Ну так как насчет пива?
Я подобную систему ваял :)
AS IS...

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« Ответ #6 : 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 автоматически заносился в список соответствующего класса.

Только, пожалуйста, без пива!
Могу предоставить благодарности в конечном проекте :).
php i php

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #7 : 25 Августа 2002, 17:04:04 »
anlgizer
Автоматически заносится ничего не будет.
Это не промышленная база, где можно триггеров понавешать и решать подобные проблемы одним запросом.
Пиши второй ззапрос, который будет заносить ID в нужную тебе таблицу...
И покажи лучше дамп (структурный) а то некоторые моменты реялизации не совсем понятны (categories, например )
AS IS...

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« Ответ #8 : 25 Августа 2002, 17:28:57 »
так вот начинается..
а что такое дамп?
и как его показать?
php i php

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #9 : 25 Августа 2002, 17:49:29 »
anlgizer
Ну вот начинается - это я должен говорить. :mad:
http://www.mysql.com/doc/en/mysqldump.html
AS IS...

Оффлайн anlgizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://israeli.steetlife.ru
MySQL организация данных
« Ответ #10 : 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:
php i php

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #11 : 25 Августа 2002, 22:35:05 »
Остальное не смотрел, а вот в этом
CREATE TABLE sciences
заметил косяк еше при словесном описании.
Здесь у тебя должно быть две таблицы.
первая - из двух полей - ид и стринг - название науки.
Вторая - в ней только ид тичеров и наук.

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

Да, и ученик пишется вот так - pupil.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #12 : 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

Это, имхо  малопонятная конструкция...
Чуствуется велосипед.
AS IS...

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MySQL организация данных
« Ответ #13 : 27 Августа 2002, 20:03:53 »
чот тоже не понял нафига так устроена categories... нормализуй.
Ващет попробуй сначала выделить сущности (предмет, учитель, оценка), а уж потом атрибуты. Далее пиши связи.
Хоть MySQL и не держит внешние ключи, тебе все равно пригодится их описание...
В общих чертах мысли верные, но с science тоже нужно поработать - налицо нарушение первой нормальной формы - а если добавишь еще предмет? править структуру базы?
В остальных таблицах логического противоречия не заметил, ибо влом изучать что нужно и куда.
Чтобы все работало автоматом как ты хочешь нужно использовать продвинутые сервера баз данных... Oracle, MS SQL, Interbase итп...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28