あなたが学んだことは、学問的なことだけではありません。しかし、そうです、それは時々プラトンのユートピアのようです. これは、データベースが存在できる完璧な状態であり、理想的な設計です。しかし、その理想的な設計が常に可能であるとは限りません。
制約は、可能な限り DB データに近づける必要があります。このように考えてみてください。制約をコードで記述し、後で別の言語/プラットフォームに移行する必要があり、制約の 1 つでエラーが発生した場合はどうなるでしょうか? それは悲惨だろう。PK、FK、制約などは広く使用されています。それらは30年以上使用されています。したがって、それらはジャンクではありませんが、特定のシナリオでは扱いにくいだけです。たとえば、あなたが Google なら、リレーショナル モデルだけに頼ってミリ秒単位で答えを出すことはできません。
したがって、速度や安定性などの要件に基づいて、データを複製したり、PK を使用したり、関係を確立したりしないこともあります。ただし、特定の何かを探しているときと、失うものを知っているときだけです。そのようにすることで。
結局のところ、リレーショナル モデルは単なるモデルにすぎません。物事を表現する方法です。非常に成功した方法ですが、天の恵みではないため、場合によっては妥協する必要があります。