SlideShare a Scribd company logo
Jak udokumentować bazę danych
Piotr Kononow
15 marzec 2016
Agenda
I. Po co dokumentować
II. Czym jest dokumentacja bazy danych
III. Jak dokumentować
I. PO CO
DOKUMENTOWAĆ
Potrzeba analizy danych rośnie
• Wyszukiwania w Google
Niejasne
• MTL_SYSTEM_ITEMS_B
• tP
• BEN_PRTT_RMT_RQST_CTFN_PRVDD
• RSRCSECX
• ATTRIBUTE_5
Skomplikowane
Duże
Tabel i widoków:
• Przykładowa aplikacja: 3 000
• TETA: 9 000
• Oracle e-Business Suite: 55 000
• SAP: 130 000
PA_ADW_R_ACT_CMT_B_V.TXN_ADW_NOTIFY_FLAG
Jak udokumentować bazę danych
W jakich sytuacjach to pomocne?
• Tworzenie oprogramowania
• Hurtownie danych, BI, …
• Wdrożenia ERP, CRM, billing…
• Integracja
• Rozwój i utrzymanie
• Migracja do nowego systemu
II. CZYM JEST
DOKUMENTACJA BAZY DANYCH
1. Słownik danych (data dictionary)
Table: employee
Table holds past, current and future company employees.
Column Data type Description
BusinessEntityID int Primary key for Employee records. Foreign key
to BusinessEntity.BusinessEntityID.
NationalIDNumber nvarchar(15) Unique national identification number such as
a social security number.
LoginID nvarchar(256) Network login.
OrganizationNode hierarchyid Where the employee is located in corporate
hierarchy.
OrganizationLevel smallint The depth of the employee in the corporate
hierarchy.
JobTitle nvarchar(50) Work title such as Buyer or Sales
Representative.
1. Słownik danych – stany
Employee row can be in following statuses based on dates:
• Future - start_date > today or start_date null
• Current - start_date <= today and (end_date > today or null)
• Past – end_date < today
1. Słownik danych – lista wartości
Column Description
MaritalStatus M = Married, S = Single
CurrentFlag 0 = Inactive, 1 = Active
1. Słownik danych – API
To modify and fetch data use this:
• employee_get – returns specified employee row
• employees_get – returns selected employees
• employee_insert – use this to insert new employee
• employee_update – use this to update employee row
• employee_delete – use this to delete employee
1. Słownik danych – używane przez
View: employees_active_v
Used by: Employees search form,
Active employees report
1. Słownik danych – źródła
Table: employee
Data source: Employees form, sync_employees
Column Source
MaritalStatus Employees form
NationalIDNumber Employees form
Number emp_no trigger
Score Data warehouse, calc_employees_scores
1. Słownik danych – metadane
Table: po_headers_all (Purchase orders)
Module: Purchasing
Responsible: Piotr Kononow
Column
po_header_id
po_header_number [DEPRECATED]
po_header_code
quantity
1. Słownik danych – wartość dodana
Table: invoices
Column Description
number Invoice number
date Invoice date
1. Słownik danych – wartość dodana
Table: invoices
Column Description
number Invoice autogenerated number, starting from 1 each
year. Number is generated when invoice gets
approved.
date Invoice issue date. Null for working copy invoices. Set
to today’s date on invoice approval.
2. Diagram Związków Encji (ERD)
2. Diagram Związków Encji (ERD)
Nie chodzi o to:
Chodzi o to:
3. Dokumentacja kodu
Metadane, historia zmian
III. JAK
DOKUMENTOWAĆ
Na bieżąco i stale
Dobra praktyka:
Czym dokumentować?
1. Excel, Word, notatnik
Czym dokumentować?
1. Excel, Word, notatnik
2. Konsola
Jak udokumentować bazę danych
Czym dokumentować?
1. MS Excel, MS Word, notatnik
2. Konsola
3. Dedykowane narzędzia
• Redgate SQL Doc
• Apex SQL Doc
• Dataedo
Dedykowane narzędzia
Dedykowane narzędzia
Dedykowane narzędzia
http://tools.dataedo.com
Dedykowane narzędzia
Darmowe licencje
http://dataedo.com/3camp
Pytania?
Dziękuję za uwagę!
Piotr Kononow
Piotr.Kononow(at)logicsystems.com.pl

More Related Content

PPTX
Operator Overloading In Python
PDF
Exception handling in plsql
PDF
STL in C++
PPSX
IM02: Database Language
PPTX
Datastructures in python
PPTX
Functions in c language
PPTX
Data structure array
PPT
Creating a database
Operator Overloading In Python
Exception handling in plsql
STL in C++
IM02: Database Language
Datastructures in python
Functions in c language
Data structure array
Creating a database

What's hot (20)

PPTX
Unit I - Evaluation of expression
PPTX
Sql commands
PPTX
Database constraints
PPT
Arrays and structures
PPT
Linked lists
PPTX
Introduction to database & sql
PPTX
Role of Database Management in Information Systems
PPTX
PPT
PL/SQL Introduction and Concepts
PPTX
Introduction to Data Structures & Algorithms
PDF
Python Basics
PPTX
linked list in data structure
PPTX
C-Programming C LIBRARIES AND USER DEFINED LIBRARIES.pptx
PDF
Python cheat-sheet
PPT
Views, Triggers, Functions, Stored Procedures, Indexing and Joins
PPTX
Operators in Python
PPTX
Date time function in Database
PDF
03 function overloading
PDF
Microsoft SQL Server Query Tuning
PPT
Structure in C
Unit I - Evaluation of expression
Sql commands
Database constraints
Arrays and structures
Linked lists
Introduction to database & sql
Role of Database Management in Information Systems
PL/SQL Introduction and Concepts
Introduction to Data Structures & Algorithms
Python Basics
linked list in data structure
C-Programming C LIBRARIES AND USER DEFINED LIBRARIES.pptx
Python cheat-sheet
Views, Triggers, Functions, Stored Procedures, Indexing and Joins
Operators in Python
Date time function in Database
03 function overloading
Microsoft SQL Server Query Tuning
Structure in C
Ad

Viewers also liked (8)

PDF
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
PDF
HTTPS bez wymówek
PDF
ORM - tuningujemy podejście do mapowania
PDF
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
PDF
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
PPT
Systemy automatycznej informacji sterowanej głosem – Kolejna rewolucja w IT p...
PDF
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
PDF
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Ochrona podatnych webaplikacji za pomocą wirtualnych poprawek
HTTPS bez wymówek
ORM - tuningujemy podejście do mapowania
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
No pressure, no diamonds. Rzecz o łamaniu zasad w projektach.
Systemy automatycznej informacji sterowanej głosem – Kolejna rewolucja w IT p...
Odtwarzanie multimediów w HTML5, czyli Player przez duże „P”
Wykorzystanie języka Kotlin do aplikacji na platformie Android
Ad

More from 3camp (20)

PDF
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
PDF
Learn you some rx for the greater good
PDF
Google App Engine i Google Play Services w Twoich aplikacjach
PDF
Reakcja łańcuchowa, czyli React.js w praktyce
PPTX
AngularJS (nie) nadaje się do dużego projektu
PDF
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
PDF
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
PDF
Artur Senk, OKE Poland, Big Data na zakupach
PDF
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
PPTX
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
PDF
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
PDF
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
PDF
Marcin Szeląg, InnovationNest, Startup Risk Model
PDF
JSON, REST API
PDF
Ostatnia faza produktu: co się dzieję kiedy programista zakończył swoje zadanie
PPTX
Oculus Rift – zanurzenie w przyszłość
PDF
Druk 3d w służbie medycyny i przemysłu
PPTX
Bitcoin – waluta globalna
PDF
Is social media next waste?
PPTX
W poszukiwaniu właściwych pytań i jednoznacznych odpowiedzi. Analiza biznesow...
W poszukiwaniu procesu doskonałego. Wdrożenie Scruma, Continuous Integrations...
Learn you some rx for the greater good
Google App Engine i Google Play Services w Twoich aplikacjach
Reakcja łańcuchowa, czyli React.js w praktyce
AngularJS (nie) nadaje się do dużego projektu
Przemysław Bartkowiak - Sam ustalasz ile za to zapłacisz – czyli nowy wymiar ...
Mirek Wąsowicz - Segment jednego, dokąd zmierza marketing online?
Artur Senk, OKE Poland, Big Data na zakupach
Piotr Macuk, Konfeo.com, Programista i biznes – plusy i minusy własnej działa...
Marcin Maj, Kainos - QA – wartko, zmiennie i interdyscyplinarnie
Jak przesiąść się na rower na dwóch kółkach? Od trzyosobowego startupu do spó...
Łukasz Brzeziński - Jak zarabiać z Wikingami? Czyli monetyzacja portalu inter...
Marcin Szeląg, InnovationNest, Startup Risk Model
JSON, REST API
Ostatnia faza produktu: co się dzieję kiedy programista zakończył swoje zadanie
Oculus Rift – zanurzenie w przyszłość
Druk 3d w służbie medycyny i przemysłu
Bitcoin – waluta globalna
Is social media next waste?
W poszukiwaniu właściwych pytań i jednoznacznych odpowiedzi. Analiza biznesow...

Jak udokumentować bazę danych

Editor's Notes

  • #5: Potrzeba analizy danych cały czas rośnie. Dziś już nie wystarczy że zbieramy dane w zamkniętych bazach. Chcemy korzystać z danych. Tutaj trendy wyszukiwania haseł w Google dotyczące analizy danych. Jak widać
  • #6: Bazy danych są dość zagmatwane. Tutaj przykład paru tabel i kolumn z gotowych aplikacji
  • #7: Bazy danych są skomplikowane. Tutaj przykładowa tabela jednej z aplikacji ERP. 130 kolumn. Nie jest to żadna wyjątkowa tabela.
  • #11: Ja i nasz zespół mieliśmy okazję pracować przy bardzo różnorodnych projektach W rozwoju oprogramowania jest to narzędzie komunikacji między projektantami i programistami. Dokumentacja ma duże znaczenie w przypadku hurtowni danych, w 2 zastosowaniach – po pierwsze potrzebujemy dokumentacji żeby znaleźć dane w systemach źródłowych. Bardzo często w firmie nie ma nikogo kto projektował czy choćby zna strukturę bazy. W takiej sytuacji zespół wdrożeniowy spędza dni a nawet tygodnie szukając danych. Po drugie, sama hurtownia danych powinna być udokumentowana. Hurtownie danych tworzy się po to aby tworzyć na niej raporty i wykonywać zapytania i analizy a więc dokumentacja danych jest szczególnie istotna. Kolejny przykład to wdrożenia gotowych aplikacji, klas ERP, CRM, systemów billingowych i tym podobnych. Jak już wspomniałem bazy danych gotowych aplikacji są ogromne, wykorzystywana jest jedynie część obiektów, tworzone są nowe, a masa tabel czy kolumn zmienia swoje znaczenie (patrz attribute_5). Dlatego istotne jest aby oprócz dokumentacji producenta dokumentować konkretne wdrożenie. Ma to znaczenie także przy integracji systemów która często odbywa się na poziomie bazy danych i my musimy wiedzieć skąd pobrać dane i gdzie i jak je wstawić. Wspomniałem o rozwoju oprogramowania, a jeszcze większe znaczenie dokumentacja ma przy utrzymaniu i dalszym rozwoju gdzie często już nikt nie pamięta szczegółów albo wręcz nie ma już nikogo kto daną apliakcje tworzył I ostatni przypadek – gdy wdrażamy nowy system, nigdy nie myślimy o tym że za 10 czy 20 lat będziemy go chcieli zastąpić nowym. Będzie wtedy trzeba było zmigrować dane, a dostawca czy zespół wdrożeniowy obecnego systemu nie będzie zainteresowany pomocą lub go już nie będzie. W takiej sytuacji dostawca nowego systemu będzie musiał ponieść duży koszt odszyfrowania struktury danych, a co gorsze będzie bardzo duże ryzyko utraty bardzo ważnych danych. Wszystkie te spostrzeżenia wynikają z mojego doświadczenia i gdybyśmy przy tych projektach mieli porządną dokumentację oszczędzilibyśmy bardzo dużo czasu i problemów.
  • #22: Niewiele elementów – jeden temat, jeżeli za duże to podzielić Tylko główne kolumny Minimum detali, maksimum informacji
  • #23: Nie widać relacji Wszystkie kolumny Typy danych!
  • #24: Minimum detali, maksimum informacji Jeden temat, obszar Wiele mniejszych w miejsce jednego dużego Maks. 30 obiektów
  • #25: Minimum detali, maksimum informacji Jeden temat, obszar Wiele mniejszych w miejsce jednego dużego Maks. 30 obiektów
  • #29: Od razu, aktualizować
  • #34: Niedrogie i łatwe
  • #35: Niedrogie i łatwe
  • #36: Niedrogie i łatwe
  • #37: Niedrogie i łatwe