I would recommend you build a Custom module (docs.kentico.com/.../creating-custom-modules)
You can then create custom classes, enforce your requirements and create dedicated code files for (provider and classes). So you can also get strongly typed objects in code. You'll have to setup your own caching but that is probably more optimized if you base it on your own requirements.
If you want you can even create your own constraints on DB level, but you can also handle that in your code.
When using this setup you can quite quickly setup the editing interface for the objects: docs.kentico.com/...#Creatingcustommodules-Buildingthemoduleinterface"
Also this combines automatically with the roles and permission module, so you can setup permissions for different roles on whom can access and modify what.