Presentation is loading. Please wait.

Presentation is loading. Please wait.

Where Are My (Primary) Keys? Ami Levin Mentor, Think Big. Move Fast.

Similar presentations


Presentation on theme: "Where Are My (Primary) Keys? Ami Levin Mentor, Think Big. Move Fast."— Presentation transcript:

1 Where Are My (Primary) Keys? Ami Levin Mentor, ALevin@SolidQ.com Think Big. Move Fast.

2 We Always Did it This Way… Where are my (primary) keys? 2 |

3 Session Goals Revisit one of the fundamental design principals of relational databases - key selection. Explore the controversies associated with it from a very practical, hands-on perspective, with a special emphasis on some surprising performance issues that may arise from sub- optimal selection of keys... Where are my (primary) keys? 3 |

4 What is a Primary Key?

5 The Forefathers Where are my (primary) keys? 5 |

6 Normalization “A relation whose domains are all simple can be represented in storage by a two-dimensional column homogeneous array of the kind discussed above. Some more complicated data structure is necessary for a relation with one or more non-simple domains. For this reason (and others to be cited below) the possibility of eliminating non-simple domains appears worth investigating. There is, in fact, a very simple elimination procedure, which we shall call normalization ” Where are my (primary) keys? 6 |

7 1 st Normal Form  There's no top-to-bottom or left-to-right ordering to the rows and columns  There are no duplicate rows  Every row-column intersection contains exactly one value  There are no repeating groups  All columns are regular Where are my (primary) keys? 7 |

8 1 st Normal Form Where are my (primary) keys? 8 | SSN NamePhone Number 123-45-6789 Muammar Gaddafi+218-00-9876 987-65-4321 Bashar Assad+1-202-6543221 SSNFirst NameLast NamePhone Number 123-45-6789MuammarGaddafi +218-00-9876, +218-00-8765 987-65-4321BasharAssad+1-202-6543221 SSNFirst NameLast NamePhone Number 1Phone Number 2 123-45-6789MuammarGaddafi+218-00-9876+218-00-8765 987-65-4321BasharAssad+1-202-6543221

9 2 nd Normal Form  R is in 1NF.  Given any candidate key K and any attribute A that is not a constituent of a candidate key, A depends upon the whole of K rather than just a part of it. Where are my (primary) keys? 9 |

10 2 nd Normal Form Where are my (primary) keys? 10 | Order IDLine NumberCustomer 00011FISSA 00012FISSA 00021PARIS OrderDetailIDOrderIDLineNumberCustomer AC934245FF00B00011FISSA 8BA50CC2044AF00012FISSA F00B344923AB400021PARIS

11 3 rd Normal Form  R is in second normal form (2NF)  Every non-prime attribute of R is non-transitively dependent on every candidate key of R. A non-prime attribute of R is an attribute that does not belong to any candidate key of R. A transitive dependency is a functional dependency in which X → Z ( X determines Z ) indirectly, by virtue of X → Y and Y → Z. Where are my (primary) keys? 11 |

12 3 rd Normal Form Where are my (primary) keys? 12 | Order IDLine NumberProductManufacturer 00011ChairIKEA 00012GumMentos 00021Fighter JetBoeing

13 Keys  Simple  Composite  Candidate  Primary  Artificial / Surrogate  Intelligent  Natural Where are my (primary) keys? 13 |

14 The Debate To ID or not to ID?  IDENTITY (1,1) vs. Natural key Where are my (primary) keys? 14 |

15 Pro Artificial (I) In some cases, no natural key exists and an artificial key is the only option.  Examples? Where are my (primary) keys? 15 |

16 Pro Artificial (II) Natural keys can change. Artificial keys never change.  How Often?  Cascading referential constraints  Artificial keys can change Where are my (primary) keys? 16 |

17 Pro Artificial (III) Natural keys may be long and complex.  Become longer with each level  900 Bytes limit in SQL Server  Multi-column joins Where are my (primary) keys? 17 |

18 Pro Artificial (IX) Artificial keys help improve performance.  Simpler join predicates  Ever increasing clustering effect  Short keys = Smaller DB = Faster Where are my (primary) keys? 18 |

19 Pro Artificial (X) Artificial keys reduce clustered index fragmentation.  Minimize maintenance down time  What about deletes?  What about non-clustered indexes? Where are my (primary) keys? 19 |

20 Pro Natural (I) Natural keys have business meaning.  Artificial keys are never queried for Where are my (primary) keys? 20 |

21 Pro Natural (II) Queries on tables using natural keys require fewer joins.  The more familiar and meaningful the key, the less joins are required  “Bypass” joins Where are my (primary) keys? 21 |

22 Pro Natural (III) Data consistency is maintained explicitly when using natural keys.  Artificial keys enable logical duplicates Where are my (primary) keys? 22 |

23 Pro Natural (IX) Natural keys eliminate potential physical clustering performance issues.  Contention for clustered regions Where are my (primary) keys? 23 |

24 Less Mentioned Issues (I) Artificial keys are the de-facto standard.  ORMs generate artificial keys  LINQ doesn’t cache composite key rows …… Where are my (primary) keys? 24 |

25 Less Mentioned Issues (II) Data statistics and optimizations.  Statistics on artificial keys are useless for parameter sniffing  Estimations on composite key statistics are less accurate Where are my (primary) keys? 25 |

26 Less Mentioned Issues (III) Modularity and portability.  Migration to other platforms  Merging with other databases Where are my (primary) keys? 26 |

27 Less Mentioned Issues (IX) Simplicity and aesthetics. Where are my (primary) keys? 27 |

28 Demo Spec A database of web sites.  URL  Country and city of owner  Country ISO code for external app  Data consistency is crucial Where are my (primary) keys? 28 |

29 Natural vs. Artificial Keys Where are my (primary) keys? 29 |

30 Ask Yourself  Is there a natural key that I can use as a primary key?  Are there a few natural candidates?  Which one is the simplest and most familiar?  How stable is it?  How will it be used logically?  What will be the physical access patterns for this table?  What are the common query types for this table? Where are my (primary) keys? 30 |

31 For More Information  A Relational Model of Data for Large Shared Data Banks (E.F. CODD)  The Relational Model for Database Management: Version 2 (E.F. Codd)  An introduction to database systems (C.J. Date)  Database in Depth: Relational Theory for Practitioners (C.J. Date)  The Database Relational Model: A Retrospective Review and Analysis (C.J. Date)  Joe Celko's Data and Databases: Concepts in Practice (J. Celko)  Joe Celko's SQL for Smarties, Fourth Edition: Advanced SQL Programming (J. Celko)  Database Modeling and Design, Fifth Edition: Logical Design (T.J. Teorey, S.S. Lightstone, T. Nadeau, and H.V. Jagadish)  Pro SQL Server 2008 Relational Database Design and Implementation (L. Davidson, K. Kline, S. Klein, and K. Windisch) Where are my (primary) keys? 31 |

32 Where Are My Keys? Where are my (primary) keys? 32 |

33 Where Are My Keys? Where are my (primary) keys? 33 |


Download ppt "Where Are My (Primary) Keys? Ami Levin Mentor, Think Big. Move Fast."

Similar presentations


Ads by Google