In my database I have a list of users with information about them, and I also have a feature which allows a user to add other users to a shortlist. My user information is stored in one table with a primary key of the user id, and I have another table for the shortlist. The shortlist table is designed so that it has two columns and is basically just a list of pairs of names. So to find the shortlist for a particular user you retrieve all names from the second column where the id in the first column is a particular value.
The issue is that according to many sources such as this Should each and every table have a primary key? you should have a primary key in every table of the database.
According to this source http://www.w3schools.com/sql/sql_primarykey.asp – a primary key in one which uniquely identifies an entry in a database. So my question is:
-
What is wrong with the table in my database? Why does it need a primary key?
-
How should I give it a primary key? Just create a new auto-incrementing column so that each entry has a unique id? There doesn’t seem much point for this. Or would I somehow encapsulate the multiple entries that represent a shortlist into another entity in another table and link that in? I’m really confused.
If the rows are unique, you can have a two-column primary key, although maybe that’s database dependent. Here’s an example:
If you already have the table, the example would be: