• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduction to database design with Idef1X entity relationship (ER) diagrams
 

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

on

  • 3,097 views

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, ...

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.

Statistics

Views

Total Views
3,097
Views on SlideShare
2,682
Embed Views
415

Actions

Likes
1
Downloads
21
Comments
0

2 Embeds 415

http://www.forwardthought.com 414
http://www.accelscale.com 1

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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. CustomerAddress and PersonAddress
  • 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.) One-to-zero-or-more: one to one or more one to zero or one 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 Introduction to database design with Idef1X entity relationship (ER) diagrams Presentation Transcript

  • 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
  • Introduction to Database Design / ER Diagrams Pop Quiz! 17 May 2012 © 2012 Mark Abramson / @mark__a 2
  • Introduction to Database Design / ER Diagrams THEORY & ELEMENTS DEMO Q&A Edgar F Codd 17 May 2012 © 2012 Mark Abramson / @mark__a 3
  • 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
  • Introduction to Database Design / ER Diagrams What is a database design? 17 May 2012 © 2012 Mark Abramson / @mark__a 5
  • 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
  • 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
  • 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
  • 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
  • Introduction to Database Design / ER Diagrams Relationship • Definition • Identifying • Non-Identifying Non-Identifying Relationship 17 May 2012 © 2012 Mark Abramson / @mark__a 10
  • 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
  • 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
  • Introduction to Database Design / ER Diagrams Keys • Primary Keys • Foreign Keys • Candidate Keys • Composite Keys 17 May 2012 © 2012 Mark Abramson / @mark__a 13
  • 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
  • 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
  • Introduction to Database Design / ER Diagrams Questions? • 1 Exercise • Demo • Questions + wrap up 17 May 2012 © 2012 Mark Abramson / @mark__a 16
  • Introduction to Database Design / ER Diagrams Exercise! Legacy Baggage 17 May 2012 © 2012 Mark Abramson / @mark__a 17
  • 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
  • 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
  • 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
  • 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