создание базы данных

Модератор: Модераторы

Re: создание базы данных

Сообщение ujif » 19.02.2015 19:46:51

ujif писал(а):
*Rik* писал(а):
ujif писал(а):Спасибо ,сделал теперь открывается - ничего не просит
все файлы и проги и самораспаковка в папке C:IBExpert


Теперь пробуйте создать базу, инструкция по созданию и регистрации базы в IBExpert в моем предыдущем посте. Как файл с базой создадите и сможете к ней коннектиться, напишите, будем работать дальше.
viewtopic.php?t=10168&view=unread#p84787


в окне "Создание базы данных" в строке "Client Library File"
сразу прописывается строка "C:Program Files (x86)FirebirdFirebird_2_5binfbclient.dll"
Дело в том что у меня в папке C:Program File(x86)Firebird ..и т.д. никакой Firebird нет
те 2 файла на кот. Вы мне дали ссылку я распаковал ,как и велено было в папку IBExpert
и в ней папки bin нет , а прогу Firebird 2.5 я удалил

Попробовал все же создать базу , получилось следующее
в окне "Создание базы данных" "Файл базы данных" прописал
D:BD_DataBaseBD_1Test.FDB - это я папку для баз там сделал
в окне "Client Library File" С:IBExpertfbembed.dll
далее ввел имя и пароль и "ОК"
Открылось окно "Регистрация базы данных"
в окне "Файл базы данных" уже прописано D:BD_DataBaseBD_1Test.FDB
на диске D в папке BD_1 появились 3 файла FBEMBED.DLL , TEST.FDB, USERDB.FDB
"Описание базы " - Тестовая база
"Файл клиентской библиотеки" - С:IBExpertfbembed.dll
Далее нажал "Регистрировать"
Никаких предупреждений не повылазило ,но и слева в окне редактора ничего не появилось
как Вы писали "После этого созданная и зарегистрированная база будет отображаться в списке доступных баз слева, можно к ней подкючиться"
пустое окно


После перезагрузки появилась база слева в окне редактора ...Уффф

Добавлено спустя 3 минуты 2 секунды:
*Rik* писал(а):
ujif писал(а):в окне "Создание базы данных" в строке "Client Library File"
сразу прописывается строка "C:\Program Files (x86)\Firebird\Firebird_2_5\bin\fbclient.dll"
Дело в том что у меня в папке C:\Program File(x86)\Firebird ..и т.д. никакой Firebird нет
те 2 файла на кот. Вы мне дали ссылку я распаковал ,как и велено было в папку IBExpert
и в ней папки bin нет , а прогу Firebird 2.5 я удалил

Попробовал все же создать базу , получилось следующее
в окне "Создание базы данных" "Файл базы данных" прописал
D:\BD_DataBase\BD_1\Test.FDB - это я папку для баз там сделал
в окне "Client Library File" С:\IBExpert\fbembed.dll
далее ввел имя и пароль и "ОК"
Открылось окно "Регистрация базы данных"
в окне "Файл базы данных" уже прописано D:\BD_DataBase\BD_1\Test.FDB
на диске D в папке BD_1 появились 3 файла FBEMBED.DLL , TEST.FDB, USERDB.FDB
"Описание базы " - Тестовая база
"Файл клиентской библиотеки" - С:\IBExpert\fbembed.dll
Далее нажал "Регистрировать"
Никаких предупреждений не повылазило ,но и слева в окне редактора ничего не появилось
как Вы писали "После этого созданная и зарегистрированная база будет отображаться в списке доступных баз слева, можно к ней подкючиться"
пустое окно

Проверьте, есть ли файл D:\BD_DataBase\BD_1\Test.FDB

Если FireBird удален, то С:\IBExpert\fbembed.dll вполне достаточно для однопользовательской работы.


файл D:\BD_DataBase\BD_1\Test.FDB на месте , после перезагрузки программы в окне слева база появилась в списке
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 19.02.2015 19:51:59

ujif писал(а): файл D:\BD_DataBase\BD_1\Test.FDB на месте , после перезагрузки программы в окне слева база появилась в списке


Щелкните на ней 2 раза, IBExpert должен к ней подключиться.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 19.02.2015 20:19:10

*Rik* писал(а):
ujif писал(а): файл D:\BD_DataBase\BD_1\Test.FDB на месте , после перезагрузки программы в окне слева база появилась в списке


Щелкните на ней 2 раза, IBExpert должен к ней подключиться.


КРАСОТИЩА, все как у Вас на картинке стало слева "Тестовая база" Диалект 3
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 20.02.2015 12:35:38

ujif писал(а):КРАСОТИЩА, все как у Вас на картинке стало слева "Тестовая база" Диалект 3

Скажите, у Вас какое-либо представление о реляционных базах есть или об этом тоже надо упомянуть прежде чем структуру базы создавать будем?
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 20.02.2015 12:58:26

*Rik* писал(а):
ujif писал(а):КРАСОТИЩА, все как у Вас на картинке стало слева "Тестовая база" Диалект 3

Скажите, у Вас какое-либо представление о реляционных базах есть или об этом тоже надо упомянуть прежде чем структуру базы создавать будем?

это набор таблиц с данными представляющими из себя двумерный массив,
каждый столбец имеет уникальное имя(имя,телефон,адрес т.д.) ,
каждая строка это данные для одного объекта (например человека,машины)
имеется ключевое поле (например номер по порядку) по которому происходит
связь между данными таблиц,
есть главная таблица в кот. описано название объекта и вспомогательные
таблицы в кот. находятся свойства этого объекта
вывод таблиц происходит по запросу из субд
как-то так, но не лишнее ,если Вас не затруднит,
все же упомянуть об этом , если сочтете нужным
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 20.02.2015 16:29:43

ujif
На данном этапе, пока ваших познаний достаточно.

Когда вы подсоединяетсь к базе через IBExpert, вы видите там:
Домены, Таблицы, Представления, Процедуры, Триггеры, Генераторы, Исключения, Функции, Роли, Индексы

Домены - это пользовательские типы данных, преимущество использования доменов я могу показать на примере:
Если создать домен, ну например с именем TPIPLENAME VARCHAR(20) NOT NULL, SQL запрос полностью выглядит так
Код: Выделить всё
CREATE DOMAIN TPIPLENAME AS VARCHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251;
(такие запросы вам писать не придется, IBExpert сделает это за вас), то я могу использовать его для задания полей описывающих Фамилию имя людей в разных таблицах,
Например таблица CLIENT, в ней поля FAM, NAME вместо VARCHAR(20) NOT NULL можно указать
CREATE TABLE CLIENT (
CLIENT_ID BIGINT NOT NULL
FAM TPIPLENAME,
NAME TPIPLENAME
)
Здесь поле CLIENT_ID является первичным ключом, для первичных ключей тоже можно объявить домен, ну например дадим ему имя TPKEY
Код: Выделить всё
CREATE DOMAIN TPKEY AS BIGINT NOT NULL;

Теперь во всех таблицах для первичных ключей можно указывать
Код: Выделить всё
CREATE TABLE CLIENT (
CLIENT_ID  TPKEY,
FAM TPIPLENAME,
NAME TPIPLENAME
)

У доменов есть ещё одно преимущество, если изменить домен, то изменения произойдут во всех таблицах, где он используется, например, если домен TPIPLENAME вместо VARCHAR(20) сделать VARCHAR(30), то длина полей изменится во всех таблицах и полях в которых тип поля TPIPLENAME.

Таблицы тут и так понятно

Представления - в них можно организовывать выборку данных из нескольких связанных таблиц, затем можно с этим представлением работать как с обычной таблицей. Это удобно.

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

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

Генераторы (или последовательности) - Это счетчики которые обеспечивают уникальные цифровые значения. Например, если нужно задать автоинкрементный первичный ключ, то это делается с помощью генераторов. Даже если 100 человек одновременно будут пытаться вставить записи в таблицу, генератор выдаст им уникальные номера первичного ключа.

Исключения - тексты сообщения об ошибках. Например, если в процедуре при проверке данных обнаружилось не соответствие, то в исключениях можно задать подходящий текст, который будет отправляться клиенту в качестве сообщения об ошибке.

Функции (UDF функции) - расширяют возможности SQL сервера. Это динамические библиотеки содержащие различные функции для работы с датой, строками, и т.д. которые можно подгрузить если встроенных вам не хватает.

Роли - обеспечивают набор прав для группы пользователей. При многопользовательской работе обычно права на доступ к данным некоторых пользователе ограничивают, кому-то дают больше прав, кому-то меньше. Права можно прописать конкретному пользователю, а можно сделать роль, в которой права прописаны и выдавать её пользователям. Все изменения прав для роли отразятся на всех пользователях, которые с этой ролью заходят.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 20.02.2015 21:28:42

*Rik* писал(а):ujif
На данном этапе, пока ваших познаний достаточно.

Когда вы подсоединяетсь к базе через IBExpert, вы видите там:
Домены, Таблицы, Представления, Процедуры, Триггеры, Генераторы, Исключения, Функции, Роли, Индексы

Домены - это пользовательские типы данных, преимущество использования доменов я могу показать на примере:
Если создать домен, ну например с именем TPIPLENAME VARCHAR(20) NOT NULL, SQL запрос полностью выглядит так
Код: Выделить всё
CREATE DOMAIN TPIPLENAME AS VARCHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251;
(такие запросы вам писать не придется, IBExpert сделает это за вас), то я могу использовать его для задания полей описывающих Фамилию имя людей в разных таблицах,
Например таблица CLIENT, в ней поля FAM, NAME вместо VARCHAR(20) NOT NULL можно указать
CREATE TABLE CLIENT (
CLIENT_ID BIGINT NOT NULL
FAM TPIPLENAME,
NAME TPIPLENAME
)
Здесь поле CLIENT_ID является первичным ключом, для первичных ключей тоже можно объявить домен, ну например дадим ему имя TPKEY
Код: Выделить всё
CREATE DOMAIN TPKEY AS BIGINT NOT NULL;

Теперь во всех таблицах для первичных ключей можно указывать
Код: Выделить всё
CREATE TABLE CLIENT (
CLIENT_ID  TPKEY,
FAM TPIPLENAME,
NAME TPIPLENAME
)

У доменов есть ещё одно преимущество, если изменить домен, то изменения произойдут во всех таблицах, где он используется, например, если домен TPIPLENAME вместо VARCHAR(20) сделать VARCHAR(30), то длина полей изменится во всех таблицах и полях в которых тип поля TPIPLENAME.

Таблицы тут и так понятно

Представления - в них можно организовывать выборку данных из нескольких связанных таблиц, затем можно с этим представлением работать как с обычной таблицей. Это удобно.

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

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

Генераторы (или последовательности) - Это счетчики которые обеспечивают уникальные цифровые значения. Например, если нужно задать автоинкрементный первичный ключ, то это делается с помощью генераторов. Даже если 100 человек одновременно будут пытаться вставить записи в таблицу, генератор выдаст им уникальные номера первичного ключа.

Исключения - тексты сообщения об ошибках. Например, если в процедуре при проверке данных обнаружилось не соответствие, то в исключениях можно задать подходящий текст, который будет отправляться клиенту в качестве сообщения об ошибке.

Функции (UDF функции) - расширяют возможности SQL сервера. Это динамические библиотеки содержащие различные функции для работы с датой, строками, и т.д. которые можно подгрузить если встроенных вам не хватает.

Роли - обеспечивают набор прав для группы пользователей. При многопользовательской работе обычно права на доступ к данным некоторых пользователе ограничивают, кому-то дают больше прав, кому-то меньше. Права можно прописать конкретному пользователю, а можно сделать роль, в которой права прописаны и выдавать её пользователям. Все изменения прав для роли отразятся на всех пользователях, которые с этой ролью заходят.


Спасибо, можно наверно дальше
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 20.02.2015 22:38:45

Создаем таблицу.

Подсоединяемся к базе. На разделе таблицы жмем правой кнопкой и выбираем "Новая таблица".
Изображение
В открывшемся окне, пишем имя таблицы (на скриншоте ниже см. пункт 1, выделен синим).
Я там написал TESTTABLE,
После этого начинаем создавать поля. Первым полем создаем поле с первичным ключём. Чтобы не путаться, у меня есть хорошее правило давать имена ключевым полям по имени таблицы (ИМЯТАБЛИЦЫ_ID), у нас это будет TESTTABLE_ID. Сразу слева от имени поля пробелом ставим галочку ПК(первичный ключ, см пункт 2 на скриншоте), тип поля назначаем BIGINT. Далее пробелом ставим галочку не пустое(см. пункт 3). И ставим галочку АИ (пункт 4), эта галочка задает автоинкремент, при установке галочки появится окно, в котором отмечаем сначала "Создать генератор"
Изображение
Затем в этом-же окне переключаемся на закладку Триггер и ставим галочку создать триггер. Жмем ОК. Генерация первичного ключа у нас обеспечена.
Изображение


Далее создаем поля как на скриншоте ниже. Я указал создание полей:
STRFIELD тип VARCHAR(100) не пустое (это поле может хранить строку длинной до 100 символов)
INTFIELD тип INTEGER не пустое (это поле может хранить целое значение)
MONEYFIELD тип NUMERIC(15,2) не пустое, по умолчанию значение 0 (это поле хранит дробное значение с 2мя дробными разрядами)
Как все будет заполнено, жмем кнопку создать (на скриншоте см. пункт 2), после этого появится диалог, в котором жмем кнопку подтвердить.
Изображение

Таблица создана.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 20.02.2015 23:14:25

*Rik* писал(а):Создаем таблицу.

Подсоединяемся к базе. На разделе таблицы жмем правой кнопкой и выбираем "Новая таблица".
Изображение
В открывшемся окне, пишем имя таблицы (на скриншоте ниже см. пункт 1, выделен синим).
Я там написал TESTTABLE,
После этого начинаем создавать поля. Первым полем создаем поле с первичным ключём. Чтобы не путаться, у меня есть хорошее правило давать имена ключевым полям по имени таблицы (ИМЯТАБЛИЦЫ_ID), у нас это будет TESTTABLE_ID. Сразу слева от имени поля пробелом ставим галочку ПК(первичный ключ, см пункт 2 на скриншоте), тип поля назначаем BIGINT. Далее пробелом ставим галочку не пустое(см. пункт 3). И ставим галочку АИ (пункт 4), эта галочка задает автоинкремент, при установке галочки появится окно, в котором отмечаем сначала "Создать генератор"
Изображение
Затем в этом-же окне переключаемся на закладку Триггер и ставим галочку создать триггер. Жмем ОК. Генерация первичного ключа у нас обеспечена.
Изображение


Далее создаем поля как на скриншоте ниже. Я указал создание полей:
STRFIELD тип VARCHAR(100) не пустое (это поле может хранить строку длинной до 100 символов)
INTFIELD тип INTEGER не пустое (это поле может хранить целое значение)
MONEYFIELD тип NUMERIC(15,2) не пустое, по умолчанию значение 0 (это поле хранит дробное значение с 2мя дробными разрядами)
Как все будет заполнено, жмем кнопку создать (на скриншоте см. пункт 2), после этого появится диалог, в котором жмем кнопку подтвердить.
Изображение

Таблица создана.


таблицу не знаю верно или нет делал , в окне "Таблица: " клик правой кнопкой мыши и там выбирал "новое поле"
в меню "добавить поле" тоже пробовал, только поле MONEYFIELD не совсем получилось
устанавливал точность его окно такое открылось и там поля "точность" и "масштаб"
"точность" в двойку установилась ,а "масштаб" больше чем "точность" не устанавливается
кодировка сама вылезла ,без нее никак не получается
посылаю снимок чего вышло
Вложения
table1.jpg
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 20.02.2015 23:26:11

ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 21.02.2015 00:03:33

*Rik* писал(а):ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.


по новой сделал таблицу, поля добавлял через меню "добавить поле"
что получилось на экране
Вложения
table.jpg
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 21.02.2015 00:14:45

ujif писал(а):
*Rik* писал(а):ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.


по новой сделал таблицу, поля добавлял через меню "добавить поле"
что получилось на экране

Ну усё, теперь можно клиентское приложение в Lazarus'е писать, чтобы в эту таблицу данные заносить. Завтра расскажу на примерах.

ps.
Данные можно и через IBExpert заносить, после создания таблица, где список полей, смотрите выше, там в закладках закладка Данные появляется. Можно переключиться на эту закладку и попробовать заполнять (в поле с первичным ключом только ни чего не вводите).
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: создание базы данных

Сообщение ujif » 21.02.2015 00:19:04

*Rik* писал(а):
ujif писал(а):
*Rik* писал(а):ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.


по новой сделал таблицу, поля добавлял через меню "добавить поле"
что получилось на экране

Ну усё, теперь можно клиентское приложение в Lazarus'е писать, чтобы в эту таблицу данные заносить. Завтра расскажу на примерах.

ps.
Данные можно и через IBExpert заносить, после создания таблица, где список полей, смотрите выше, там в закладках закладка Данные появляется. Можно переключиться на эту закладку и попробовать заполнять (в поле с первичным ключом только ни чего не вводите).


тут оказывается компилировать нужно все ,кликнул по молнии в меню ,вылезла ошибка
имя генератора с именем первичного ключа не совпадала
вот снимок после компиляции , кодировка появилась и номера по порядку от 1 до 4

Добавлено спустя 2 минуты 29 секунд:
*Rik* писал(а):ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.



снимок уже после исправления имени генератора
Спасибо за поддержку Уважаемый Rik
Вложения
table.jpg
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение ujif » 22.02.2015 15:00:07

*Rik* писал(а):
ujif писал(а):
*Rik* писал(а):ujif
У Вас имя первичного ключа, совпадает с именем таблицы, это не есть хорошо, надо переделать.
Кодировка должна сама в текстовых полях вылазить (по умолчанию та-что задано при создании базы), это у меня косяк где-то.
У MONEYFIELD длина поля должна без проблем выставляться, а вот наоборот, чтобы точность больше длины была нельзя.
Поля можно редактировать, щелкайте на них 2 раза, пробуйте исправить.


по новой сделал таблицу, поля добавлял через меню "добавить поле"
что получилось на экране

Ну усё, теперь можно клиентское приложение в Lazarus'е писать, чтобы в эту таблицу данные заносить. Завтра расскажу на примерах.

ps.
Данные можно и через IBExpert заносить, после создания таблица, где список полей, смотрите выше, там в закладках закладка Данные появляется. Можно переключиться на эту закладку и попробовать заполнять (в поле с первичным ключом только ни чего не вводите).


установил компоненты Firebird в Lazarus на снимке
Вложения
FireBird5.jpg
ujif
новенький
 
Сообщения: 40
Зарегистрирован: 04.07.2013 23:37:35

Re: создание базы данных

Сообщение *Rik* » 22.02.2015 18:21:44

ujif писал(а):установил компоненты Firebird в Lazarus на снимке
Lazarus/Delphi раньше уже использовали? Компоненты IBX у Вас какие? Есть американский порт на Lazarus, есть мой, исправленный.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Пред.След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru