ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Оптимизация в MySQL
  #1  
Старый 29.01.2010, 01:42
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию Оптимизация в MySQL

В общем пишу диплом значит, естественно на php+mysql . В общем это база данных, можно так сказать.
Есть таблица клиентов, в ней содержится общая инфа о них, типа имени, паспортных данных, адреса, и.т.п. первичный ключ-id клиента.
Вопрос в следующем. У каждого клиента есть около 50 параметров, причем каждый из этих параметров является не обязательным, также система предполагает добавление новых параметров и удаление существующих.
Как лучше хранить дополнительные данные в mysql, я не думаю, что создавать таблицу из 50 полей это лучший вариант.

p.s. другие СУБД не хотелось бы изучать. Нужен ответ именно насчет MySQL
 
Ответить с цитированием

  #2  
Старый 29.01.2010, 02:00
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от ntldr  
В общем пишу диплом значит, естественно на php+mysql . В общем это база данных, можно так сказать.
Есть таблица клиентов, в ней содержится общая инфа о них, типа имени, паспортных данных, адреса, и.т.п. первичный ключ-id клиента.
Вопрос в следующем. У каждого клиента есть около 50 параметров, причем каждый из этих параметров является не обязательным, также система предполагает добавление новых параметров и удаление существующих.
Как лучше хранить дополнительные данные в mysql, я не думаю, что создавать таблицу из 50 полей это лучший вариант.

p.s. другие СУБД не хотелось бы изучать. Нужен ответ именно насчет MySQL
Хранить в одном поле через разделитель? оО
А как еще? Файлы....
 
Ответить с цитированием

  #3  
Старый 29.01.2010, 02:36
Аватар для imajo.ati
imajo.ati
Участник форума
Регистрация: 21.02.2008
Сообщений: 255
Провел на форуме:
975514

Репутация: 177
По умолчанию

PHP код:
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

USE `
test`;

CREATE TABLE IF NOT EXISTS `clients` (
`
id`       INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ид клиента',
`
name`     VARCHAR50 CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'имя клиента',
`
passwordVARCHAR40 CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'пароль клиента',
UNIQUE (`name`)
ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'клиенты';


INSERT INTO `clients`
(`
id`, `name`, `password`)
VALUES
(NULL'Вася'SHA1('123456')),
(
NULL'Петя'SHA1('qwerty'));


CREATE TABLE IF NOT EXISTS `conf_list` (
`
id`   SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ид настройки',
`
nameVARCHAR50 CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'имя настройки',
UNIQUE (`name`)
ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'список настроек';


INSERT INTO `conf_list`
(`
id`, `name`)
VALUES
(NULL'passport'),
(
NULL'address');


CREATE TABLE IF NOT EXISTS `clients_conf` (
`
id`        INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ид для операций с записями',
`
id_clientINT UNSIGNED NOT NULL COMMENT 'ид клиента',
`
id_conf`   INT UNSIGNED NOT NULL COMMENT 'ид настройки',
`
value`     VARCHAR500 CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'значение настройки'
ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'соответствие настройка - клиент';


INSERT INTO `test`.`clients_conf`
(`
id`, `id_client`, `id_conf`, `value`)
VALUES
(NULL'1''1''4004 213442'),
(
NULL'1''2''Ул. Ленина, дом 5, квартира стопицот '),
(
NULL'2''1''4003 934867'),
(
NULL'2''2''без опреледённого места жительства'); 
 
Ответить с цитированием

  #4  
Старый 29.01.2010, 02:50
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Я думаю тебе стоит посмотреть в сторону EAV (Entity-attribute-value model).
Не самая простая и оптимальная модель, но порою оправдывает себя
Основной минус данной модели - уменьшение производительности засчет усложнения структуры (в общем приближении, не буду растекаться мыслью по древу).
Но и плюсов море.
Так же при кэшировании минус можно свести практически на нет. Все зависит от конкретной ситуации.
 
Ответить с цитированием

  #5  
Старый 29.01.2010, 02:56
Аватар для Chaak
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

Цитата:
Сообщение от m0Hze  
Хранить в одном поле через разделитель? оО
А как еще? Файлы....
http://ru.wikipedia.org/wiki/Нормальная_форма
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
20 хороших советов по MySQL. root_sashok Чужие Статьи 0 01.12.2009 16:37
Защита БД MySQL от SQL инъекций с помощью GreenSQL xcedz Администрирование 5 02.04.2009 21:46
SQL injection в MySql сервере версии 3,x bandera Чужие Статьи 3 04.06.2006 16:17
Общие Рекомендации Защиты (MySQL и SQL Web-интерфейс) k00p3r Чужие Статьи 0 13.06.2005 11:22
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ