Ich denke, ich weiß inzwischen Bescheid:
1. Den Straßenname in einer Tabelle (z.B. "Kunden") anzugeben, führt zwar zu Redundanzen, diese werden aber in der Praxis an dieser Stelle oft akzeptiert.
Komplette Redundanzfreiheit hat kaum eine echte Datenbank und wäre auch nicht zielführend (wäre ein unverhältnismäßig hoher Aufwand).
Die ersten 3 Normalformen sind damit auch nicht verletzt, die 4. NF aber schon! Genau die regelt sowas, wird aber in der Praxi aus o.g. Gründen nur selten angewandt.
2. PLZ und Stadtnamen sind, wie schon genannt, m:n. Es gibt PLZ, die sich auf mehrere Städte beziehen und es gibt Städte, die mehrere PLZ haben.
Wenn ich aber in PLZ und Stadtname in eine Tabelle schreibe, ohne extra ID, und den PK über beide Attribute ziehe, dann ist die ganze Sache elegant gelöst.
Also, für die Prüfung:
Falls nichts anderes angegeben ist, StrasseHnr oder Strasse + Hnr in der Tabelle belassen, PLZ + Stadt in extra Tabelle mit PK über beide Attribute, fertig.
(4. NF ist damit noch verletzt, aber die wird ja nicht abgefragt)