Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa...

29
www.essensys.ro Sorin Grecu

Transcript of Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa...

Page 1: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

www.essensys.roSorin Grecu

Page 2: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

De la specificatii

la o baza de date SQL Server

Page 3: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

Agenda

Specificatii

Mediul de lucru

Baza de date

Performanta

Link-uri utile

Q & A

1

2

3

4

5

6

Page 4: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

1 Specificatii

Page 5: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru

Page 6: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru

• Limbajul T-SQL

• Tipuri de date

• Notiuni

• Reguli

• IDE-uri

Page 7: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Limbajul T-SQL

• T-SQL = Transact SQL = implementarea Microsoft a SQL Standard.

• Este limbajul cu care aplicatiile interactioneaza cu SQL DB Engine.

• Contine:

• comenzi (DECLARE, SELECT, CREATE),

• variabile (@NumberOfRecords),

• elemente de control de flux (CASE, IF, WHILE),

• elemente de limbaj (NULL, --, /* */)

• operatori (aritmetici, logici, de comparare, de asignare)

• Nu este case-sensitive - nici pentru comenzi, nici pentru denumirile

variabilelor sau a tabelelor (SELECT vs select vs Select)

Page 8: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Tipuri de date

• Numerice

• Exacte (bit, decimal, numeric, int, smallint, bigint, money, smallmoney,

tinyint)

• Aproximative (float, real)

• Data si timp (date, time, datetime, datetime2, smalldatetime, datetimeoffset)

• String (char, varchar, nchar, nvarchar)

• Binare (binary, varbinary)

• Altele (timestamp, hierarchyid, uniqueidentifier, xml, table)

Page 9: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Notiuni

• Tabela = o colectie de inregistrari organizate pe coloane.

• Primary Key (PK) = o coloana care contine valori nenule, unice. Serveste la

identificarea in mod unic a fiecarui rand din tabela.

• Index = o structura asociata cu o tabela care permite regasirea rapida a

inregistrarilor.

• Foreign Key (FK) = o relatie intre doua tabele. Asociaza randuri dintr-o tabela

cu randuri din alta tabela. Este o constrangere persistenta.

• Join = o alaturare de tabele bazata pe o relatie logica intre ele.

Page 10: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Notiuni

• Relatii = tipuri de legaturi intre tabele. Pot fi:

• 1 : 1 – one-to-one

• 1 : n – one-to-many

• n : m – many-to-many

• Normalizare = metoda formala de identificare a atributelor unice ale entitatilor

unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii

redundante.

• Tranzactie = operatie sau grup de operatii care se efectueaza impreuna.

Page 11: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Notiuni

• CRUD = acronim privind operatiile asupra unei tabele

• C = Create = INSERT

• R = Retrieve = SELECT

• U = Update = UPDATE

• D = Delete = DELETE

Cele patru operatii fundamentale in lucrul cu bazele de date.

Page 12: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Notiuni

• ACID = acronim privind caracteristicile unei tranzactii

• A = atomic – totul sau nimic

• C = consistent – starea bazei de date inainte si dupa tranzactie.

• I = izolat – fiecare tranzactie se executa izolat de celelalte

• D = durabil – modificarile effectuate de tranzactie sunt persistate in baza

de date

Page 13: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Reguli

• Toate comenzile T-SQL incep cu un cuvant cheie.

DECLARE @NumardeInregistrari INT

SET @NumardeInregistrari = 0

@NumardeInregistrari = 0

Must declare the scalar variable "@NumardeInregistrari".

Incorrect syntax near '@NumardeInregistrari'.

Page 14: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Reguli

• Delimitatorul pentru stringuri este apostroful ’’

DECLARE @DenumireCurs VARCHAR(100) = 'Programarea orientata pe obiecte'

Page 15: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Reguli

• Comenzile pot fi scrise pe mai multe randuri

SELECT [MaterieId],[Denumire],[Prescurtare],[Detalii]

FROM [Materie]

DECLARE @DenumireCurs VARCHAR(100) = 'Programarea orientata pe obiecte'

Page 16: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru Reguli

• Obiectele pot fi referite folosind notatia cu 4 elemente

SELECT [MaterieId],[Denumire],[Prescurtare],[Detalii]

FROM [ESSENSYS-CURS].[UPBOrar].[dbo].[Materie]

• ESSENSYS-CURS = serverul SQL

• UPBOrar = baza de date

• dbo = schema

• Materie = tabela

Page 17: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

2 Mediul de lucru IDE-uri

• SQL Server Management Studio (SSMS)

• Object Explorer

• Query Window

• SQL Server Profiler

• Visual Studio 2017

• Server Explorer

• Query Window

• Data and Schema Compare

Intellisense, syntax checking, debugger, execution plan

Page 18: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

3 Baza de date

DEMO

Page 19: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

Page 20: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

Page 21: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

Page 22: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

Simptome ale unei probleme de performanță:

aplicațiile merg greu

uneori apar erori de timeout

serverul SQL ocupă 99% din procesor și / sau din memorie

IO este foarte mare

Page 23: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

DEV QA STAGE PROD

număr de înregistrări Relativ mic Mediu Ridicat Ridicat

încărcarea serverului SQL Scăzută Scăzută Medie Mare

număr de utilizatori Mic Mic Mic Mare

concurență Scăzută Medie (artificială) Medie (artificială) Mare (reală)

utilizarea bazelor de date Intermitentă Intermitentă Continuă Continuă

număr de servere SQL,pentru aplicații distribuite

Mic Mic Mic Mare (zeci, sute)

aplicații sau baze de date satelit

Fără Poate, cu încărcare minimă

Da, cu încărcare medie

Da, cu încărcare mare

Page 24: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

4 Performanta

Tooluri:

• SQL Server Profiler

• Execution plan

• Testare, testare, testare!

Page 25: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

5 Link-uri utile

Database Engine & tools

SQL Server downloads

SQL Server Management Studio (SSMS)

SQL Server Tools

Documentatie

SQL Server Database Engine

Tutorial: SQL Server Management Studio

Tutorial: Getting Started with the Database Engine

Tutorial: Writing Transact-SQL Statements

Performance Monitoring and Tuning Tools

Page 26: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

• Revizuirea specificatiilor

• Mediul de lucru – SSMS

• Notiuni si reguli despre T-SQL

• Creare tabele si relatii

• Verificare specificatii

Agenda

Page 27: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

6 Q & A

Page 28: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

Exercitii:

• Cititi specificatia si identificati elementele

corespondente in baza de date

• Extindeti baza de date cu functionalitati

(view-uri)

• Documentati noile functionalitati si extindeti

documentatia proiectului

Page 29: Sorin Grecu - academiadesoftware.ro · unei baze de date si organizarea tabelelor astfel incat sa nu existe informatii redundante. • Tranzactie = operatie sau grup de operatii care

www.essensys.roSorin Grecu