Biggest weakness with Baserow: No Unique Key Contraints

First to start, I love Baserow. I’ve been following this company for a few yrs now and only recently started to move some functionality over and build on top of it, after seeing the tremendous progress. I look forward to many years of using Baserow. It’s really an amazing platform.

However, there is one major weakness in the entire platform which hampers it’s ability to really be used extensively in production and for apps. That weakness is: No ability to set unique key constraints on columns. The ability to set unique constraints on a column in a table is a fundamental part of relational databases, and core features of Postgres, which Baserow is built on. Without unique constraints you face serious issues with data integrity for important applications.

Why doesn’t Baserow offer unique constraints on columns, when it is built on postgres and this feature is offered out of the box on postgres and any other SQL database? This is literally probably one line of code to add when creating a column. Just have a checkbox, to make it unique or not.

The only way to get around this crazy thing in Baserow where you can’t enforce uniqueness of a column is to create a webhook that runs on every Create and Update to look up the value of the entry for that particular column and then make sure no other row has that same value (and then take some action if there is a duplicate). This is a programmatic way to enforce uniqueness, and it works, but boy is it a pain to implement on every single table we create. The other option we have explored, is to simply replicate our database structure in another postgres database and save the data there first, before saving it to Baserow, as we can enforce uniqueness on our own postgres database with one click. But, again this makes things very complicated, as now we have 2 databases to manage and even with Baserow synch option now, we can’t write data back to the source, making the synch worthless.

All in all, enforcing uniqueness is a major pain and I can’t see any legitimate reason why this is not offered out of the box on Baserow given that Baserow is built on Postgres. It’s just unfathomable that this feature is missing, when it is so critical to relational databases.

Finally, from a competitive standpoint, the main problem with platforms like Airtable, is that it is impossible for them enforce constraints, because these services are built on NOSQL databases, so it is not really a relational database. So things like Airtable have a major weakness, that Baserow can solve because it is built on a real relational database structure.

So offering an out of box unique key constraint would give Baserow huge value over something Airtable and would greatly increase Baserow business.

3 Likes

BTW, I noticed this issue is raised here: Field value constraints (#647) · Issues · Baserow / baserow · GitLab

All the comments there are spot on and it is critical to listen to users to implement this. Incidentally, it would greatly increase Baserow business, so I don’t see why this is not done.

Hello @ddsgad, thank you for your kind words about Baserow! We know that this feature is important, and we also see more and more users asking about implementing it. Due to a very high number of different feature requests, we can’t tell when exactly we’ll pick it up, but we hope to deliver it early next year. :slightly_smiling_face:

2 Likes

I agree with this. A couple of times I decided not to use Baserow for a project because of a lack of unique key constraints.