Database Design

External Article

Look-up Tables in SQL

  • Article

Lookup tables can be a force for good in a relational database. Whereas the 'One True Lookup Table' remains a classic of bad database design, an auxiliary table that holds static data, and is used to lookup values, still has powerful magic. Joe Celko explains....

2011-03-04

7,435 reads

Technical Article

SQL Server: Natural Key Versus Surrogate Key

  • Article

When designing a database to support applications you need to consider how you are going to handle primary keys. This article explores natural and surrogate keys, and discusses the pros and cons of each, allowing you to determine what makes the best sense in your environment when you are designing your databases.

You rated this post out of 5. Change rating

2011-02-15

5,434 reads

Stairway to Database Design

Stairway to Database Design

  • Stairway

New to the task of designing and creating a database? Joe Celko, who is one of the most widely read of all writers about SQL, explains the basics. As usual, he comes up with the occasional surprise for even the most seasoned database professional. Joe was the winner of the DBMS Magazine Reader's Choice Award four consecutive years. He has taught SQL in the US, UK, the Nordic countries, South America and Africa.
He served 10 years on ANSI/ISO SQL Standards Committee and contributed to the SQL-89 and SQL-92 Standards.

(2)

You rated this post out of 5. Change rating

2011-02-17 (first published: )

10,735 reads

External Article

The DIS-Information Principle: A Splitting Headache

  • Article

You can easily re-factor bad DML code, but if a database design is wrong, you can do little to rescue the problem, even with expert queries. So what constitutes 'wrong RDBMS design? What are these errors that continually crop up? How can you recognise them and fix them? Joe embarks on a new series of articles by identifying a series of bad practices based on the habit of 'splitting' that which shouldn't be split.

2010-09-08

2,767 reads

Technical Article

Making your database changes backward compatible: Changing a relationship

  • Article

Let's face it: requirements change. There is usually a lot of churn during the design and initial development stages, but changes can happen to mature applications, too. The key is to introduce those changes with the least amount of effort and risk.

You rated this post out of 5. Change rating

2010-08-02

2,585 reads

Blogs

Accessing the Data API Builder MCP Server from VS Code

By

I recently started playing with the MCP Server for SQL Server, which is a...

From DBA or Data Engineer to AI Engineer: A Realistic Path

By

If you spend your days tuning queries, managing pipelines, or keeping a production database...

Asynchronous Replication of Snapshots from an ActiveCluster Pod to a Third Array

By

I’ve been rebuilding my three-site SQL Server demo lab, and I ran into something...

Read the latest Blogs

Forums

STRING_AGG DISTINCT

By Phil Parkin

Has anyone written a wrapper function (or similar) around STRING_AGG() to allow the retrieval...

In-place OS upgrade or migration to new OS?

By jasona.work

Putting this here as we're currently on SQL Server 2019 installed on Windows Server...

Never is Not the Policy

By Steve Jones - SSC Editor

Comments posted to this topic are about the item Never is Not the Policy

Visit the forum

Question of the Day

Rebuilding All Indexes

I have added a few indexes to one of my tables in SQL Server 2025:

ALTER TABLE dbo.CustomerContact
ADD CONSTRAINT PK_CustomerContact
    PRIMARY KEY (CustomerID);

-- Create index on CustomerEmail
CREATE INDEX IX_CustomerContact_CustomerEmail
ON dbo.CustomerContact (CustomerEmail);
CREATE INDEX IX_CustomerContact_CustomerPhone
ON dbo.CustomerContact (phone);
I then do this to disable one index:
alter index IX_CustomerContact_CustomerPhone on dbo.CustomerContact disable
I see this when I check the index status:Index status for CustomerContactI decide to rebuild all indexes with this command:
ALTER INDEX ALL ON dbo.CustomerContact rebuild
After I do this, what will I see for the index status?

See possible answers