Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Выбор несовпадающего... угу. Вообще говоря
Цитата MySQL manual:
Параметры (опции) DISTINCT, DISTINCTROW и ALL указывают, должны ли возвращаться дублирующиеся записи. По умолчанию установлен параметр (ALL), т.е. возвращаются все встречающиеся строки. DISTINCT и DISTINCTROW являются синонимами и указывают, что дублирующиеся строки в результирующем наборе данных должны быть удалены.
На счет организации данных. Исходя из того, что сессия в общем-то необходима одна , то получается, что можно сделать одну таблицу:
Код: Выделить весь код
CREATE TABLE `users` (
  `u_id` TINYINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `s_id` CHAR(32) NOT NULL,
  `s_init_time` TIMESTAMP(14) NOT NULL,
  `u_name` CHAR(100) NOT NULL,
  `u_mail` CHAR(50) NOT NULL,
  PRIMARY KEY (`u_id`),
  UNIQUE KEY `u_id` (`u_id`),
  UNIQUE KEY `s_id` (`s_id`),
  UNIQUE KEY `u_mail` (`u_mail`)
);
Правда уникальность некоторых полей дает неудобства при вставке новой позиции, скажем, здесь необходимо уже иметь уникальный номер сессии (UID автоинкрементный, а мыльница у нас есть из формы). Выбор типа столбца для даты начала сессии обусловлен принципом общности - мало ли когда она начата... Правда тут уже загвоздка, как по таблице определить начал пользователь сессию или нет? Стало быть уникальность сессии надо убрать и если это поле пустое, то сессия не начата, а данные в поле даты - не адекватны.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 17:09, 30-05-2004 | #14