ICQCorp
Навигатор О проекте Новости Ссылки Установка ФАКи Скриншоты Благодарности Документы PostgreSQL Скачать Об авторе Гостевая книга Russian English Проект IServerd

Таблица users_info_ext

Назначение таблицы:

Таблица предназначена для хранения информации о всех зарегистрированных пользователях. В ней содержится такая информация как имя, пол, возраст, адрес, интересы, пароль. Также она содержит различную служебную информацию. Основной тип запросов - запросы на выборку конкретной записи по номеру пользователя (номер уникален).

Список полей таблицы:

 Название  Тип поля  Описание поля
 uin  float8 Уникальный идентификационный номер пользователя
 pass  name Пароль пользователя (открытым текстом)
 ulock  int2 Флаг блокировки учетной записи (варианты 1/0)
 llog  float8 Время последнего подключения, стандартное C-время
 iadr  float8 IP адрес пользователя, при последнем подключении
 bcst  int2 Флаг возможности широковещания (1/0)
 cdate  float8 Время создания учетной записи пользователя
 cpass  int2 Флаг необходимости смены пароля (1/0)
 nike  name Ник (прозвище) пользователя
 frst  name Имя/отчество пользователя
 last  name Фамилия пользователя
 email1  text Основной почтовый адрес пользователя
 email2  text Вторичный почтовый адрес пользователя
 email3  text Старый почтовый адрес пользователя
 e1publ  int2 Флаг разрешения публикования email1 (1/0)
 gmtoffs  int2 Смещение часового пояса пользователя (часы)
 auth  int2 Флаг необходимости авторизации при добавлении
 sex  int2 Пол пользователя (1 - male, 2 - female)
 age  int2 Возраст пользователя
 bday  int2 День рождения пользователя
 bmon  int2 Месяц рождения пользователя
 byear  int2 Год рождения пользователя
 waddr  text Адрес места работы пользователя
 wcity  name Город места работы пользователя
 wstate  name Штат (США, канада) места работы пользователя
 wcountry  int4 Страна места работы пользователя
 wcompany  name  Название организации по месту работы
 wtitle  name Должность пользователя
 wocup  int2 Индекс рода занятий
 wdepart  name Индекс подразделения пользователя (для V3 )
 wphon  name Номер рабочего телефона
 wfax  name Номер рабочего факса
 wpager  name Номер служебного пейждера
 wzip  text Почтовый индекс места работы пользователя
 wweb  text Адрес веб-страницы организации места работы
 notes  text Заметки пользователя (допольнительные сведения)
 haddr  text Домашний адрес пользователя
 hcity  name Город места жительства пользователя
 hstate  name Штат (США, канада) места жительства пользователя
 hcountry  int4 Страна места жительства пользователя
 hphon  name Домашний номер телефона пользователя
 hfax  name Номер домашнего факса пользователя
 hcell  name Номер личного мобильного телефона
 hzip  name Домашний почтовый индекс пользователя
 hweb  text Адрес домашней веб-странички пользователя
 nnotes  float8 Время обновления личных заметок (доп. данных)
 lang1  int2 Номер языка общения #1
 lang2  name Номер языка общения #2
 lang3  name Номер языка общения #3
 hpage_cf  int2 Флаг наличия категории личной веб-страницы (ЛВБС)
 hpage_cat  int4 Индекс категории ЛВБС пользователя
 hpage_txt  text Короткое описание ЛВБС пользователя
 wdepart2  text Текстовое поле с названием подразделения (V5)
 past_num  int2 Число записей в списке прошлых событий
 past_ind1  int4 Индекс прошлого события #1
 past_key1  text Ключевые слова прошлого события #1
 past_ind2  int4 Индекс прошлого события #2
 past_key2  text Ключевые слова прошлого события #2
 past_ind3  int4 Индекс прошлого события #3
 past_key3  text Ключевые слова прошлого события #3
 int_num  int2 Число записей в таблице интересов
 int_ind1  int4 Индекс категории интереса #1
 int_key1  text Ключевые слова в категории интересов #1
 int_ind2  int4 Индекс категории интереса #2
 int_key2  text Ключевые слова в категории интересов #2
 int_ind3  int4 Индекс категории интереса #3
 int_key3  text Ключевые слова в категории интересов #3
 int_ind4  int4 Индекс категории интереса #4
 int_key4  text Ключевые слова в категории интересов #4
 aff_num  int2 Число записей в списке принадлежности
 aff_ind1  int4 Индекс списка принадлежности #1
 aff_key1  text Ключевые слова индекса принадлежности #1
 aff_ind2  int4 Индекс списка принадлежности #2
 aff_key2  text Ключевые слова индекса принадлежности #2
 aff_ind3  int4 Индекс списка принадлежности #3
 aff_key3  text Ключевые слова индекса принадлежности #3
 iphide  int2 Флаг запрещения показа IP адреса пользователя
 webaware  int2 Флаг разрешения показа статуса на веб-странице


Создание таблицы:

Таблица создается сервером или утилитой при помощи запроса SQL. Прототип запроса находится в модуле database\init_db.h Запрос такого размера правильно отрабатывает только в версии Postgres 7.x.x и выше.


CREATE TABLE Users_Info_Ext (uin float8, pass name, ulock int2, llog float8, iadr float8, bcst int2, cdate float8, cpass int2, nick name, frst name, last name, email1 text, email2 text, email3 text, e1publ int2, gmtoffs int2, auth int2, sex int2, age int2, bday int2, bmon int2, byear int2, waddr text, wcity name, wstate name, wcountry int4, wcompany name, wtitle name, wocup int2, wdepart name, wphon name, wfax name, wpager name, wzip text, wweb text, notes text, haddr text, hcity name, hstate name, hcountry int4, hphon name, hfax name, hcell name, hzip name, hweb text, nnotes float8, lang1 int2 DEFAULT 0, lang2 int2 DEFAULT 0, lang3 int2 DEFAULT 0, hpage_cf int2 DEFAULT 0, hpage_cat int4 DEFAULT 0, hpage_txt text DEFAULT '', wdepart2 text DEFAULT '', past_num int2 DEFAULT 0, past_ind1 int4 DEFAULT 0, past_key1 text DEFAULT '', past_ind2 int4 DEFAULT 0, past_key2 text DEFAULT '', past_ind3 int4 DEFAULT 0, past_key3 text DEFAULT '', int_num int2 DEFAULT 0, int_ind1 int4 DEFAULT 0, int_key1 text DEFAULT '', int_ind2 int4 DEFAULT 0, int_key2 text DEFAULT '', int_ind3 int4 DEFAULT 0, int_key3 text DEFAULT '', int_ind4 int4 DEFAULT 0, int_key4 text DEFAULT '', aff_num int2 DEFAULT 0, aff_ind1 int4 DEFAULT 0, aff_key1 text DEFAULT '', aff_ind2 int4 DEFAULT 0, aff_key2 text DEFAULT '', aff_ind3 int DEFAULT 0, aff_key3 text DEFAULT '', iphide int2 DEFAULT 00, webaware int2 DEFAULT 1);


Таблица содержит индексы на поля uin, last, frst, nick, iadr, llog для ускорения работы запросов поиска конкретных пользователей и поиска по запросу протокола. Индексы создаются следующим образом:


CREATE UNIQUE INDEX euser_uin ON Users_Info_Ext (uin)
CREATE INDEX euser_last ON Users_Info_Ext (last)
CREATE INDEX euser_frst ON Users_Info_Ext (frst)
CREATE INDEX euser_nick ON Users_Info_Ext (nick)
CREATE INDEX euser_iadr ON Users_Info_Ext (iadr)
CREATE INDEX euser_llog ON Users_Info_Ext (llog)



Примечание:

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

Использование таблицы:

Приведу несколько примеров SQL запросов, для работы с этой таблицей. IServerd использует конструкции SQL для выборки данных из этой таблицы, изменения, добавления и удаления.

Запрос на выборку ника,имени,фамилии,почтового адреса и пароля для пользователя 6218895:


SELECT nick, frst,last,email2,pass FROM Users_Info_Ext WHERE uin=6218895;

Запрос на изменение пароля пользователя 6218895:


UPDATE Users_Info_Ext SET pass='password' WHERE uin=6218895;


Запрос на добавление пользователя очень большой (слишком много полей в таблице), поэтому приведу лишь его начало и конец:


INSERT INTO Users_Info_Ext VALUES (6218895, 'password', 0, ..., 0, 1);


Также иногда требуется перенести пользователя из таблицы register_requests в основную таблицу users_info_ext в случае ручной регистрации. При ручной регистрации записи о новых пользователях добавляются в таблицу register_requests, которая имеет такое же строение как и таблица users_info_ext. Предположим, что вновь добавленному пользователю присвоен автоматически номер 6218896, тогда перенос его записи в основную таблицу (методом вставки и удаления) c изменением номера на 100001 будет выглядеть так:


UPDATE register_requests SET uin=100001 WHERE uin=6218896;
INSERT INTO Users_Info_Ext (SELECT * FROM register_requests WHERE uin=100001);
DELETE FROM register_requests WHERE uin=100001;



Описание  ] Установка  ] Спасибо(а)  ] Скрины  ] Постгрес  ] Скачать  ]
Новости  ] ФАКи  ] Автор  ] Ссылки  ] Документы  ] Отзывы  ]
Webmaster
А.В.Шутко