We're building a personnel system for an HR department. The final solution will be sitting in SharePoint 2007 (upgrading to 2010 in 6-12 months). We've built a data model, and now we're faced with a dilemma. Should we try to build SharePoint lists to cram the data into the database using event receivers, or should we just build an ASP.NET web app using application pages and "fake" the SharePoint interface?
Pros of the SharePoint lists are free/familiar user interface, recycle bin, versioning on the list. Cons are needing to update the database either in batch mode or real-time, lists would require some duplication of fields to get cascading drop-downs and other user interface features (eg: filtering a list view with another list).
Having a normalized database really helps with referential integrity, which can be built-in to the lists via event receivers. We can also achieve our reporting requirements with the database. If we built our ASP.NET web app, we'd have to implement the recycle bin and versioning ourselves, and we'd have to mimic the SharePoint UI anyway.
So is there a way to get the best of both worlds? I want the UI of SharePoint, but the referential integrity of a transactional database.