Datenbank-FK-Einschränkungen vs Programmatische FK-Einschränkungen

Obwohl ich auf MySQL / PHP abziele, möchte ich dies aus Gründen meiner Fragen allgemein auf jede relationale Datenbank anwenden, die in Verbindung mit einer modernen Programmiersprache verwendet wird. Eine andere Annahme wäre, dass die Sprache ein modernes Framework nutzt, das auf einer bestimmten Ebene implizit mit Fremdschlüsseleinschränkungen umgeht oder die Möglichkeit hat, dies explizit zu tun.

Meine Fragen:

Welche Vor- und Nachteile hat das Erstellen von FK-Einschränkungen in der Datenbank selbst, anstatt sie auf Anwendungsebene zu verwalten?

Sollten beide aus gestalterischer Sicht jemals zusammen verwendet werden, oder würde dies zu Konflikten führen?

Wenn sie nicht zusammen verwendet werden sollten, welche Vorgehensweise wird als "best practice" angesehen?

Hinweis: Dies ist eine Frage der Designtheorie. Aufgrund der Vielzahl von Technologien, mit denen eine Implementierung zufrieden gestellt werden kann, interessieren mich keine Besonderheiten in Bezug auf eine Implementierung.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage