Clever work with Databases with php - Presentation Transcript
Удобная работа с базой
данных в PHP.
ПЛИСКО ВЯЧЕСЛАВ.
PLISKOVS@GMAIL.COM
HTTP://AMDY.SU/
Реляционная база данных
Двухмерная таблица
Колонки – название полей
Строки – уникальные записи
Ключи для идентификации и связей между
таблицами
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
Описание модели
Типы данных:
boolean, integer, float, decimal, string, array, object, blob, c
lob, timestamp, date, enum, gzip
Связи: One to One, One to Many, Many to One, Tree
Structure, Many to Many, Self Referencing (Nest Relations)
Индексы: первичный, уникальный, полнотекстовый
Проверки: больше, меньше, равно, e-mail
Опции таблицы: тип, кодировка, сравнение
Описание модели: примеры кода
метод setTableDefinition()
описание колонок $this->hasColumn(название, тип, размер, массив
с параметрами);
название таблицы $this->setTableName(название таблицы);
ключи $this->index(название, array('fields' => array(поле), 'type' =>
тип));
опции таблицы: $this->option('charset', 'utf8');
Метод setUp()
связb между таблицами $this->has<One|Many>(таблица,
array('local' => поле в текущей таблице, 'foreign' => поле в
связанной таблице, 'refClass' => таблица для связи * - *));
DQL
Выборка данных, связанные записи
Вставка-изменение данных
Удаление данных
Для чего нужны Accessors и Mutators
Слушатели и обработка событий
Шаблоны
Для чего это нужно и как работает
Geographical
I18n
NestedSet
Searchable
Sluggable
Softdelete
Timestamp
Versionalble
Иерархические структуры
Adjacency list (Список смежностей)
Nested Set
Получение дерева
Получение ноды
Добавление, удаление, изменение ноды
Перенос ноды
Проблемы
Синтаксический анализ запроса
Сложность построения оптимизированных
запросов
Ограничение SQL
Связанные таблицы
Встроенные процедуры и функции БД
Решения проблем
Профайлинг
Оптимизация
Кэширование
Сложные запросы
View
Транзакции
0 comments
Post a comment