Can a database table not have a primary key? SQLite lets you define a table with no primary key therefore there can be no insertion anomaly.
Can a database table not have a primary key
primary-keysqlite
Related Question
- Can one part of a multi-column primary key be used across tables
- EAV-like table with both primary column pointing to the same foreign column
- Sql-server – Difference between a unique clustered index and a clustered primary key
- Mysql – Does it makes sense to index a primary key if it is not used
- Any benefit in running ANALYZE after bulk insert in table with only PRIMARY KEY index in SQLite
- Sql-server – Why is it important for every table to have a primary key
Best Answer
Can you create a database table without a primary key? Well, you just said you can in SQLite. And, I believe that holds true for almost every (if not every) major DBMS platform.
Should you create a database table without a primary key? No.
Every table should have some column (or set of columns) that uniquely identifies one and only one row. It makes it much easier to maintain the data.
It's true, without a primary key (or some unique key), you don't have an insertion anomaly if you go to insert the same data multiple times.
What you do have is a
user
table with 300 separate entries for a user named "bob", many of which have different values in the other columns. And, if you've tried to connect rows in some other table touser
without a primary key/foreign key relationship - every row inmessage
marked assent_by
"bob" ties back to every one of those 300user
entries. Oh, and there're 39 unique passwords for "bob" (157 of the rows all show the password "password", of course).Without primary keys, things can get really messy, really fast.