Where Are My (Primary) Keys? Ami Levin Mentor, Think Big. Move Fast.
We Always Did it This Way… Where are my (primary) keys? 2 |
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 |
What is a Primary Key?
The Forefathers Where are my (primary) keys? 5 |
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 |
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 |
1 st Normal Form Where are my (primary) keys? 8 | SSN NamePhone Number Muammar Gaddafi Bashar Assad SSNFirst NameLast NamePhone Number MuammarGaddafi , BasharAssad SSNFirst NameLast NamePhone Number 1Phone Number MuammarGaddafi BasharAssad
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 |
2 nd Normal Form Where are my (primary) keys? 10 | Order IDLine NumberCustomer 00011FISSA 00012FISSA 00021PARIS OrderDetailIDOrderIDLineNumberCustomer AC934245FF00B00011FISSA 8BA50CC2044AF00012FISSA F00B344923AB400021PARIS
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 |
3 rd Normal Form Where are my (primary) keys? 12 | Order IDLine NumberProductManufacturer 00011ChairIKEA 00012GumMentos 00021Fighter JetBoeing
Keys Simple Composite Candidate Primary Artificial / Surrogate Intelligent Natural Where are my (primary) keys? 13 |
The Debate To ID or not to ID? IDENTITY (1,1) vs. Natural key Where are my (primary) keys? 14 |
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 |
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 |
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 |
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 |
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 |
Pro Natural (I) Natural keys have business meaning. Artificial keys are never queried for Where are my (primary) keys? 20 |
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 |
Pro Natural (III) Data consistency is maintained explicitly when using natural keys. Artificial keys enable logical duplicates Where are my (primary) keys? 22 |
Pro Natural (IX) Natural keys eliminate potential physical clustering performance issues. Contention for clustered regions Where are my (primary) keys? 23 |
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 |
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 |
Less Mentioned Issues (III) Modularity and portability. Migration to other platforms Merging with other databases Where are my (primary) keys? 26 |
Less Mentioned Issues (IX) Simplicity and aesthetics. Where are my (primary) keys? 27 |
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 |
Natural vs. Artificial Keys Where are my (primary) keys? 29 |
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 |
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 |
Where Are My Keys? Where are my (primary) keys? 32 |
Where Are My Keys? Where are my (primary) keys? 33 |