- •Вопросы к экзамену с ответами
- •6. Приведите классификацию субд.
- •3. По способу доступа к бд Файл-серверные
- •7. Перечислите функции администратора базы данных
- •8.Что представляет собой вычислительная система?
- •9.Назовите основные способы работы пользователя с базой данных при решении прикладных задач.
- •10.Укажите технологии создания приложений работы с базами данных.
- •11.Охарактеризуйте способы выполнения приложений работы с базами данных.
- •13.Перечислите основные модели жизненного цикла бд.
- •14.Перечислите основные признаки фактографических и документальных бд.
- •15.Укажите достоинства и недостатки иерархической модели данных.
- •16.Охарактеризуйте сетевую модель данных.
- •17.Охарактеризуйте реляционную модель данных.
- •18.В чем отличие реляционной и постреляционной модели данных?
- •20.Назовите и поясните смысл операций выполняемых над данными в случае многомерной модели.
- •21.Перечислите основные принципы, на которых основаны временные бд.
- •22.Охарактеризуйте методы обработки транзакций в активных базах данных.
- •23.В чем основные особенности архитектуры клиент-сервер? Особенности архитектуры клиент/сервер
- •24.Какие стандарты разработаны для архитектуры клиент-сервер?
- •25.В чем особенность создания приложений в архитектуре клиент-сервер?
- •26.Какова типичная распределенная система баз данных?
- •27.В чем состоят преимущества использования распределенных бд?
- •28.Перечислите основные принципы организации распределенных бд
- •29.Что представляет собой фрагментация данных?
- •31.В чем состоит проблема обновления в распределенных системах?
- •32.Дайте определение хранилищ данных.
- •33.Какие свойства присущи хранилищам данных?
- •34.Какие задачи требуется решать при создании хранилищ данных?
- •35.Перечислите основные компоненты хранилищ данных.
- •36.Какие модели данных используются для построения хранилищ?
- •37.Опишите процесс загрузки данных в хранилище.
- •38.Какие задачи решают средства анализа данных в системах поддержки принятия решений?
- •39.Дайте определение транзакции.
- •Isolation — Изолированность
- •41.Назовите три проблемы параллелизма.
- •42.Что представляет собой блокировка?
- •43.Какие типы блокировок могут существовать в системе? Типы блокировок
- •Автоматическая блокировка
- •Полная блокировка таблицы и блокировка изменений
- •Блокировка таблицы
- •Блокировка записей
- •44.Что представляет собой тупиковая ситуация и каким образом она разрешается?
- •45.Что представляет собой задача обеспечения безопасности в бд?
- •46.Какие типы управления доступом поддерживаются субд?
- •47.Перечислите известные вам правила безопасности.
- •48.Дайте определение целостности данных.
- •49.Каковы основные виды ограничений целостности данных, которые должны поддерживаться в субд?
- •I этап. Постановка задачи.
- •II этап. Анализ объекта.
- •III этап. Синтез модели.
- •IV этап. Выбор способов представления информации и программного инструментария.
- •V этап. Синтез компьютерной модели объекта.
- •VI этап. Работа с созданной базой данных.
- •51.Модели данных. Классификация моделей данных.
- •53.Иерархическая модель данных. Основные понятия. Область применения. Достоинства и недостатки.
- •55.Реляционная модель данных. Основные понятия. Область применения. Достоинства и недостатки.
- •2.4.2. Свойства отношений
- •2.4.3. Достоинства и недостатки рмд
- •56.Операции реляционной алгебры.
- •2.4.5. Преобразования операций реляционной алгебры
- •57.Нормальные формы схем отношений. Первая нормальная форма. Вторая нормальная форма.
- •2. Первая нормальная форма (1nf)
- •3. Вторая нормальная форма (2nf)
- •58.Нормальные формы схем отношений. Третья нормальная форма.
- •59.Нормальные формы схем отношений. Нормальная форма Бойса-Кодда
- •61.Структурированный язык запросов sql. Многотабличные запросы.
- •62.Структурированный язык запросов sql. Операции изменения и обновления базы данных.
- •Предложение update.
- •Обновление единственной записи
- •Обновление множества записей
- •Обновление с подзапросом
- •Обновление нескольких таблиц
- •Предложение commit или rollback
- •Вставка единственной записи
- •Вставка единственной записи с опущенными именами полей
- •Заключение.
- •63.Структурированный язык запросов sql. Формирование запросов.
- •64.Структурированный язык запросов sql. Использование псевдонимов.
- •65.Каким образом можно создавать таблицы баз данных в ms Access?
- •66.Каким образом осуществляется связывание таблиц?
- •67.Опишите технологию создания запросов в ms Access.
- •68.Что представляют собой макросы в ms Access и как они создаются?
- •69.Укажите особенности построения sql-запросов.
- •70.Опишите технологию создания приложений в ms Access.
69.Укажите особенности построения sql-запросов.
Для большинства задач MaxSite CMS предлагает уже готовые решения. Но иной раз встречаются задачи, которые требуют своих особых выборок из базы данных. Например в шаблоне вывести заголовки каких-то определенных записей; или при создании виджета под свою задачу.
Данные задачи решаются с помощью SQL. То есть вы создаете SQL-запрос, выполняете его, а полученные данные выводите в нужном виде.
Для работы с базой данных MaxSite CMS использует возможности CodeIgniter. С его помощью работа с БД значительно облегчается.
Одним из важных инструментов является т.н. Active Record. Особенностью Active Record является то, что SQL-запрос формируется пошагово. Давайте рассмотрим несколько примеров.
Предположим нам нужно получить все записи из таблицы «page» с полями «page_title» и «page_id».
$CI->db->select('page_title, page_id');
$query = $CI->db->get('page');
Данный код сформирует и выполнит такой SQL-запрос:
SELECT page_title, page_id FROM mso_page
Для начала отметим две достопримечательности Active Record. Первая - автоматически формируются имена таблиц с учетом префикса («mso_»). Вторая - автоматическое экранирование запросов на предмет уязвимостей и прочих нехороших вещей.
Функция $CI->db->get осуществляет саму выборку. Обратите внимание на переменную $CI. Эта переменная служит для доступа к «главному» классу CodeIgniter. Впрочем, если строго, то это может быть и любая другая переменная, но в MaxSite CMS я стараюсь придерживаться именно такого именования.
Я хочу привести полный рабочий пример, с тем чтобы вам стало понятно о чем идет речь. Комментирование я ставлю прямо в код - так будет легче разобраться.
$CI = & get_instance(); // вот здесь мы и получаем доступ к CodeIgniter
// формируем наш SQL
$CI->db->select('page_id, page_title'); // SELECT page_id, page_title
$CI->db->where('page_status', 'publish'); // WHERE 'page_status'='publish'
$CI->db->where('page_date_publish<', date('Y-m-d H:i:s')); // AND 'page_date_publish'<'дата'
$CI->db->order_by('page_date_publish', 'desc'); // ORDER BY page_date_publish DESC
$CI->db->limit('5'); // последние 5 записей
$query = $CI->db->get('page'); // FROM mso_page + выполнение запроса
// В итоге у нас вот такой SQL сформировался
// SELECT page_id, page_title
// WHERE 'page_status'='publish' AND 'page_date_publish'<'дата'
// FROM mso_page
// ORDER BY page_date_publish DESC
// LIMIT 5
// проверяем сколько получено записей
if ($query->num_rows() > 0) // больше нуля, можно работать
{
$out = '';
foreach ($query->result_array() as $page) // обходим в цикле
{
// формируем вывод - просто пример
$out .= '<p>' . $page['page_id'] . ': ' . $page['page_title'] . '</p>';
}
echo $out; // выводим
}
Как вы уже поняли, этим кодом мы получаем последние пять опубликованных страниц. Главное удобство Active Record в том, что при формировании SQL можно указывать какие-то изменяемые параметры, например если вынести в админ-панель количество записей, то мы в $CI->db->limit пишем полученное значение. Другие же части SQL для нас не меняются.
