alaca33 Foreign key veri normalizasyonu için. Amaç öksüz kayıtların oluşmasını engellemek. Foreign key kullandığınızda altında user olan kurumu silemezsiniz, yoksa user kayıtları öksüz kalır. Foreign key kullanarak bunu veri tabanı düzeyinde güvenceye almış oluyorsunuz.
ON DELETE CASCADE kullandığınızda kurumu silince user silinir. Başka bir tabloda users tablosunu ifade eden bir foreign key varsa doğal olarak hata alırsınız. Onun da ON DELETE CASCADE olması lazım, böylece users tablosunun alt kayıtları da otomatik silinebilir.
ON UPDATE CASCADE ise sizin kullandığınız şekilde eğer kurum id değişirse users tablosunda ilgili kayıtların kurum_id değerini otomatik değiştirmek için. Primary key değişmeyeceği için primary key ile işe yaramaz.
Ek olarak, foreign key ile referans aldığı key aynı özelliklere sahip olmalıdır. Biri big integer diğer unsigned big integer olamaz mesela. Ya ikisi de big integer olacak ya da ikisi de unsigned big integer olacak.
Son olarak, normalde olmayan bir kuruma user ekleyemezsiniz ama deferred foreign key ile bu işlem örneğin transaction içinde mümkün.