ПЛИСКО ВЯЧЕСЛАВ. PLISKOVS@GMAIL.COM Удобная работа с базой данных в PHP.

Презентация:



Advertisements
Похожие презентации
Object Relational Mapping (ORM) Объектно-реляционное отображение.
Advertisements

Вадим Думбравану руководитель проектов D7. ORM. Object-relational mapping Недостатки текущего похода в API На каждую сущность программируется свой GetList,
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Доклад «ORM: благо или зло?» Автор Горшков Сергей Вадимович.
Мартин Фаулер « Архитектура корпоративных программных приложений » Подготовила Ст. ПС - 41 Лукиных Н. А.
Object Relational Mapping (ORM) Объектно-реляционное отображение
Работа с БД в Zend Лекция 4 1.Модель 2.Классы Zend_Db_Table и Zend_Config 3.Запросы 4.Свойства и методы таблицы.
Базы данных и технологии баз данных, использующие объектную модель или ее элементы.
Базы данных Лекция 06 Основы SQL. 1. Связи между таблицами БД Разновидности связи между таблицами БД: Один–ко–многим – одной записи родительской таблицы.
Реляционная модель данных Разработана Е.Ф.Коддом (E.F.Codd) в 1970 г.
Автоматическая генерация схемы реляционной базы данных на основе объектной схемы данных Богданов Алексей.
Реляционные базы данных N-арное отношение – подмножество декартова произведения N множеств возможных значений (доменов, типов данных, атрибутов) Изображение.
NHibernate что, где, когда Артур Дробинский ЗетаСофт Томск, 2012.
Информационные системы. Базы данных. Информационная система – любая система обработки информации (шир)
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
Grails От идеи к прототипу Алексей Тишин HackDay Санкт-Петербург 6-7 сентября.
Докладчик – Альперин Борис NOT ONLY SQL NOSQL 1. Различные модели представления информации: иерархическая, сетевая, реляционная, объектная, … Реляционная.
Ruby on Rails. Что такое Ruby? Ruby – это открытый, объектно- ориентированный скриптовый язык, изобретенный Юкихиро Мацумото в начале 90-х.
Трехслойная архитектура приложений, основанных на использовании баз данных.
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
Транксрипт:

ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.

Реляционная база данных Двухмерная таблица Колонки – название полей Строки – уникальные записи Ключи для идентификации и связей между таблицами SQL – стандартный язык запросов, возвращает так же двухмерную таблицу

Шаблоны проектирования ORM Active Records Data mapper Query Object Domain model

Шаблоны проектирования ORM ORM (Объектно-реляционная проекция) запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц.

Шаблоны проектирования: Active Record Active Record (Активная запись) – Объект, выполняющий роль оболочки для строки таблицы или представления базы данных. Он инкапсулирует доступ к базе данных и добавляет логику домена.

Шаблоны проектирования: Query Object Query Object (Объект запроса) – интерпретатор структуры объектов в SQL запросы.

Шаблоны проектирования: Domain Model Domain Model (Модель предметной области) это объекты в объектно-ориентированных компьютерных программах, выражающие сущности из модели предметной области, относящейся к программе, и реализующие бизнес-логику программы.

Реализации ORM Hibernate в JAVA Active Record в Ruby on Rails Django ORM в Python Doctrine в PHP

Doctrine ORM: Структура PDO Doctrine DBAL DQL Doctrine ORM

Компоненты Manager Connection Table Record Collection Validator Profiler Locking Manager Views

Описание модели Типы данных: boolean, integer, float, decimal, string, array, object, blob, clob, timestamp, date, enum, gzip Связи: One to One, One to Many, Many to One, Tree Structure, Many to Many, Self Referencing (Nest Relations) Индексы: первичный, уникальный, полнотекстовый Проверки: больше, меньше, равно, Опции таблицы: тип, кодировка, сравнение

Описание модели: примеры кода метод setTableDefinition() описание колонок $this->hasColumn(название, тип, размер, массив с параметрами); название таблицы $this->setTableName(название таблицы); ключи $this->index(название, array('fields' => array(поле), 'type' => тип)); опции таблицы: $this->option('charset', 'utf8'); Метод setUp() связь между таблицами $this->has (таблица, array('local' => поле в текущей таблице, 'foreign' => поле в связанной таблице, 'refClass' => таблица для связи * - *));

DQL Выборка данных, связанные записи Вставка-изменение данных Удаление данных Для чего нужны Accessors и Mutators Слушатели и обработка событий

DQL: примеры $users = Doctrine::getTable('User')->findAll(); $user = Doctrine::getTable('User')->find (1); echo $user->login, ' ', $user->Groups->Name; $users = Doctrine::getTable('User')->findByGroupsId (1); $users = Doctrine_Query::create()->from('User u')->leftJoin('u. Groups g')->where('g.id = ?', array(1))->fetchArray(); $user = new User(); $user->login = root'; $user['groups_id'] = 1; $user->save(); $user->delete(); $result = Doctrine_Query::create()->delete()->from('User u')- >where('u.id = ?', array(1))->addWhere('groups_id = 1') ->execute();

Шаблоны Для чего это нужно и как работает Geographical I18n NestedSet Searchable Sluggable Softdelete Timestamp Versionalble

Иерархические структуры Adjacency list (Список смежностей) Nested Set Получение дерева Получение ноты Добавление, удаление, изменение ноты Перенос ноты

Проблемы Синтаксический анализ запроса Сложность построения оптимизированных запросов Ограничение SQL Связанные таблицы Встроенные процедуры и функции БД

Решения проблем Профайлинг Оптимизация Кэширование Сложные запросы View Транзакции

Литература М.Фаулер Архитектура корпоративных программных приложений