I have many years of experience as a software engineer, and have worked extensively with databases, mostly Oracle and Postgres. I use what might charitably be called an informal design methodology for database schemas. I sketch out something like an E/R diagram, and I then generate DDL from there. Over time, I modify the schema from there as more requirements arrive. I had rigorous training on the academic side of computer science, and I wrote MSc and PhD dissertations on topics relating to databases. I understand dependencies, normal forms, and the decomposition approach. And I find this approach to schema design to be completely useless in the real world.
I am now teaching a senior-level course on database systems, and I dutifully covered the classical material on schema design, including dependenices, normal forms, decomposition. But I remain unconvinced of the actual value of this approach.
The textbook discussions of these theoretical topics, start with very badly designed schemas, and functional dependencies that come from ... well, I don't know. They're just there, and then they guide you to a better schema. But starting with a good Entity/Relationship model, you probably start with a pretty good schema. And if you understand what your entities are, and what their attributes are -- aren't you basically starting with tables already in BCNF?
For those of you who design and maintain schemas, do you actually use dependency theory and normal forms? Or do you just wing it like I do?