Such database needs to be designed to properly reflect reality. This can’t be automated, since the semantics of the situation need to be encoded in a way that can be processed by a computer. Such then is the goal of database design: to encode propositions in such a way that can properly be processed by a database management system (DBMS).
At this point, a regular software developer comes to a stall. Since there is scarcely any formal training in database design (or formal logic) in his education, he tends to fall back haphazardly on ad-hoc methods, with severe consequences (update anomalies and data inconsitencies with huge potential downsides).