Should databases be considered air-tight, secure, idiot-proof houses of information or a convenient way to store/retrieve specialized data? It seems like if you try to optimize one, you’re often sacrificing the other. And if it’s truly dependent on the project, what has been more often the focus of your personal database design?

More specifically, should the goal of database design be to remove redundancies between tables and focus on relationships between them, or should the goal be to provide the information in a way that most programmers can write short and simple sql to get the information they need, quickly?

In software engineering, it seems like the primary focus is almost always to provide meaningful abstractions that are only as complicated as they need to be so that future changes can be made more easily. Which approach do you think better aligns with that idea?

submitted by /u/TheAuthenticOne
[link] [comments]