When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles [1.x] [2.0]
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips
Search

Sections:
Book Reviews
Sample Chapters
Commonly Asked Message Board Questions
Headlines from ASPWire.com
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
Web Hosts
XML Info
Information:
Advertise
Feedback
Author an Article
Technology Jobs

















internet.com
IT
Developer
Internet News
Small Business
Personal Technology
International

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers
ASP ASP.NET ASP FAQs Message Board Feedback ASP Jobs
Print this page.

Windows Systems Administrator
Jupitermedia
US-CT-Darien

Justtechjobs.com Post A Job | Post A Resume

The SQL Guru Answers your Questions...


Today's question comes from Scott H.

Hi!

I am new to SQL Server and doing any database functionality. I would like to create my own unique id's and use characters in the field. Is there any problem doing this versus using the SQL Server to do it with an identity column (seed and increment value)? Is there anything wrong from a design perspective of having unique id's with letters and numbers in them as far as speed/efficiency goes?

In the column it mentions you have wrote some books? Do you have a beginner book? How about one on SQL 7.x?

Thanks!
Scott Hand

Scott,

I'll attempt to answer your question one part at a time...

I am new to SQL Server and doing any database functionality. I would like to create my own unique id's and use characters in the field. Is there any problem doing this versus using the SQL Server to do it with an identity column (seed and increment value)?

Well, it depends. If you're just creating unique id's for the sake of creating them, and they'll have no inherent meaning (a surrogate key), then it's best to let SQL Server do the work. You can use an IDENTITY field, or (in SQL 7.0) a uniqueidentifier (also known as a GUID) field.

However, it sounds like you're wanting to create primary keys that have some meaning outside of providing a unique value (a meaningful key). Which sort of leads into your follow-up question:

Is there anything wrong from a design perspective of having unique id's with letters and numbers in them as far as speed/efficiency goes?

Meaningful keys present a few challenges that you'll want to be aware of. First, they tend to change over time (because, after all, they are storing data that means something). If a meaningful PK is used as a foreign key in related child tables, then you'll need to update the FK values in the child tables as well to maintain referential integrity. Not a huge deal, but it means extra work for you. (And I believe that one of the marks of a good DBA is laziness :))

Also, meaningful keys can pose performance problems if they're quite large. Consider a PK that is someone's social security number. If you take out the dashes, a SSN is 9 characters. If you pack that into a char(9), it will use 9 bytes of storage in the base table and in any tables where it is used as a FK. Contrast that with an IDENTITY in an int field, which uses 4 bytes of storage. In this case, the difference is fairly minor, but you'll incur more I/O and your indexes on this field will be larger, which can slow access through those indexes.

In the column it mentions you have wrote some books? Do you have a beginner book? How about one on SQL 7.x?

My latest book is really geared towards DBA's that are already familiar with SQL Server. However, a friend of mine has updated the MCSE Test Prep book for SQL 7.0, and it's a pretty decent introduction to implementing database solutions w/ SQL Server. I contributed a few chapters in the 6.5 version of the book that made it through mostly unchanged, so I feel comfortable vouching for it :)

You can buy the book at: http://www.amazon.com/exec/obidos/ASIN/0735700044/

Hope this helps,
Sean


Read Other SQL Guru Questions


Windows Internet Technology | ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Microsoft Article: HyperV-The Killer Feature in WinServer ‘08
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Win Server ‘08
HP eBook: Putting the Green into IT
Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
Avaya Article: Setting Up a SIP A/S Development Environment
IBM Article: How Cool Is Your Data Center?
Microsoft Article: Managing Virtual Machines with Microsoft System Center
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Video: Are Multi-core Processors Here to Stay?
On-Demand Webcast: Five Virtualization Trends to Watch
HP Video: Page Cost Calculator
Intel Video: APIs for Parallel Programming
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Sun Download: Solaris 8 Migration Assistant
Sybase Download: SQL Anywhere Developer Edition
Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
Red Gate Download: SQL Compare Pro 6
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
IBM Article: Collaborating in the High-Performance Workplace
HP Demo: StorageWorks EVA4400
Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES