Introduction to Database Design / ER Diagrams          Intro to Database Design          with Entity-Relationship         ...
Introduction to Database Design / ER Diagrams                 Pop Quiz!   17 May 2012                   © 2012 Mark Abrams...
Introduction to Database Design / ER Diagrams                                                          THEORY &           ...
Introduction to Database Design / ER Diagrams                 About Me (and disclosures)   •   Schema-first kind of guy   ...
Introduction to Database Design / ER Diagrams                 What is a database design?   17 May 2012                   ©...
Introduction to Database Design / ER Diagrams                 What’s the data look like? SalesOrderId    OrderStatus   Ord...
Introduction to Database Design / ER Diagrams                  Why Database Design?   • Gives everyone a clear picture of ...
Introduction to Database Design / ER Diagrams                 Entity / Relationship Model   • An Entity is some “thing” of...
Introduction to Database Design / ER Diagrams                                       Entity   •   Definition   •   Attribut...
Introduction to Database Design / ER Diagrams                               Relationship   • Definition   • Identifying   ...
Introduction to Database Design / ER Diagrams                           Relationship (2)   • Recursive references   • Asso...
Introduction to Database Design / ER Diagrams                                 Cardinality   • How many instances of each e...
Introduction to Database Design / ER Diagrams                                         Keys   •   Primary Keys   •   Foreig...
Introduction to Database Design / ER Diagrams                                 Normalization                               ...
Introduction to Database Design / ER Diagrams                             Getting Fancy   •   First, second, third-normal ...
Introduction to Database Design / ER Diagrams                                Questions?   • 1 Exercise   • Demo   • Questi...
Introduction to Database Design / ER Diagrams                 Exercise! Legacy Baggage   17 May 2012                   © 2...
Introduction to Database Design / ER Diagrams            Tools for Creating Your Model   • Paper + Pen / Whiteboard   • Dr...
Introduction to Database Design / ER Diagrams                               Demo time!   • SQL Server Management Studio (“...
Introduction to Database Design / ER Diagrams                                           Resources                 Designin...
Introduction to Database Design / ER Diagrams   SQL Server SF Group                                              Red Gate ...
Upcoming SlideShare
Loading in …5
×

Introduction to database design with Idef1X entity relationship (ER) diagrams

6,077 views

Published on

Tonight I delivered a fun presentation on the topic of designing a relational database using entity relationship diagrams. The group was very diverse (QA, Product Managers, DBAs, Software Architects, startup folks, etc.) and we had a great time talking about the nuts and bolts of designing a database.

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,077
On SlideShare
0
From Embeds
0
Number of Embeds
421
Actions
Shares
0
Downloads
73
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • 25-30 minutes of instruction, 15-20 minutes of demo, 30+ minutes of Q&AI hope I’ll address most of your questions as we go, but write them down + let’s talk about them at the end of the slidesBut if you’re lost and your neighbor has a blank stare, please interrupt
  • Who are you?------Software engineers?Database engineers? DBAs?Don’t work with anything Microsoft?Why are you here?------Total new to DB?Work with a database that someone else designed?Handed a project and now you’re in charge?Design databases yourself?
  • Edgar F.Codd – British IBM researcher, regarded as the inventor of the relational model for database managementGOALS FOR SESSION: At the end of this session, you should be able to read, understand and create database Entity Relationship diagrams. And know where to look next.There will be a couple of exercises for the audience as we go and an Interactive demoQ&A – very curious about what you’re facing out there in the world
  • Want you to know of any bias that may affect my talkRun a startup, we make software for wholesalers and manufacturers to scale sales + operationsOn Microsoft stack (SQL Server, MVC, TDD, etc.)Love teaching + learningCheck out upcoming meetings on Agile, PhilHaack! and APIsConnect with me on LinkedInBe one of my 43 followers on Twitter!
  • Visual representation of the ENTITIES and RELATIONSHIPS between themBased on rules from the real world / your business; Entails a number of rules, standards and guidelinesGreat way to communicate with co-workers, customers, developers; Great working model and critical reference documentYou could consider this as a whole bunch of linked-together Excel worksheets: these fields define the columnsWorking with a model is 50% science, 50% art, 50% experience
  • CustomerId in SalesOrder table references a record/row in the Customer tableWe can look up / refer to related or seemingly unrelated data elsewhere
  • C’mon, you have to put all that data *somewhere*!Business Rules? Really? Yes, in *relationships* and other definitionsIt’s a great mental exercise that forces you to think through a lot of hard problemsSeparation of Concerns (1974, check Wikipedia)But what about Agile, TDD and BDD? Yes, in the demo we’ll start simple, break stuff and refactor.
  • Entity = object that is important to the business.Entity = the NOUNRelationship = how are these objects/entities relating to one another?Relationship = the VERB; the VERB PHRASE
  • What’s in a name?Naming conventions – singular vs. plural DESCRIBE THE BUSINESSAttribute = property of Entity / Columns of db tableData type choice (decimal vs. float vs. money) varchar vs. nvarchar vs. char vs. textNULL option – is this mandatory per business rules?Primary Key: unique identifier for each row of dataForeign Key: another entity’s PK that is here due to relationshipIDENTITY column: guarantees uniqueness and auto-increments (autonumber). (1,1) specifies the SEED and INCREMENT
  • A relationship is the “verb” between entities – defines how they interact per business rulesNaming / “writing a sentence” / be consistentDefines how the entities interactRead the relationship from parent->child (end with the dot)Identifying: the child is dependent on its parent for its identityNon-identifying: may be existence dependent but not identity dependent
  • Sometimes we end up with complicated relationships and that’s OKRecursive: can ParentId be NULL?Associative / link / join / junction table: used for many-to-many tablesCan make joins a little more difficult but is a common patternGREAT for when you want to use an entity in other areas, e.g. Customer<->Address and Person<->Address
  • Cardinality: how many instances of each entity may be involved or must be involved?w/ identifying (circle) – there has to be one Customer for some # of Addressw/ non-identifying (diamond) – no requirement to have a Customer to have an Address (could be an Employee Address, Order Address, etc.)<nothing> One-to-zero-or-more:<P> one to one or more<Z> one to zero or one<N> one to exactly Nw/ non-identifying relationships, these can all be zero-or-one-to…Enforced via triggers and constraints
  • Primary Key – unique identifying key (can be any data type as long as it’s unique)Foreign Key – some other entity’s PK that appears here because of some relationship with itCandidate Key – Could this work as a PK? What’s are the candidate keys in this table?Composite Key – put a few fields together to get a unique keyStrings? Timestamps? Integers? Decimals?
  • DENORMALIZED:Data can be duplicated and get out of syncEase of queryingPerformance considerationsNORMALIZED:One “fact” occurs in one place and only one placeRequires you to get the business rules “right”No way to have data concurrency issuesDoes require a lot of joins
  • Great opportunities for self-directed learningGeneralization:Account  Savings Account, Checking Account, Mortgage AccountCascading deletesIn sum, there are a lot of database rules that can protect your data from you! Developer actions, etc.
  • In some ways it’s easier to create than repair… let’s work together to see how we can improve this modelFirstName/LastName fields long enough?StateProvince field?Website (255) OK?Are all of these fields really OK to be nulls?WTF is OwnerId doing in Country? State?Is StateCode and CountryCode OK for a PK? Why not a bigint?Relationships in wrong directionDenormalizedInfo? What is this? A flag?
  • Features + benefits of these as you go up/down the food chain
  • Introduction to database design with Idef1X entity relationship (ER) diagrams

    1. 1. Introduction to Database Design / ER Diagrams Intro to Database Design with Entity-Relationship (ER) Diagrams Mark Abramson, CEO, Forward Thought, Inc. 17 May 2012 © 2012 Mark Abramson / @mark__a 1
    2. 2. Introduction to Database Design / ER Diagrams Pop Quiz! 17 May 2012 © 2012 Mark Abramson / @mark__a 2
    3. 3. Introduction to Database Design / ER Diagrams THEORY & ELEMENTS DEMO Q&A Edgar F Codd 17 May 2012 © 2012 Mark Abramson / @mark__a 3
    4. 4. Introduction to Database Design / ER Diagrams About Me (and disclosures) • Schema-first kind of guy • MS BizSpark Startup Partner • www.bizsparksf.com • Friend of Red Gate • @mark__a • linkedin.com/in/abramsonmark 17 May 2012 © 2012 Mark Abramson / @mark__a 4
    5. 5. Introduction to Database Design / ER Diagrams What is a database design? 17 May 2012 © 2012 Mark Abramson / @mark__a 5
    6. 6. Introduction to Database Design / ER Diagrams What’s the data look like? SalesOrderId OrderStatus OrderDate PlacedBy IsPriorityOrder CustomerId CurrencyId 20001 Shipped 1/5/2011 Bob Smith 0 3 2 20002 Fulfillment 5/5/2011 John Doe 1 2 2 20003 Placed 5/7/2011 Brenda Lee 0 3 2 CustomerId CustomerName AccountNumber 1 Woolworths 838382 2 Ricks Café 291101 3 Mill Valley Market 957588 17 May 2012 © 2012 Mark Abramson / @mark__a 6
    7. 7. Introduction to Database Design / ER Diagrams Why Database Design? • Gives everyone a clear picture of your business rules and the data behind it • Build consensus across business units • Separation of concerns • Ensure data accuracy 17 May 2012 © 2012 Mark Abramson / @mark__a 7
    8. 8. Introduction to Database Design / ER Diagrams Entity / Relationship Model • An Entity is some “thing” of interest • A Relationship defines the interaction between one or more Entities Contains 17 May 2012 © 2012 Mark Abramson / @mark__a 8
    9. 9. Introduction to Database Design / ER Diagrams Entity • Definition • Attributes • Data Types • NULL option • Primary Key • Foreign Key • Identity Columns 17 May 2012 © 2012 Mark Abramson / @mark__a 9
    10. 10. Introduction to Database Design / ER Diagrams Relationship • Definition • Identifying • Non-Identifying Non-Identifying Relationship 17 May 2012 © 2012 Mark Abramson / @mark__a 10
    11. 11. Introduction to Database Design / ER Diagrams Relationship (2) • Recursive references • Associative / Many-To-Many / “Join Tables” 17 May 2012 © 2012 Mark Abramson / @mark__a 11
    12. 12. Introduction to Database Design / ER Diagrams Cardinality • How many instances of each entity may be involved or must be involved? 17 May 2012 © 2012 Mark Abramson / @mark__a 12
    13. 13. Introduction to Database Design / ER Diagrams Keys • Primary Keys • Foreign Keys • Candidate Keys • Composite Keys 17 May 2012 © 2012 Mark Abramson / @mark__a 13
    14. 14. Introduction to Database Design / ER Diagrams Normalization DenormalizationSalesOrderId OrderStatus OrderDate PlacedBy CustomerAccountNumber CreditLimit20001 Shipped 1/5/2011 Bob Smith 838382 500020002 Fulfillment 5/5/2011 John Doe 291101 1000020003 Placed 5/7/2011 Brenda Lee 957588 7500 Normalization 17 May 2012 © 2012 Mark Abramson / @mark__a 14
    15. 15. Introduction to Database Design / ER Diagrams Getting Fancy • First, second, third-normal form • Generalization • Nonspecific relations • Three-way relationships • Constraints • Referential Integrity actions / triggers • Zachman’s Framework 17 May 2012 © 2012 Mark Abramson / @mark__a 15
    16. 16. Introduction to Database Design / ER Diagrams Questions? • 1 Exercise • Demo • Questions + wrap up 17 May 2012 © 2012 Mark Abramson / @mark__a 16
    17. 17. Introduction to Database Design / ER Diagrams Exercise! Legacy Baggage 17 May 2012 © 2012 Mark Abramson / @mark__a 17
    18. 18. Introduction to Database Design / ER Diagrams Tools for Creating Your Model • Paper + Pen / Whiteboard • Drawing Tools: PowerPoint, Visio • ER Tools: Open Source / Community Editions – CA ERWin; Toad; SSMS; MySQL Workbench • ER Tools: Midrange – Sparx Systems EA $199; Toad $479 • ER Tools: High End – CA ERWin $4000; Embarcadero $2000 17 May 2012 © 2012 Mark Abramson / @mark__a 18
    19. 19. Introduction to Database Design / ER Diagrams Demo time! • SQL Server Management Studio (“free”) – http://www.microsoft.com/download/en/details.aspx?id=7593 • RedGate SQL Data Generator ($295) – http://www.red-gate.com/products/sql-development/sql-data-generator/ • RedGate SQL Prompt Pro ($295) – http://www.red-gate.com/products/sql-development/sql-prompt/ • CA ERWin ($3975) – http://erwin.com/products/ • Tabs Studio ($49) – http://www.tabsstudio.com 17 May 2012 © 2012 Mark Abramson / @mark__a 19
    20. 20. Introduction to Database Design / ER Diagrams Resources Designing Quality Databases With Idef1X SQL in a Nutshell: A Desktop Quick Reference Information Models Kevin Kline, Brand Hunt, Daniel Kline Thomas A., M.D. Bruce $18 on Amazon $3.91 on Amazon! The Data Model Resource Book, Vol. 1: A http://www.databaseanswers.org/data_models Library of Universal Data Models for All Repository of simple examples of db models Enterprises Free! Len Silverston $45 (also check out Vol. 2 and Vol. 3) http://publib.boulder.ibm.com/infocenter/wc Image Credits help/v5r6/index.jsp?topic=/com.ibm.commer Slide 1: flickr/besser.jetzt ce.data.doc/refs/rdmindex.htm Slide 2: IBM IBM WebSphere data model Slide 3: flickr/Pete Reed Also search for ER Diagrams for other large Slide 4: flickr/Artful Magpie systems to see how someone else addressed a set of entities and relationships (MS Slide 14: Amazon.com Dynamics, SAP, etc.) Slide 15: flickr/Jon Ashcroft All ER diagrams: Mark Abramson www.StackOverflow.com 17 May 2012 © 2012 Mark Abramson / @mark__a 20
    21. 21. Introduction to Database Design / ER Diagrams SQL Server SF Group Red Gate Mark Ginnebaugh Edgar Codd Attendees Loving Wife Thomas Bruce Mom + Dad 17 May 2012 © 2012 Mark Abramson / @mark__a 21

    ×