Finding a unique key for a set of data
Sometimes, it can be difficult to find a unique set of key columns that describe the data. In this recipe, we will analyze the data in a database to allow us to identify the column(s) that together form a unique key. This is useful when a key is not documented, not defined, or has been defined incorrectly.
Getting ready
Let’s start with a small table, where the answer is fairly obvious:
postgres=# select * from ord;
We assume that the output is as follows:
orderid | customerid | amt
---------+------------+--------
10677 | 2 | 5.50
5019 | 3 | 277.44
9748 | 3 | 77.17
(3 rows)
How to do it…
First of all, there’s no need to do this through a brute-force approach. Checking all the permutations of columns to see which is unique might take you a long time.
Let’s start by using PostgreSQL’s own optimizer statistics. Run the following command...