SlideShare a Scribd company logo
1 of 43
Microsoft Most Valuable Professional
www.aymanelhattab.com
Twitter: @AymanElhattab
class AuctionApplication
           class AuctionApplication
                  class AuctionApplication
     (     (      (                                       App
            int id;
      int id;      int    id;
      void MethodA();
            void MethodA();
                   string cacheTitle;
     )      void MethodB();
                   void MethodA();
           )       void MethodB();
                  )

V1    V2     V3                                 Revision History

     CREATE ALTER TABLE dbo.Auction
             TABLE ALTER TABLE dbo.Auction
                   dbo.Auction                          Database
     (       WITH CHECK ADD CONSTRAINT
                    WITH CHECK ADD CONSTRAINT
      id     INT NOT PRIMARY KEY (id)
              Au_PK Au_SK UNIQUE (name)
                      NULL,
      name VARCHAR(25) NOT NULL,
      start DATETIME NULL,
      len    INT NULL
     )
-- version 1 Add table dbo.Auction
IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL
BEGIN
CREATE TABLE dbo.Auction
(
    id    INT NOT NULL,
    name VARCHAR(25) NOT NULL,
    start DATETIME NULL,
    len   INT NULL
)
END
-- version 2 Add PK Au_PK
IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_PK' AND type = 'PK')
BEGIN
    ALTER TABLE Auction
    WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id)
END
-- version 3 Add UC Au_SK
IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_SK' AND type = ‘UQ')
BEGIN
    ALTER TABLE Auction
    WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)
END
class AuctionApplication
           class AuctionApplication
                  class AuctionApplication
     (     (      (                                                             App
            int id;
      int id;      int    id;
      void MethodA();
            void MethodA();
                   string cacheTitle;
     )      void MethodB();
                   void MethodA();
           )       void MethodB();
                  )                          Source-controlled and
                                                deployed scripts
V1    V2     V3                              do not need to match!   Revision History

     CREATE CREATE CREATE dbo.Auction
             TABLE dbo.Auction dbo.Auction
                    TABLE TABLE                                              Logical In-
     (      (      (                                                          Memory
      id     INT NOTid NOT NULL PRIMARY KEY, KEY,
             id     INT
                      NULL,INT NOT NULL PRIMARY                              Database
      name VARCHAR(25) NOT NULL, NULL, NULL UNIQUE,
             name VARCHAR(25) NOT
                    name VARCHAR(25) NOT
      start DATETIME NULL, NULL, NULL,
             start DATETIME
                    start DATETIME
      len    INT NULL NULL NULL
             len    INT
                    len    INT
     )      )      )
CREATE CREATE CREATE dbo.Auction
               TABLE dbo.Auction dbo.Auction
                      TABLE TABLE                                 Logical In-
       (      (      (                                             Memory
        id     INT NOTid NOT NULL PRIMARY KEY, KEY,
               id     INT
                        NULL,INT NOT NULL PRIMARY                 Database
        name VARCHAR(25) NOT NULL, NULL, NULL UNIQUE,
               name VARCHAR(25) NOT
                      name VARCHAR(25) NOT
        start DATETIME NULL, NULL, NULL,
               start DATETIME
                      start DATETIME
        len    INT NULL NULL NULL
               len    INT
                      len    INT
       )      )      )

V1       V2       V3                                        Revision History

        New                                                        Incremental
     Deployment        CREATE TABLE dbo.Auction                    Deployment
                            ALTER TABLE dbo.Auction
                       (
                             WITH CHECK ADD CONSTRAINT
                        id     INT NOT NULL PRIMARY KEY,
                              Au_SK UNIQUE (name)
                        name VARCHAR(25) NOT NULL UNIQUE,
                        start DATETIME NULL,                               V2
                        len    INT NULL
                       )
Background Analysis:
        Source                                          Interpret,
       Database                                        analyze and
                Reverse engineer                         validate
                schema into DDL artifacts             Schema Model


Database Project
                                                                          Build   .dbschema
                                                      Schema Model                    file
DDL SQL Artifacts




                    Compose model representation
                    from source code fragments!
Target
.dbschema                                                       Database
    file




            Schema Model                 Schema Model



                           Model Diff                             Plan Executors

                                                                         .SQL



                            Deployment
                              Engine         Incremental Target Update
TFS




                Source Control
                 Check in to
DBDev
DBA

                                                   Staging
                                                  Database

        Database                 Import schema   Production
         Project
                                                  Database
•Sync
                                   Dev           •Check-out
                                   Env           •Edit/Refactor
                                                 •Generate Test Data
                                                 •Database Unit Test
                Dev                              •Check-in
                Env    TFS
                                         •Work is being driven
                             Dev          and tracked via work items
                             Env         •Other team members can pick up
                                          changes
DBDev
DBA

                                                              Staging
                                                             Database
 TFS Shelving
 allows DBA            Dev
 to provide guidance   Env                                  Production
 and evaluate work                                           Database
Daily
                                                         Test
                                            Build      Database
                                           Output

 Can also be         TFS
 used in a
 “Continuous”              Get Latest
 build environment

DBDev                                   Daily Build      Test Lab

DBA

                                                        Staging
                                                       Database


                                                      Production
                                                       Database
TFS




                                 Sync from Label
DBDev
DBA
                                                                    Deploy
                                                                                        Staging
                                                                                       Database

                                                            SQL
                         Database
                                                           Deploy                     Production
                          Project                  Build   Script                      Database
                                                                             Verify
  Refine deploy script
http://s3.amazonaws.com/dnrtv/dnrtv_0176.wmv

http://blogs.msdn.com/b/bahill/archive/2009/03/02/offline-schema-
development.aspx

http://msdn.microsoft.com/en-us/library/dd172133.aspx

http://www.youtube.com/watch?v=JI7uiAQZHCg
http://msdn.microsoft.com/en-us/library/ms165034.aspx
TechDays Tunisia - Visual Studio & SQL Server, Better Together - Ayman El-Hattab
TechDays Tunisia - Visual Studio & SQL Server, Better Together - Ayman El-Hattab

More Related Content

What's hot

Moving from JFreeChart to JavaFX with JavaFX Chart Extensions
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsMoving from JFreeChart to JavaFX with JavaFX Chart Extensions
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsBruce Schubert
 
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...InSync2011
 
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...Stephen Chin
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...Data Con LA
 
Functional Principles for OO Developers
Functional Principles for OO DevelopersFunctional Principles for OO Developers
Functional Principles for OO Developersjessitron
 
Create custom looping procedures in sql server 2005 tech republic
Create custom looping procedures in sql server 2005   tech republicCreate custom looping procedures in sql server 2005   tech republic
Create custom looping procedures in sql server 2005 tech republicKaing Menglieng
 
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...Ontico
 
Contracts in-clojure-pete
Contracts in-clojure-peteContracts in-clojure-pete
Contracts in-clojure-petejessitron
 
What You Need to Know about Lambdas
What You Need to Know about LambdasWhat You Need to Know about Lambdas
What You Need to Know about LambdasRyan Knight
 
Standard SQL features where PostgreSQL beats its competitors
Standard SQL features where PostgreSQL beats its competitorsStandard SQL features where PostgreSQL beats its competitors
Standard SQL features where PostgreSQL beats its competitorsMarkus Winand
 
ShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlChema Alonso
 
Modern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesModern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesMarkus Winand
 
JavaFX Your Way: Building JavaFX Applications with Alternative Languages
JavaFX Your Way: Building JavaFX Applications with Alternative LanguagesJavaFX Your Way: Building JavaFX Applications with Alternative Languages
JavaFX Your Way: Building JavaFX Applications with Alternative LanguagesStephen Chin
 
Cassandra and materialized views
Cassandra and materialized viewsCassandra and materialized views
Cassandra and materialized viewsGrzegorz Duda
 

What's hot (18)

Moving from JFreeChart to JavaFX with JavaFX Chart Extensions
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsMoving from JFreeChart to JavaFX with JavaFX Chart Extensions
Moving from JFreeChart to JavaFX with JavaFX Chart Extensions
 
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...
Database & Technology 1 _ Clancy Bufton _ Flashback Query - oracle total reca...
 
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Iterative Spark Developmen...
 
Functional Principles for OO Developers
Functional Principles for OO DevelopersFunctional Principles for OO Developers
Functional Principles for OO Developers
 
Create custom looping procedures in sql server 2005 tech republic
Create custom looping procedures in sql server 2005   tech republicCreate custom looping procedures in sql server 2005   tech republic
Create custom looping procedures in sql server 2005 tech republic
 
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...
CREATE INDEX … USING VODKA. VODKA CONNECTING INDEXES, Олег Бартунов, Александ...
 
Php forum2015 tomas_final
Php forum2015 tomas_finalPhp forum2015 tomas_final
Php forum2015 tomas_final
 
Contracts in-clojure-pete
Contracts in-clojure-peteContracts in-clojure-pete
Contracts in-clojure-pete
 
What You Need to Know about Lambdas
What You Need to Know about LambdasWhat You Need to Know about Lambdas
What You Need to Know about Lambdas
 
Standard SQL features where PostgreSQL beats its competitors
Standard SQL features where PostgreSQL beats its competitorsStandard SQL features where PostgreSQL beats its competitors
Standard SQL features where PostgreSQL beats its competitors
 
ShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)SqlShmooCon 2009 - (Re)Playing(Blind)Sql
ShmooCon 2009 - (Re)Playing(Blind)Sql
 
Schemadoc
SchemadocSchemadoc
Schemadoc
 
Modern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesModern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial Databases
 
JavaFX Your Way: Building JavaFX Applications with Alternative Languages
JavaFX Your Way: Building JavaFX Applications with Alternative LanguagesJavaFX Your Way: Building JavaFX Applications with Alternative Languages
JavaFX Your Way: Building JavaFX Applications with Alternative Languages
 
Slickdemo
SlickdemoSlickdemo
Slickdemo
 
Cassandra and materialized views
Cassandra and materialized viewsCassandra and materialized views
Cassandra and materialized views
 
Mentor Your Indexes
Mentor Your IndexesMentor Your Indexes
Mentor Your Indexes
 

Viewers also liked

Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010Fitira
 
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonAplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonRomario Fajardo
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpsonJoe Arroyo Suárez
 
Integracion numerica trapecio
Integracion numerica trapecioIntegracion numerica trapecio
Integracion numerica trapeciomat7731
 
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpson
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y SimpsonAplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpson
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpsonemerdavid
 
Regla Del Trapecio
Regla Del TrapecioRegla Del Trapecio
Regla Del Trapeciopaulamelissa
 
Metodo de simpsons y de los trapecios
Metodo de simpsons y de los trapeciosMetodo de simpsons y de los trapecios
Metodo de simpsons y de los trapeciosFranklin Gualán
 
203K Rehab Loans - Before And After Example Photos
203K Rehab Loans - Before And After Example Photos203K Rehab Loans - Before And After Example Photos
203K Rehab Loans - Before And After Example PhotosGuaranteed Rate
 
South asia weekly trends week ending 20 may 2012
South asia weekly trends week ending 20 may 2012South asia weekly trends week ending 20 may 2012
South asia weekly trends week ending 20 may 2012Security Risks Asia
 
Social Business: Reno AMA 2011
Social Business: Reno AMA 2011Social Business: Reno AMA 2011
Social Business: Reno AMA 2011Bret Simmons
 
Little lumps of thoughts
Little lumps of thoughtsLittle lumps of thoughts
Little lumps of thoughtsFive by Five
 
Motti kushnir telmap mit event_final
Motti kushnir telmap  mit event_finalMotti kushnir telmap  mit event_final
Motti kushnir telmap mit event_finalMIT Forum of Israel
 
Only In 1
Only In 1Only In 1
Only In 1Mrirfan
 
Gal Israely Building It Right From The Start
Gal Israely   Building It Right From The StartGal Israely   Building It Right From The Start
Gal Israely Building It Right From The StartMIT Forum of Israel
 

Viewers also liked (20)

Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
Regla trapezoidal
Regla trapezoidalRegla trapezoidal
Regla trapezoidal
 
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de SimpsonAplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
Aplicacion Libre 2. Metodos de Trapecio y Metodos de Simpson
 
Método numérico - regla de simpson
Método numérico  - regla de simpsonMétodo numérico  - regla de simpson
Método numérico - regla de simpson
 
Integracion numerica trapecio
Integracion numerica trapecioIntegracion numerica trapecio
Integracion numerica trapecio
 
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpson
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y SimpsonAplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpson
Aplicacion A La Ingenieria Civil De La Regla Trapeziodal Y Simpson
 
Regla Del Trapecio
Regla Del TrapecioRegla Del Trapecio
Regla Del Trapecio
 
Metodo de simpsons y de los trapecios
Metodo de simpsons y de los trapeciosMetodo de simpsons y de los trapecios
Metodo de simpsons y de los trapecios
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
Work-Life Balance Is NOT a Perk
Work-Life Balance Is NOT a PerkWork-Life Balance Is NOT a Perk
Work-Life Balance Is NOT a Perk
 
203K Rehab Loans - Before And After Example Photos
203K Rehab Loans - Before And After Example Photos203K Rehab Loans - Before And After Example Photos
203K Rehab Loans - Before And After Example Photos
 
Igal Rotem
Igal Rotem Igal Rotem
Igal Rotem
 
8.16 tm silk_road_finalslides
8.16 tm silk_road_finalslides8.16 tm silk_road_finalslides
8.16 tm silk_road_finalslides
 
Silver Darlings (Herring) - Orkney's Golden Opportunity [Sarah De Rees]
Silver Darlings (Herring) - Orkney's Golden Opportunity [Sarah De Rees]Silver Darlings (Herring) - Orkney's Golden Opportunity [Sarah De Rees]
Silver Darlings (Herring) - Orkney's Golden Opportunity [Sarah De Rees]
 
South asia weekly trends week ending 20 may 2012
South asia weekly trends week ending 20 may 2012South asia weekly trends week ending 20 may 2012
South asia weekly trends week ending 20 may 2012
 
Social Business: Reno AMA 2011
Social Business: Reno AMA 2011Social Business: Reno AMA 2011
Social Business: Reno AMA 2011
 
Little lumps of thoughts
Little lumps of thoughtsLittle lumps of thoughts
Little lumps of thoughts
 
Motti kushnir telmap mit event_final
Motti kushnir telmap  mit event_finalMotti kushnir telmap  mit event_final
Motti kushnir telmap mit event_final
 
Only In 1
Only In 1Only In 1
Only In 1
 
Gal Israely Building It Right From The Start
Gal Israely   Building It Right From The StartGal Israely   Building It Right From The Start
Gal Israely Building It Right From The Start
 

Similar to TechDays Tunisia - Visual Studio & SQL Server, Better Together - Ayman El-Hattab

PHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in DevelopmentPHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in DevelopmentSteve Lange
 
Introduction to SQL Antipatterns
Introduction to SQL AntipatternsIntroduction to SQL Antipatterns
Introduction to SQL AntipatternsKrishnakumar S
 
Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Massimo Cenci
 
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMS
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMSM.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMS
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMSSupriya Radhakrishna
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptxLadduAnanu
 
Generating Code with Oracle SQL Developer Data Modeler
Generating Code with Oracle SQL Developer Data ModelerGenerating Code with Oracle SQL Developer Data Modeler
Generating Code with Oracle SQL Developer Data ModelerRob van den Berg
 
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB Rakuten Group, Inc.
 
Apache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingApache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingGerger
 
MDI Training DB2 Course
MDI Training DB2 CourseMDI Training DB2 Course
MDI Training DB2 CourseMarcus Davage
 
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Michael Rys
 
Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']Jan Helke
 
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL SystemsStrudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systemstatemura
 
SQL Saturday 28 - .NET Fundamentals
SQL Saturday 28 - .NET FundamentalsSQL Saturday 28 - .NET Fundamentals
SQL Saturday 28 - .NET Fundamentalsmikehuguet
 
Entity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic UnicornsEntity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic UnicornsRichie Rump
 
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami
 
whats New in axapta 2012
whats New in axapta 2012whats New in axapta 2012
whats New in axapta 2012H B Kiran
 

Similar to TechDays Tunisia - Visual Studio & SQL Server, Better Together - Ayman El-Hattab (20)

PHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in DevelopmentPHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in Development
 
Introduction to SQL Antipatterns
Introduction to SQL AntipatternsIntroduction to SQL Antipatterns
Introduction to SQL Antipatterns
 
Access 04
Access 04Access 04
Access 04
 
Triggers and Stored Procedures
Triggers and Stored ProceduresTriggers and Stored Procedures
Triggers and Stored Procedures
 
Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3
 
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMS
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMSM.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMS
M.TECH 1ST SEM COMPUTER SCIENCE ADBMS LAB PROGRAMS
 
Obevo Javasig.pptx
Obevo Javasig.pptxObevo Javasig.pptx
Obevo Javasig.pptx
 
Generating Code with Oracle SQL Developer Data Modeler
Generating Code with Oracle SQL Developer Data ModelerGenerating Code with Oracle SQL Developer Data Modeler
Generating Code with Oracle SQL Developer Data Modeler
 
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
KVSの性能、RDBMSのインデックス、更にMapReduceを併せ持つAll-in-One NoSQL: MongoDB
 
Apache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster ComputingApache Spark, the Next Generation Cluster Computing
Apache Spark, the Next Generation Cluster Computing
 
MDI Training DB2 Course
MDI Training DB2 CourseMDI Training DB2 Course
MDI Training DB2 Course
 
Linq
LinqLinq
Linq
 
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
 
Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']
 
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL SystemsStrudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
Strudel: Framework for Transaction Performance Analyses on SQL/NoSQL Systems
 
SQL Saturday 28 - .NET Fundamentals
SQL Saturday 28 - .NET FundamentalsSQL Saturday 28 - .NET Fundamentals
SQL Saturday 28 - .NET Fundamentals
 
Entity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic UnicornsEntity Framework: Code First and Magic Unicorns
Entity Framework: Code First and Magic Unicorns
 
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
dotNet Miami - June 21, 2012: Richie Rump: Entity Framework: Code First and M...
 
whats New in axapta 2012
whats New in axapta 2012whats New in axapta 2012
whats New in axapta 2012
 
Python database access
Python database accessPython database access
Python database access
 

More from Ayman El-Hattab

Application Lifecycle Management for Nintex Solutions
Application Lifecycle Management for Nintex SolutionsApplication Lifecycle Management for Nintex Solutions
Application Lifecycle Management for Nintex SolutionsAyman El-Hattab
 
Boost O365 User Adoption with 10 Cool Add-ins!
Boost O365 User Adoption with 10 Cool Add-ins!Boost O365 User Adoption with 10 Cool Add-ins!
Boost O365 User Adoption with 10 Cool Add-ins!Ayman El-Hattab
 
Light Up Your Intranet with 10 Cools Apps
Light Up Your Intranet with 10 Cools AppsLight Up Your Intranet with 10 Cools Apps
Light Up Your Intranet with 10 Cools AppsAyman El-Hattab
 
Web Content Management in SharePoint Server 2013 & Office 365
Web Content Management in SharePoint Server 2013 & Office 365Web Content Management in SharePoint Server 2013 & Office 365
Web Content Management in SharePoint Server 2013 & Office 365Ayman El-Hattab
 
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in Egypt
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in EgyptVisual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in Egypt
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in EgyptAyman El-Hattab
 
Using Virtual Test Labs for SharePoint
Using Virtual Test Labs for SharePoint Using Virtual Test Labs for SharePoint
Using Virtual Test Labs for SharePoint Ayman El-Hattab
 
Visual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsVisual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsAyman El-Hattab
 
Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Ayman El-Hattab
 
SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)Ayman El-Hattab
 
SharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformSharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformAyman El-Hattab
 
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle East
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle EastSharePoint Sandboxed Solutions and InfoPath - TechEd Middle East
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle EastAyman El-Hattab
 
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle East
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle EastData-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle East
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle EastAyman El-Hattab
 
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...Ayman El-Hattab
 
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVP
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVPConnecting to LOB Systems Using BCS, Ayman El-Hattab, MVP
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVPAyman El-Hattab
 
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVP
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVPFeature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVP
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVPAyman El-Hattab
 
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVPSharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVPAyman El-Hattab
 
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVPSharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVPAyman El-Hattab
 
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVP
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVPSharePoint 2010 as a Development Platform, Ayman El-Hattab MVP
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVPAyman El-Hattab
 
Introducing SharePoint 2010 to Computer Science Students
Introducing SharePoint 2010 to Computer Science StudentsIntroducing SharePoint 2010 to Computer Science Students
Introducing SharePoint 2010 to Computer Science StudentsAyman El-Hattab
 
SharePoint 2010 Workflows - Ayman El Hattab
SharePoint 2010 Workflows -  Ayman El HattabSharePoint 2010 Workflows -  Ayman El Hattab
SharePoint 2010 Workflows - Ayman El HattabAyman El-Hattab
 

More from Ayman El-Hattab (20)

Application Lifecycle Management for Nintex Solutions
Application Lifecycle Management for Nintex SolutionsApplication Lifecycle Management for Nintex Solutions
Application Lifecycle Management for Nintex Solutions
 
Boost O365 User Adoption with 10 Cool Add-ins!
Boost O365 User Adoption with 10 Cool Add-ins!Boost O365 User Adoption with 10 Cool Add-ins!
Boost O365 User Adoption with 10 Cool Add-ins!
 
Light Up Your Intranet with 10 Cools Apps
Light Up Your Intranet with 10 Cools AppsLight Up Your Intranet with 10 Cools Apps
Light Up Your Intranet with 10 Cools Apps
 
Web Content Management in SharePoint Server 2013 & Office 365
Web Content Management in SharePoint Server 2013 & Office 365Web Content Management in SharePoint Server 2013 & Office 365
Web Content Management in SharePoint Server 2013 & Office 365
 
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in Egypt
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in EgyptVisual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in Egypt
Visual Studio 2012 Tools for Team Work - From Visual Studio 2012 Launch in Egypt
 
Using Virtual Test Labs for SharePoint
Using Virtual Test Labs for SharePoint Using Virtual Test Labs for SharePoint
Using Virtual Test Labs for SharePoint
 
Visual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management ToolsVisual Studio 2010 Testing & Lab Management Tools
Visual Studio 2010 Testing & Lab Management Tools
 
Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview Visual Studio 2010 ALM Tools Overview
Visual Studio 2010 ALM Tools Overview
 
SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)SharePoint Application Lifecycle Management (ALM)
SharePoint Application Lifecycle Management (ALM)
 
SharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformSharePoint 2010 as a Development Platform
SharePoint 2010 as a Development Platform
 
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle East
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle EastSharePoint Sandboxed Solutions and InfoPath - TechEd Middle East
SharePoint Sandboxed Solutions and InfoPath - TechEd Middle East
 
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle East
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle EastData-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle East
Data-Centric Composites and Mashups in SharePoint 2010 - TechEd Middle East
 
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...
Creating No-Code BCS Solutions in SharePoint 2010 and Office 2010–From TechEd...
 
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVP
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVPConnecting to LOB Systems Using BCS, Ayman El-Hattab, MVP
Connecting to LOB Systems Using BCS, Ayman El-Hattab, MVP
 
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVP
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVPFeature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVP
Feature and Solution Framework in SharePoint 2010, Ayman El-Hattab MVP
 
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVPSharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Web Application Architecture_ Ayman El-Hattab,MVP
 
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVPSharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
SharePoint 2010 Service Application Architecture_ Ayman El-Hattab,MVP
 
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVP
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVPSharePoint 2010 as a Development Platform, Ayman El-Hattab MVP
SharePoint 2010 as a Development Platform, Ayman El-Hattab MVP
 
Introducing SharePoint 2010 to Computer Science Students
Introducing SharePoint 2010 to Computer Science StudentsIntroducing SharePoint 2010 to Computer Science Students
Introducing SharePoint 2010 to Computer Science Students
 
SharePoint 2010 Workflows - Ayman El Hattab
SharePoint 2010 Workflows -  Ayman El HattabSharePoint 2010 Workflows -  Ayman El Hattab
SharePoint 2010 Workflows - Ayman El Hattab
 

Recently uploaded

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

TechDays Tunisia - Visual Studio & SQL Server, Better Together - Ayman El-Hattab

  • 1.
  • 2. Microsoft Most Valuable Professional www.aymanelhattab.com Twitter: @AymanElhattab
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. class AuctionApplication class AuctionApplication class AuctionApplication ( ( ( App int id; int id; int id; void MethodA(); void MethodA(); string cacheTitle; ) void MethodB(); void MethodA(); ) void MethodB(); ) V1 V2 V3 Revision History CREATE ALTER TABLE dbo.Auction TABLE ALTER TABLE dbo.Auction dbo.Auction Database ( WITH CHECK ADD CONSTRAINT WITH CHECK ADD CONSTRAINT id INT NOT PRIMARY KEY (id) Au_PK Au_SK UNIQUE (name) NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL )
  • 18. -- version 1 Add table dbo.Auction IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL BEGIN CREATE TABLE dbo.Auction ( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL ) END -- version 2 Add PK Au_PK IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_PK' AND type = 'PK') BEGIN ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id) END -- version 3 Add UC Au_SK IF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_SK' AND type = ‘UQ') BEGIN ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name) END
  • 19. class AuctionApplication class AuctionApplication class AuctionApplication ( ( ( App int id; int id; int id; void MethodA(); void MethodA(); string cacheTitle; ) void MethodB(); void MethodA(); ) void MethodB(); ) Source-controlled and deployed scripts V1 V2 V3 do not need to match! Revision History CREATE CREATE CREATE dbo.Auction TABLE dbo.Auction dbo.Auction TABLE TABLE Logical In- ( ( ( Memory id INT NOTid NOT NULL PRIMARY KEY, KEY, id INT NULL,INT NOT NULL PRIMARY Database name VARCHAR(25) NOT NULL, NULL, NULL UNIQUE, name VARCHAR(25) NOT name VARCHAR(25) NOT start DATETIME NULL, NULL, NULL, start DATETIME start DATETIME len INT NULL NULL NULL len INT len INT ) ) )
  • 20. CREATE CREATE CREATE dbo.Auction TABLE dbo.Auction dbo.Auction TABLE TABLE Logical In- ( ( ( Memory id INT NOTid NOT NULL PRIMARY KEY, KEY, id INT NULL,INT NOT NULL PRIMARY Database name VARCHAR(25) NOT NULL, NULL, NULL UNIQUE, name VARCHAR(25) NOT name VARCHAR(25) NOT start DATETIME NULL, NULL, NULL, start DATETIME start DATETIME len INT NULL NULL NULL len INT len INT ) ) ) V1 V2 V3 Revision History New Incremental Deployment CREATE TABLE dbo.Auction Deployment ALTER TABLE dbo.Auction ( WITH CHECK ADD CONSTRAINT id INT NOT NULL PRIMARY KEY, Au_SK UNIQUE (name) name VARCHAR(25) NOT NULL UNIQUE, start DATETIME NULL, V2 len INT NULL )
  • 21. Background Analysis: Source Interpret, Database analyze and Reverse engineer validate schema into DDL artifacts Schema Model Database Project Build .dbschema Schema Model file DDL SQL Artifacts Compose model representation from source code fragments!
  • 22. Target .dbschema Database file Schema Model Schema Model Model Diff Plan Executors .SQL Deployment Engine Incremental Target Update
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. TFS Source Control Check in to DBDev DBA Staging Database Database Import schema Production Project Database
  • 37. •Sync Dev •Check-out Env •Edit/Refactor •Generate Test Data •Database Unit Test Dev •Check-in Env TFS •Work is being driven Dev and tracked via work items Env •Other team members can pick up changes DBDev DBA Staging Database TFS Shelving allows DBA Dev to provide guidance Env Production and evaluate work Database
  • 38. Daily Test Build Database Output Can also be TFS used in a “Continuous” Get Latest build environment DBDev Daily Build Test Lab DBA Staging Database Production Database
  • 39. TFS Sync from Label DBDev DBA Deploy Staging Database SQL Database Deploy Production Project Build Script Database Verify Refine deploy script
  • 40.

Editor's Notes

  1. Databases are a critical component utilized by many (if not most) software applications. And yet, they are traditionally underserved by tools that can facilitate development, testing & deployment. Database developers are usually left to cobble together disconnected tools for developing & deploying database changes. Furthermore, database developers usually follow a process that is disconnected from the process followed by the application development team, resulting in an error-prone and labor-intensive system of collaboration. With VS2010, you can finally bring the process of managing changes to your database into the same toolset and process framework used by the other members of your software development team.
  2. Databases are a critical component utilized by many (if not most) software applications. And yet, they are traditionally underserved by tools that can facilitate development, testing & deployment. Database developers are usually left to cobble together disconnected tools for developing & deploying database changes. Furthermore, database developers usually follow a process that is disconnected from the process followed by the application development team, resulting in an error-prone and labor-intensive system of collaboration. With VS2010, you can finally bring the process of managing changes to your database into the same toolset and process framework used by the other members of your software development team.
  3. For those new to Visual Studio Database Projects, Database Projects provide 3 main pillars of functionality:1.) Managing ChangeVersioning of your database schema – Full fidelity offline schema development of your database within the project systemIncremental Deployment - Deploy your database schema against multiple versions of a database schemaSchema Compare – Database Tooling to compare schemas between databases, database projects, and dbschema (dbschema files which are the primary output artifact of building a database project) Schema Refactoring –Database Tooling to support common iterative changes to your database schema within the development cycle (Refactoring operations include: Expand Wildcards, Rename, Move Schema, Fully Expand Names 2.) Managing QualityDependency validation and visualization –Validation during design and build ensuring consistency and integrity of your database schema Static Code Analysis – Analogous to FxCop, but for SQL. The product has 14 rules that it ships with. The inbox rules cover naming, design, and performance issue categories. Unit Testing and Data Generation – A Unit Testing Framework similar to what is available to the app developer, but with T-SQL and Data Generation capabilities to test your instantiated schema with data.
  4. 3.) DDLC Integration into ALMTeam Developer brings the database development lifecycle into the Visual Studio Developer experience in a consistent and familiar manner. Many of the same idiom or metaphors now exist for database development that c#/vb.net developers are accustomed to. Database projects bring the data tier developer into the team based development lifecycle. (Define, Design, Develop, Test, Deploy, Manage) Lather, rinse, repeatBuild integration with MSBuild and TeamBuild4.) Database Development Platform ExtensibilityDatabase projects offer extensibility to add features to the project system or to expand features that ship with the productFeature extensibility includes: Custom Static Code Analysis Rules, Custom Unit Test Conditions, Custom Data Generators and Data Distributions, Custom Refactoring Types and Targets
  5. Can you use a Diff Utility of any Version Control System to get the changes between V2 & V3 for the database ? No
  6. Not performantError-prone because it’s difficult to get the dependency tracking correctLabor-IntensiveRequire extensive additional logic to account for customizations or versioning differences between different instances of production databases.Database changes must be made in a precise order to preserve the integrity of the schema & prevent data loss.Can introduce additional bugs
  7. Visual Studio eliminates the need to ever hand-code database deployment scripts.
  8. Schema Model = In-memory model of the database.Creating database objects & editing TSQL cause visual studio to perform background analysis of your changes & make the appropriate changes to the schema model, it may also detect syntax errors, dependency errors & thus protect the integrity of your database schema.As mentioned we persist our database schema as separate .sql scripts within a Visual Studio project system. Which is a physical container for grouping all of the .sql files that make up a database schemaBecause we are completely offline, and there is no database in place within the Database project system, we also need to understand the database from a logical perspective, namely how each of the object relate, depend on each other.We do that via a Schema Model, which is basically an in memory representation of that database schema as it would exist in a live database.To populate our schema model, we can take an existing database, reverse engineer the definition of that database (no data) and create .sql files for each schema objects(.sql file for each table, .sql file for each primary key, stored procedures etc.).We can then version control those .sql files just like you version control any of your .Net coding filesWith the .sql files, we then load the content of the file through our intrepret component to interpret the schema definition (is this a stored procedure we’re dealing with, or is this a table etc.) and then analyze the content(do we already have an object defined using this name, does this object depend on another object, namely for Primary Keys which table does this pk belong to etc.) and then we validate(is the object defined correctly, for Primary keys is the table defined and in an non error state). Once each of our objects pass this process, we then populate it into our schema model, which provides a true picture of a database which is fully validated and could be deployed to a live database without any semantic errors.The persistent model of the schema model is a .dbschema file
  9. This is a simplified diagram of how the incremental deployment engine works. In a nutshell, it uses in memory models of the source and target databases to compare schemas to create a deployment plan. The deployment plan produced is dependency and data aware. Examples: Trying to DROP objects that have dependencies not in comprehended in the project will often fail the deployment.Modifying the schema of the database that may introduce data loss is optionally blocked in deployment. Test OK to lose data. Production, not so much. The deployment engine produces a list of differences and a deployment contributor acts on those differences to produce the least invasive approach to modify the target database to match that of the source. The deployment contributor combines this deployment plan with additional project artifacts and generates a SQL deployment script. Additional deployment contributors also act on the database target by emitting additional SQL or supporting artifacts LIKE a change list or data dictionary. We will see more of this later.
  10. Now you can defer the comparison of the source & target database so that an appropriate script is generated based on the state of the target database.