My definition of a good database design is that it models the domain well and will be flexible to support the user experience that you want.
The one constant is that your idea of the ideal user experience will change -- changing the database design is expensive once you have data in it, so you want to design it so future changes won't be hard.
I take inspiration these days from Ruby on Rails and Lotus Notes; in fact I am working on a "Lotus Notes in the Age of A.I." using arangodb as a back end and python asyncio on the front.
I find a nice solid API can be turned into any sort of application front-end and is very testable (and in your case might help simplify any 3rd party integrations you might be interested in)
My definition of a good database design is that it models the domain well and will be flexible to support the user experience that you want.
The one constant is that your idea of the ideal user experience will change -- changing the database design is expensive once you have data in it, so you want to design it so future changes won't be hard.
I take inspiration these days from Ruby on Rails and Lotus Notes; in fact I am working on a "Lotus Notes in the Age of A.I." using arangodb as a back end and python asyncio on the front.