SlideShare a Scribd company logo
1 of 38
Download to read offline
RDBMS Design
06/12/2011
Softjourn Inc.




RDBMS Design

  Anatoliy Okhotnikov
  Softjourn Inc.
Про що буде йти мова
●   Типи баз даних
●   Реляційні бази даних (OLTP)
●   Обробка транзакцій (ACID)
●   Database-centric архітектура
●   Моделювання даних. Узгодження іменування
●   Нормалізація та денормалізація
●   Індексування. Найкращі практики
●   Посилання. Питання та обговорення
Про що не буде йти мова
●   Нереляційні бази даних
●   OLAP/структури підтримки прийняття рішень
●   Інтенсивна теорія
●   Інтенсивна практика
Типи баз даних
•    Активна – event-driven, безпека статистика
•    Хмара – доступ через веб-браузер або API
•    Сховище – архів операційних, зовнішні дані
•    Розподілена – модульна, багато як одна
•    Документ-орієнтована – управління док-ами
•    Вбудована – інтегрована у програму
•    Федеративна(гетерогенна) – різні разом
•    Граф – варіант NoSQL із структурами графу
•    У-пам'яті – дуже швидка, знаходиться у пам'яті
•    Знань – для управління знаннями, по темам
•    Паралельна – покращення через паралелізацію

    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Реляційні бази даних
• “A Relational Model of Data for
  Large Shared Data Banks”, стаття
  яку написав Edgar Frank "Ted"
  Codd працюючи дослідницький
  лабораторії IBM у San Jose.
• Обпублікована у
  “Communications of the ACM” у
  червні 1970 року
• Дослідницький проект Університету Каліфорнії
  у Берклі – Berkley Ingress (1973)


 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Реляційні: початок




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Реляційні: сьогодення




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Обробка транзакцій (ACID)




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Обробка транзакцій (ACID)
• Атомарність – результати транзакції або
  повністю виконані, або повінстю відмінені.
• Узгодженість(цілісність) – перетворення з
  одного вірного стану у інший вірний стан.
  Транзакція вірна якщо вона не порушує
  обмеження цілісності.
• Ізоляція – результати не видимі поки
  транзакція не завершена.
• Довговічність(надійність) – після завершення
  результати збережені у постійне сховище і
  переживають наступні збої системи та носія.

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Database-centric архітектура
 Database- або data-centric
 архітектура, це архітектура ПЗ у
 якій база даних грає
 суттєву(центральну) роль.
    •    Стандартна RDMBS (RAD)
    •    Динамічна, table-driven логіка
    •    Використання stored procedures
    •    Shared DB як засіб IPC

Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Database vs Application centric




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Моделювання даних
     При моделюванні ви визначаєте наступне
•    Які елементи даних зберігати
•    Яким великим може бути кожен елемент
•    Яку інформацію може містити елемент
•    Які елементи можна залишити пустими
•    Які елементи обмежені певними рамками
•    Чи і як пов'язані різні таблиці між собою




    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Моделювання даних
• Використовуйте
  візуальні
  інструменти
• Робіть реверс-
  інженіринг
  існуючої бази
• Перевіряйте та
  будуйте зв'язки
• Працюйте
  спільно

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Узгодження іменування
• Joshua, Jana, John-David, Jill,
  Jessa, Jinger, Josiah, Joy-
  Anna, Jedidiah, Jeremiah,
  Jason, James, Justin, Jackson,
  Johannah, Jennifer
• Сім'я Duggar використовує
  узгодження іменування
• Погана ідея для сім'ї
• Гарна ідея для бази даних
• Немає певних правил, просто слідуйте власній
  угоді, яка вам зручна

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Узгодження іменування — як?
• Оберіть одне і строго слідуйте йому:
  camelCase, PascalCase, under_scores і т.д.
• Чому?
    • Чистіший код
    • Логічні з'єднання
    • Психічне здоров'я вас та майбутніх
      розробників
• Явно називайте обмеження (constraints)
• Не використувуйте ключові слова як імена
  стовбців


 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Нормалізація
 Ключ, Повний ключ, і нічого крім
 ключа. Допоможи мені Кодде.




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Нормалізація та денормалізація
• Процес зміни дизайну бази даних
  для створення схеми таблиць у
  нормалній формі.
• Нормальні форми: 1NF, 2NF, 3NF,
  EKNF, BCNF, 4NF, 5NF, DKNF,
  6NF для OLTP (онлайн обробки
  транзакцій) швидкі із сталим
  станом
• NF2 або N1NF для OLAP(онлайн
  обробка аналітики) часто
  вимагає денормалізації для
  прискорення
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Не нормалізований набір




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Нормалізований набір




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Навіщо нормалізувати?
• Запобігаємо дублюванню даних
• Дозволяємо користувачам робити
  власні зміни
• Запобігаємо аномальності даних
• Інструменти третіх сторін очікують
  нормалізовані дані
• Іноді треба де-нормалізовувати,
  але уникайте ранньої оптимізації

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Індексування
 Знайдіть книжку Ван Пельта без
      каталогу. Будьласка.




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Типи індексів
• Unique – гарантує що ключ індексування є
  не містить дубльованих даних
• Full-text – використовується для
  індексування великої кількості тексту
• Included columns – дозволяє додати
  неключові стовбчики
• Indexed views – зберігає у базі,
  використовує оптимізатор
• XML – властивості, атрибути та елементи
• Filtered – фільт по існуючому індексу
• Spatial – геометричний або географічний
• Інші...
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Індексування: основні ключі
         Основний ключ (primary key)
                    ==
             унікальний індекс




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Зауваження індексування: таблиці
 Цілочислений основний ключ у
 кожній таблиці


SELECT s.term, s.section_id, COUNT(penn_id)
FROM flat_section s JOIN flat_enrollment e
ON s.section_id = e.section_id AND s.term =
e.term GROUP BY s.term, s.section_id


Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Зауваження індексування: таблиці
• Чому цілочисельні ключі?
    • Вузькі індекси = більше індексних рядків на
      сторінку = меньше сторінок = меньше
      читань
    • Вузькі чисельні індекси = більш ефективні
      join'и
    • Можуть допомогти у відновленні після
      спотворення даних
    • Сурогатні (не з даних програми) ключі більш
      стійкі до майбутнього ніж натуральні ключі
        – Дозволяють зміну асоційованих полів
        – Не чутливі до зовнішніх змін даних
        – Більш гнучкі для майбутніх змін (архів)
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Зауваження індексування: стовбці




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Зауваження індексування: стовбці
• Зєднання стовбців: індексовані
  цілочисельні значення – ти друг!
• Як стовбці використовуються у запитах?
• Відношення: 1-до-1, 1-до-багатьох,
  багато-до-багатьох
• Тип даних
• Індексування багатьох стовбців: в міру
• Ціль №1: швидкодія!
• Ціль №2: якнайменьший індексний файл

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: типи даних
• Беріть до уваги
  довжину стовбчика
• Знайте необхідний
  рівень точності
• Залиште собі простір
  для росту
• Відповідність до дня,
  хвилини,
  мілісекунди?
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: видалення
• Логічне проти фізичного




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: навантажуйте базу
• Коли це має сенс – дозвольте
  базі працювати за вас
• Зовнішні ключі
• Унікальні індекси
• Перевірочні обмеження
• Обмеження за замовчуванням
• Трігери

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: master tables
• Вони усюди:
    • Звіти
    • Інтерфейси
    • Пошуки
    • і т.д.

• Засіб для одночасного впровадження
  нормалізації та індексування
• Компоненти надійної мастер таблиці:
    • Сурогатні ключі
    • Внутрішній код/назва (не міняється)
    • Опис для публічного перегляду (міняється)
    • Дата створення та оновлення
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: час жувати!
• “Тимчасові”
  проекти
• Балансуйте між
  сьогоднішнім
  прагматизмом та
  завтрашнім болем
• Робіть code review
  швидше
Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: експериментуйте
• Експерементуйте
  з вашою базою та
  запитами для
  покращення часу
  та планів
  виконання


Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Найкращі практики: будьте впевнені!
• Клопочіться про фідбек по дизайну бази,
  радше ніж по кодінг стандарту
• Питайте думку інших та діліться власними
  думками!
• Більше очей = кращий дизайн бази даних
• Більше ідей = кращий дизайн бази даних




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Гумор




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Посилання
• http://en.wikipedia.org/wiki/Database
• http://db.cs.berkeley.edu/papers/fntdb07-
  architecture.pdf
• http://philip.greenspun.com/sql/index.html
• http://www.swegler.com/becky/blog/wp-
  content/uploads/2009/10/wcit-techtalk-database-
  design.pdf
• http://en.wikipedia.org/wiki/Database-
  centric_architecture
• http://michaeljswart.com/2011/01/ridiculously-
  unnormalized-database-schemas-part-one/
•
•Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Питання та обговорення
 “Анатолій Охотніков”
 <aokhotnikov@softjourn.com>




Copyright © 2000-2011 Softjourn, Inc. All rights reserved

More Related Content

Viewers also liked

ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)Anatoliy Okhotnikov
 
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)Anatoliy Okhotnikov
 
Simplifying Data Center Design/ Build
Simplifying Data Center Design/ BuildSimplifying Data Center Design/ Build
Simplifying Data Center Design/ BuildSchneider Electric
 
Enterprise data center design and methodology
Enterprise data center design and methodologyEnterprise data center design and methodology
Enterprise data center design and methodologyCarlos León Araujo
 
POWER POINT PRESENTATION ON DATA CENTER
POWER POINT PRESENTATION ON DATA CENTERPOWER POINT PRESENTATION ON DATA CENTER
POWER POINT PRESENTATION ON DATA CENTERvivekprajapatiankur
 
Data center Building & General Specification
Data center Building & General Specification Data center Building & General Specification
Data center Building & General Specification Ali Mirfallah
 
DataCenter:: Infrastructure Presentation
DataCenter:: Infrastructure PresentationDataCenter:: Infrastructure Presentation
DataCenter:: Infrastructure PresentationMuhammad Asad Rashid
 

Viewers also liked (15)

Php unit (eng)
Php unit (eng)Php unit (eng)
Php unit (eng)
 
ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)
 
Xdebug (ukr)
Xdebug (ukr)Xdebug (ukr)
Xdebug (ukr)
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)
 
Linux introduction (eng)
Linux introduction (eng)Linux introduction (eng)
Linux introduction (eng)
 
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
 
Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)
 
Ldap introduction (eng)
Ldap introduction (eng)Ldap introduction (eng)
Ldap introduction (eng)
 
Simplifying Data Center Design/ Build
Simplifying Data Center Design/ BuildSimplifying Data Center Design/ Build
Simplifying Data Center Design/ Build
 
Enterprise data center design and methodology
Enterprise data center design and methodologyEnterprise data center design and methodology
Enterprise data center design and methodology
 
Agile (IF PM Group) v2
Agile (IF PM Group) v2Agile (IF PM Group) v2
Agile (IF PM Group) v2
 
POWER POINT PRESENTATION ON DATA CENTER
POWER POINT PRESENTATION ON DATA CENTERPOWER POINT PRESENTATION ON DATA CENTER
POWER POINT PRESENTATION ON DATA CENTER
 
Data center Building & General Specification
Data center Building & General Specification Data center Building & General Specification
Data center Building & General Specification
 
DataCenter:: Infrastructure Presentation
DataCenter:: Infrastructure PresentationDataCenter:: Infrastructure Presentation
DataCenter:: Infrastructure Presentation
 

Similar to Db design (ukr)

Continuous Integration - Анатолій Охотніков
Continuous Integration - Анатолій ОхотніковContinuous Integration - Анатолій Охотніков
Continuous Integration - Анатолій ОхотніковIgor Bronovskyy
 
Різноманітя баз даних (додаток до доповіді)
Різноманітя баз даних (додаток до доповіді)Різноманітя баз даних (додаток до доповіді)
Різноманітя баз даних (додаток до доповіді)Olga Tomakhina
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
Тема 5. Простори даних.
Тема 5. Простори даних.Тема 5. Простори даних.
Тема 5. Простори даних.Oleg Nazarevych
 
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...Oleg Nazarevych
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADayОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADayGoQA
 
Роман Якобчук "Real-life React"
Роман Якобчук "Real-life React"Роман Якобчук "Real-life React"
Роман Якобчук "Real-life React"Fwdays
 
реферат з інформатики
реферат з інформатикиреферат з інформатики
реферат з інформатикиTanyushka Bora-Bora
 
Руйнуємо .NET Міфи
Руйнуємо .NET МіфиРуйнуємо .NET Міфи
Руйнуємо .NET МіфиSerhiy Kalinets
 
Lecture 101 - Intro to databases
Lecture 101 - Intro to databasesLecture 101 - Intro to databases
Lecture 101 - Intro to databasesAndrii Kopp
 
лекція 1 введення в бд та іс
лекція 1 введення в бд та іслекція 1 введення в бд та іс
лекція 1 введення в бд та ісpogromskaya
 
Архіви у сучасному форматі
Архіви у сучасному форматіАрхіви у сучасному форматі
Архіви у сучасному форматіMMI Group
 
Електронний архів
Електронний архівЕлектронний архів
Електронний архівE_L_A_U
 

Similar to Db design (ukr) (20)

Continuous Integration - Анатолій Охотніков
Continuous Integration - Анатолій ОхотніковContinuous Integration - Анатолій Охотніков
Continuous Integration - Анатолій Охотніков
 
Різноманітя баз даних (додаток до доповіді)
Різноманітя баз даних (додаток до доповіді)Різноманітя баз даних (додаток до доповіді)
Різноманітя баз даних (додаток до доповіді)
 
Sql db
Sql dbSql db
Sql db
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Тема 5. Простори даних.
Тема 5. Простори даних.Тема 5. Простори даних.
Тема 5. Простори даних.
 
cpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basicscpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basics
 
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...
Тема 10. Стандарти ANSI ASC X12, ISO 11179. Підтримка стандарту Дублінського ...
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADayОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
 
Роман Якобчук "Real-life React"
Роман Якобчук "Real-life React"Роман Якобчук "Real-life React"
Роман Якобчук "Real-life React"
 
реферат з інформатики
реферат з інформатикиреферат з інформатики
реферат з інформатики
 
Руйнуємо .NET Міфи
Руйнуємо .NET МіфиРуйнуємо .NET Міфи
Руйнуємо .NET Міфи
 
MOM
MOMMOM
MOM
 
Lecture 101 - Intro to databases
Lecture 101 - Intro to databasesLecture 101 - Intro to databases
Lecture 101 - Intro to databases
 
лекція 1 введення в бд та іс
лекція 1 введення в бд та іслекція 1 введення в бд та іс
лекція 1 введення в бд та іс
 
Архіви у сучасному форматі
Архіви у сучасному форматіАрхіви у сучасному форматі
Архіви у сучасному форматі
 
урок 7
урок 7урок 7
урок 7
 
#1 C# basics
#1 C# basics#1 C# basics
#1 C# basics
 
Java script + extjs
Java script + extjsJava script + extjs
Java script + extjs
 
#0 Вступна лекція
#0 Вступна лекція#0 Вступна лекція
#0 Вступна лекція
 
Електронний архів
Електронний архівЕлектронний архів
Електронний архів
 

Db design (ukr)

  • 2. Softjourn Inc. RDBMS Design Anatoliy Okhotnikov Softjourn Inc.
  • 3. Про що буде йти мова ● Типи баз даних ● Реляційні бази даних (OLTP) ● Обробка транзакцій (ACID) ● Database-centric архітектура ● Моделювання даних. Узгодження іменування ● Нормалізація та денормалізація ● Індексування. Найкращі практики ● Посилання. Питання та обговорення
  • 4. Про що не буде йти мова ● Нереляційні бази даних ● OLAP/структури підтримки прийняття рішень ● Інтенсивна теорія ● Інтенсивна практика
  • 5. Типи баз даних • Активна – event-driven, безпека статистика • Хмара – доступ через веб-браузер або API • Сховище – архів операційних, зовнішні дані • Розподілена – модульна, багато як одна • Документ-орієнтована – управління док-ами • Вбудована – інтегрована у програму • Федеративна(гетерогенна) – різні разом • Граф – варіант NoSQL із структурами графу • У-пам'яті – дуже швидка, знаходиться у пам'яті • Знань – для управління знаннями, по темам • Паралельна – покращення через паралелізацію Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 6. Реляційні бази даних • “A Relational Model of Data for Large Shared Data Banks”, стаття яку написав Edgar Frank "Ted" Codd працюючи дослідницький лабораторії IBM у San Jose. • Обпублікована у “Communications of the ACM” у червні 1970 року • Дослідницький проект Університету Каліфорнії у Берклі – Berkley Ingress (1973) Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 7. Реляційні: початок Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 8. Реляційні: сьогодення Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 9. Обробка транзакцій (ACID) Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 10. Обробка транзакцій (ACID) • Атомарність – результати транзакції або повністю виконані, або повінстю відмінені. • Узгодженість(цілісність) – перетворення з одного вірного стану у інший вірний стан. Транзакція вірна якщо вона не порушує обмеження цілісності. • Ізоляція – результати не видимі поки транзакція не завершена. • Довговічність(надійність) – після завершення результати збережені у постійне сховище і переживають наступні збої системи та носія. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 11. Database-centric архітектура Database- або data-centric архітектура, це архітектура ПЗ у якій база даних грає суттєву(центральну) роль. • Стандартна RDMBS (RAD) • Динамічна, table-driven логіка • Використання stored procedures • Shared DB як засіб IPC Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 12. Database vs Application centric Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 13. Моделювання даних При моделюванні ви визначаєте наступне • Які елементи даних зберігати • Яким великим може бути кожен елемент • Яку інформацію може містити елемент • Які елементи можна залишити пустими • Які елементи обмежені певними рамками • Чи і як пов'язані різні таблиці між собою Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 14. Моделювання даних • Використовуйте візуальні інструменти • Робіть реверс- інженіринг існуючої бази • Перевіряйте та будуйте зв'язки • Працюйте спільно Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 15. Узгодження іменування • Joshua, Jana, John-David, Jill, Jessa, Jinger, Josiah, Joy- Anna, Jedidiah, Jeremiah, Jason, James, Justin, Jackson, Johannah, Jennifer • Сім'я Duggar використовує узгодження іменування • Погана ідея для сім'ї • Гарна ідея для бази даних • Немає певних правил, просто слідуйте власній угоді, яка вам зручна Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 16. Узгодження іменування — як? • Оберіть одне і строго слідуйте йому: camelCase, PascalCase, under_scores і т.д. • Чому? • Чистіший код • Логічні з'єднання • Психічне здоров'я вас та майбутніх розробників • Явно називайте обмеження (constraints) • Не використувуйте ключові слова як імена стовбців Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 17. Нормалізація Ключ, Повний ключ, і нічого крім ключа. Допоможи мені Кодде. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 18. Нормалізація та денормалізація • Процес зміни дизайну бази даних для створення схеми таблиць у нормалній формі. • Нормальні форми: 1NF, 2NF, 3NF, EKNF, BCNF, 4NF, 5NF, DKNF, 6NF для OLTP (онлайн обробки транзакцій) швидкі із сталим станом • NF2 або N1NF для OLAP(онлайн обробка аналітики) часто вимагає денормалізації для прискорення Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 19. Не нормалізований набір Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 20. Нормалізований набір Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 21. Навіщо нормалізувати? • Запобігаємо дублюванню даних • Дозволяємо користувачам робити власні зміни • Запобігаємо аномальності даних • Інструменти третіх сторін очікують нормалізовані дані • Іноді треба де-нормалізовувати, але уникайте ранньої оптимізації Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 22. Індексування Знайдіть книжку Ван Пельта без каталогу. Будьласка. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 23. Типи індексів • Unique – гарантує що ключ індексування є не містить дубльованих даних • Full-text – використовується для індексування великої кількості тексту • Included columns – дозволяє додати неключові стовбчики • Indexed views – зберігає у базі, використовує оптимізатор • XML – властивості, атрибути та елементи • Filtered – фільт по існуючому індексу • Spatial – геометричний або географічний • Інші... Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 24. Індексування: основні ключі Основний ключ (primary key) == унікальний індекс Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 25. Зауваження індексування: таблиці Цілочислений основний ключ у кожній таблиці SELECT s.term, s.section_id, COUNT(penn_id) FROM flat_section s JOIN flat_enrollment e ON s.section_id = e.section_id AND s.term = e.term GROUP BY s.term, s.section_id Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 26. Зауваження індексування: таблиці • Чому цілочисельні ключі? • Вузькі індекси = більше індексних рядків на сторінку = меньше сторінок = меньше читань • Вузькі чисельні індекси = більш ефективні join'и • Можуть допомогти у відновленні після спотворення даних • Сурогатні (не з даних програми) ключі більш стійкі до майбутнього ніж натуральні ключі – Дозволяють зміну асоційованих полів – Не чутливі до зовнішніх змін даних – Більш гнучкі для майбутніх змін (архів) Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 27. Зауваження індексування: стовбці Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 28. Зауваження індексування: стовбці • Зєднання стовбців: індексовані цілочисельні значення – ти друг! • Як стовбці використовуються у запитах? • Відношення: 1-до-1, 1-до-багатьох, багато-до-багатьох • Тип даних • Індексування багатьох стовбців: в міру • Ціль №1: швидкодія! • Ціль №2: якнайменьший індексний файл Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 29. Найкращі практики: типи даних • Беріть до уваги довжину стовбчика • Знайте необхідний рівень точності • Залиште собі простір для росту • Відповідність до дня, хвилини, мілісекунди? Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 30. Найкращі практики: видалення • Логічне проти фізичного Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 31. Найкращі практики: навантажуйте базу • Коли це має сенс – дозвольте базі працювати за вас • Зовнішні ключі • Унікальні індекси • Перевірочні обмеження • Обмеження за замовчуванням • Трігери Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 32. Найкращі практики: master tables • Вони усюди: • Звіти • Інтерфейси • Пошуки • і т.д. • Засіб для одночасного впровадження нормалізації та індексування • Компоненти надійної мастер таблиці: • Сурогатні ключі • Внутрішній код/назва (не міняється) • Опис для публічного перегляду (міняється) • Дата створення та оновлення Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 33. Найкращі практики: час жувати! • “Тимчасові” проекти • Балансуйте між сьогоднішнім прагматизмом та завтрашнім болем • Робіть code review швидше Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 34. Найкращі практики: експериментуйте • Експерементуйте з вашою базою та запитами для покращення часу та планів виконання Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 35. Найкращі практики: будьте впевнені! • Клопочіться про фідбек по дизайну бази, радше ніж по кодінг стандарту • Питайте думку інших та діліться власними думками! • Більше очей = кращий дизайн бази даних • Більше ідей = кращий дизайн бази даних Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 36. Гумор Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 37. Посилання • http://en.wikipedia.org/wiki/Database • http://db.cs.berkeley.edu/papers/fntdb07- architecture.pdf • http://philip.greenspun.com/sql/index.html • http://www.swegler.com/becky/blog/wp- content/uploads/2009/10/wcit-techtalk-database- design.pdf • http://en.wikipedia.org/wiki/Database- centric_architecture • http://michaeljswart.com/2011/01/ridiculously- unnormalized-database-schemas-part-one/ • •Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 38. Питання та обговорення “Анатолій Охотніков” <aokhotnikov@softjourn.com> Copyright © 2000-2011 Softjourn, Inc. All rights reserved