I've run across some tables that are using a number of lookup tables in order to reference their specific values. This makes the database design extremely complicated for structures that could have only been 5 tables expanding into 20+ tables because of lookups. I've looked around but have seen no discussion on if using a lookup table is a good practice.
On one had, lookup tables let you manage your domains, allows adding new values to the domain, and shows devs/dbas that there is a domain to be followed. But at the same time, lookup tables clutter your database, add unnecessary business logic into the core data tables, and make obtaining information from the tables more complex. It also requires domain lookups to be executed through a database fetch which adds additional runtime to the application using it.
Without lookup tables, the data is easily presentable, creates less clutter in the database, and makes the database design easier to see. However, it makes anyone looking at the data unable to determine if the values in a specific column are tied to a domain, and, if there is a domain, makes managing the domain done through the application.
My question is: With modern standards, are lookup tables a good practice to be implementing?