SlideShare uma empresa Scribd logo
1 de 19
Удобная работа с базой
    данных в 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
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, 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
 Слушатели и обработка событий
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
 Транзакции
Литература

 М.Фаулер ―Архитектура корпоративных
    программных приложений‖
   http://www.martinfowler.com/
   http://wikipedia.org/
   http://www.doctrine-project.org/
   http://phpclub.ru/

Mais conteúdo relacionado

Mais procurados

Ibn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduIbn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduMushahid Razvi
 
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...muzaffertahir9
 
Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)zetamatta
 
Greedy Knapsack
Greedy KnapsackGreedy Knapsack
Greedy KnapsackStas Fomin
 
Benamazi ka anjam by maulana shakir ali noori
Benamazi ka anjam by maulana shakir ali nooriBenamazi ka anjam by maulana shakir ali noori
Benamazi ka anjam by maulana shakir ali nooriAtaurrahman Noori
 
ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?SQALab
 
ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?Andrew Mayorov
 
Hazrat Khalid Bin Waleed Book By Ataurrahman Noori
Hazrat Khalid Bin Waleed Book By Ataurrahman NooriHazrat Khalid Bin Waleed Book By Ataurrahman Noori
Hazrat Khalid Bin Waleed Book By Ataurrahman NooriAtaurrahman Noori
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会uchan_nos
 

Mais procurados (19)

033 al-ahzab
033 al-ahzab033 al-ahzab
033 al-ahzab
 
Ibn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jaduIbn e-aadam ka naovel--jadu
Ibn e-aadam ka naovel--jadu
 
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...
رمضان المبارک کے زریعے انسان غیر متناہی روحانی اور جسمانی دینی ترقیاتی حاصل ک...
 
快捷鍵
快捷鍵快捷鍵
快捷鍵
 
Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)
 
Greedy Knapsack
Greedy KnapsackGreedy Knapsack
Greedy Knapsack
 
Benamazi ka anjam by maulana shakir ali noori
Benamazi ka anjam by maulana shakir ali nooriBenamazi ka anjam by maulana shakir ali noori
Benamazi ka anjam by maulana shakir ali noori
 
ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?
 
ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?
 
003 aal-imran
003 aal-imran003 aal-imran
003 aal-imran
 
039 az-zumar
039 az-zumar039 az-zumar
039 az-zumar
 
Umahat ul momineen
Umahat ul momineenUmahat ul momineen
Umahat ul momineen
 
Apache
ApacheApache
Apache
 
018 al-kahf
018 al-kahf018 al-kahf
018 al-kahf
 
051 060
051 060051 060
051 060
 
032 as-sajdah
032 as-sajdah032 as-sajdah
032 as-sajdah
 
012 yusuf
012 yusuf012 yusuf
012 yusuf
 
Hazrat Khalid Bin Waleed Book By Ataurrahman Noori
Hazrat Khalid Bin Waleed Book By Ataurrahman NooriHazrat Khalid Bin Waleed Book By Ataurrahman Noori
Hazrat Khalid Bin Waleed Book By Ataurrahman Noori
 
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
 

Destaque (8)

Mitos na Promoção
Mitos na PromoçãoMitos na Promoção
Mitos na Promoção
 
Tecnología
Tecnología Tecnología
Tecnología
 
Nihita_Sukumaran_August
Nihita_Sukumaran_AugustNihita_Sukumaran_August
Nihita_Sukumaran_August
 
inclusive setting presentation completes
inclusive setting presentation completes inclusive setting presentation completes
inclusive setting presentation completes
 
Web 2.0 und Kommunikation
Web 2.0 und KommunikationWeb 2.0 und Kommunikation
Web 2.0 und Kommunikation
 
Apresentação Estilo
Apresentação EstiloApresentação Estilo
Apresentação Estilo
 
Ways To Master 12 Essential Life Skills!
Ways To Master 12 Essential Life Skills!Ways To Master 12 Essential Life Skills!
Ways To Master 12 Essential Life Skills!
 
Leveraging Social Media in Credit Unions
Leveraging Social Media in Credit UnionsLeveraging Social Media in Credit Unions
Leveraging Social Media in Credit Unions
 

Mais de Транслируем.бел

Руководство по видео, трансляциям и премьерам (Youtube 2020)
Руководство по видео, трансляциям и премьерам (Youtube 2020)Руководство по видео, трансляциям и премьерам (Youtube 2020)
Руководство по видео, трансляциям и премьерам (Youtube 2020)Транслируем.бел
 
Корпоративный новый год онлайн
Корпоративный новый год онлайнКорпоративный новый год онлайн
Корпоративный новый год онлайнТранслируем.бел
 
Руководство для малого и среднего бизнеса по использованию цифровых решений
Руководство для малого и среднего бизнеса по использованию цифровых решенийРуководство для малого и среднего бизнеса по использованию цифровых решений
Руководство для малого и среднего бизнеса по использованию цифровых решенийТранслируем.бел
 
Онлайн-трансляции в соцсетях
Онлайн-трансляции в соцсетяхОнлайн-трансляции в соцсетях
Онлайн-трансляции в соцсетяхТранслируем.бел
 
Как организовать трансляцию в Facebook
Как организовать трансляцию в FacebookКак организовать трансляцию в Facebook
Как организовать трансляцию в FacebookТранслируем.бел
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьТранслируем.бел
 
Когда сказать нет. Арсений Кравченко
Когда сказать нет. Арсений КравченкоКогда сказать нет. Арсений Кравченко
Когда сказать нет. Арсений КравченкоТранслируем.бел
 
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособие
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособиеSMM учебник. Как продвигать банк в социальных сетях. Наглядное пособие
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособиеТранслируем.бел
 
методы монетизации интернет проектов
методы монетизации интернет проектовметоды монетизации интернет проектов
методы монетизации интернет проектовТранслируем.бел
 

Mais de Транслируем.бел (20)

Медицинские трансляции
Медицинские трансляцииМедицинские трансляции
Медицинские трансляции
 
Vinteo
VinteoVinteo
Vinteo
 
Руководство по видео, трансляциям и премьерам (Youtube 2020)
Руководство по видео, трансляциям и премьерам (Youtube 2020)Руководство по видео, трансляциям и премьерам (Youtube 2020)
Руководство по видео, трансляциям и премьерам (Youtube 2020)
 
Корпоративный новый год онлайн
Корпоративный новый год онлайнКорпоративный новый год онлайн
Корпоративный новый год онлайн
 
Unofficial guide to vmix by streamgeeks
Unofficial guide to vmix by streamgeeksUnofficial guide to vmix by streamgeeks
Unofficial guide to vmix by streamgeeks
 
Руководство для малого и среднего бизнеса по использованию цифровых решений
Руководство для малого и среднего бизнеса по использованию цифровых решенийРуководство для малого и среднего бизнеса по использованию цифровых решений
Руководство для малого и среднего бизнеса по использованию цифровых решений
 
Sennheiser ew100 g2
Sennheiser ew100 g2Sennheiser ew100 g2
Sennheiser ew100 g2
 
Sony mcs 8m
Sony mcs 8mSony mcs 8m
Sony mcs 8m
 
Сравнение поколений Y и Z
Сравнение поколений Y и ZСравнение поколений Y и Z
Сравнение поколений Y и Z
 
Онлайн-трансляции в соцсетях
Онлайн-трансляции в соцсетяхОнлайн-трансляции в соцсетях
Онлайн-трансляции в соцсетях
 
Как организовать трансляцию в Facebook
Как организовать трансляцию в FacebookКак организовать трансляцию в Facebook
Как организовать трансляцию в Facebook
 
The ultimate guide to facebook live for your event
The ultimate guide to facebook live for your eventThe ultimate guide to facebook live for your event
The ultimate guide to facebook live for your event
 
Guide to facebook live
Guide to facebook liveGuide to facebook live
Guide to facebook live
 
Comdi player
Comdi playerComdi player
Comdi player
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделывать
 
Когда сказать нет. Арсений Кравченко
Когда сказать нет. Арсений КравченкоКогда сказать нет. Арсений Кравченко
Когда сказать нет. Арсений Кравченко
 
Marketing Essentials for Startup Teams
Marketing Essentials for Startup TeamsMarketing Essentials for Startup Teams
Marketing Essentials for Startup Teams
 
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособие
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособиеSMM учебник. Как продвигать банк в социальных сетях. Наглядное пособие
SMM учебник. Как продвигать банк в социальных сетях. Наглядное пособие
 
методы монетизации интернет проектов
методы монетизации интернет проектовметоды монетизации интернет проектов
методы монетизации интернет проектов
 
Belarus internet users discovery
Belarus internet users discoveryBelarus internet users discovery
Belarus internet users discovery
 

Clever work with Databases with php

  • 1. Удобная работа с базой данных в PHP. ПЛИСКО ВЯЧЕСЛАВ. PLISKOVS@GMAIL.COM HTTP://AMDY.SU/
  • 2. Реляционная база данных  Двухмерная таблица  Колонки – название полей  Строки – уникальные записи  Ключи для идентификации и связей между таблицами  SQL – стандартный язык запросов, возвращает так же двухмерную таблицу
  • 3. Шаблоны проектирования  ORM  Active Records  Data mapper  Query Object  Domain model
  • 4. Шаблоны проектирования ORM  ORM (Объектно-реляционная проекция) — запись объектов программы в реляционную базу данных, отображение объекта и его представления в виде набора таблиц.
  • 5. Шаблоны проектирования: Active Record  Active Record (Активная запись) – Объект, выполняющий роль оболочки для строки таблицы или представления базы данных. Он инкапсулирует доступ к базе данных и добавляет логику домена.
  • 6. Шаблоны проектирования: Query Object  Query Object (Объект запроса) – интерпретатор структуры объектов в SQL запросы.
  • 7. Шаблоны проектирования: Domain Model  Domain Model (Модель предметной области) — это объекты в объектно-ориентированных компьютерных программах, выражающие сущности из модели предметной области, относящейся к программе, и реализующие бизнес-логику программы.
  • 8. Реализации ORM  Hibernate в JAVA  Active Record в Ruby on Rails  Django ORM в Python  Doctrine в PHP
  • 9. Doctrine ORM: Структура  PDO  Doctrine DBAL  DQL  Doctrine ORM
  • 10. Компоненты  Manager  Connection  Table  Record  Collection  Validator  Profiler  Locking Manager  Views
  • 11. Описание модели  Типы данных: 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  Опции таблицы: тип, кодировка, сравнение
  • 12. Описание модели: примеры кода  метод 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' => таблица для связи * - *));
  • 13. DQL  Выборка данных, связанные записи  Вставка-изменение данных  Удаление данных  Для чего нужны Accessors и Mutators  Слушатели и обработка событий
  • 14. 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();
  • 15. Шаблоны  Для чего это нужно и как работает  Geographical  I18n  NestedSet  Searchable  Sluggable  Softdelete  Timestamp  Versionalble
  • 16. Иерархические структуры  Adjacency list (Список смежностей)  Nested Set  Получение дерева  Получение ноды  Добавление, удаление, изменение ноды  Перенос ноды
  • 17. Проблемы  Синтаксический анализ запроса  Сложность построения оптимизированных запросов  Ограничение SQL  Связанные таблицы  Встроенные процедуры и функции БД
  • 18. Решения проблем  Профайлинг  Оптимизация  Кэширование  Сложные запросы  View  Транзакции
  • 19. Литература  М.Фаулер ―Архитектура корпоративных программных приложений‖  http://www.martinfowler.com/  http://wikipedia.org/  http://www.doctrine-project.org/  http://phpclub.ru/