А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/slang.ru/5/
Rambler's Top100
Строим сайт slang.ru, глава 5

Строим сайт slang.ru

Глава 5. Планирование-3: пользователи, группирование словарей



Создав таблицу пользователей и связав ее с таблицей словарей, надобно застолбить и функции для работы с пользователями.

Я так мыслю, что юзерским функциям самое место в классе class_user. Создадим, породив от класса class_dic, и наполним его переменными и функциями.

Переменные:

<?   // пользователь   var $u_login$u_pass$u_fname$u_lname$u_semail$u_pemail$u_copi$u_text; ?>

Функции:

<?   function user_add() // добавление пользователя   {   }   function user_update() // изменение описания пользователя   {   }   function user_delete() // удаление пользователя   {   }   function user_info() // получение информации о пользователе   {   } ?>

Тут все стандартно, это ведь пока еще планирование, а не программирование.

Переходим к водным процедурам. То есть, простите, переходим к описанию функций по управлению атрибутами доступа. Полагаю, надо их разместить в том же классе - class_user:

<?   // права доступа   function user_dic_rights()   {   } ?>

Полагаю, одной функции для полного управления правами нам должно хватить. А если не хватит - сделаем другие, нам это не сложно.

Вот так у нас теперь выглядит файл user.class:

<?  require(str_replace('/www','/req',$_SERVER['DOCUMENT_ROOT']).'/dic.class');  class class_user extends class_dic  {   // пользователь   var $u_login$u_pass$u_fname$u_lname$u_semail$u_pemail$u_copi$u_text;   function user_add() // добавление пользователя   {   }   function user_update() // изменение описания пользователя   {   }   function user_delete() // удаление пользователя   {   }   function user_info() // получение информации о пользователе   {   }   // права доступа   function user_dic_rights()   {   }  } // class ?>

Похоже, мы спланировали все, что касалось добавления данных в базу: управляем словами, управляем словарями, управляем пользователями и доступом. Что еще? Ах, да, я совсем забыл про группирование словарей.

Согласитесь, если в базе данных окажется несколько десятков медицинских словарей, то почему бы их не собрать в тематическую группу? А как полезно разделить словари по языковому признаку... В общем, давайте разрабатывать группирование словарей.

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

create table tbl_theme
(
 t_id      smallint unsigned not null auto_increment primary key,
 t_name    varchar(100) not null default '',
 t_enable  enum('Y','N') not null default 'Y'
);

create table tbl_theme_dic
(
 td_id      int unsigned not null auto_increment primary key,
 td_theme   smallint unsigned not null,
 td_dic     smallint unsigned not null,
 td_type     enum('D','M') not null default 'D',
 td_enable  enum('Y','N') not null default 'Y'
);

Тут, пожалуй, надо объяснить только поле td_type из второй таблицы. Это поле я добавил на подсознательном уровне. Оно описывает тип связи словаря с темой. Как это будет использоваться я пока сказать не могу, поэтому поле описал как двухвариантное: [D]irectly и [M]arginally. То есть непосредственное отношение словаря к теме и посредственное, косвенное.

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

Добавим тестовые записи в эти таблицы? Пожалуй, что:

insert into tbl_theme(t_name) values('Тестирование системы');
insert into tbl_theme_dic(td_theme, td_dic) values(1,1);

И добавим управление этими связями в класс словарей (class_dic):

<?   // тематические группы   function theme_add() // добавить тему   {   }   function theme_update() // изменить тему   {   }   function theme_delete() // удалить тему   {   }   function theme_dic() // управление связями   {   } ?>

Теперь с добавлением данных все? По-моему, все. Пошли дальше...





[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin