ユニークとは?
たとえば、ログイン機能を作ります。
emailカラムは他のユーザーと重複することを禁止したいです。
その時!emailにユニーク制約をかけることで
emailカラムは重複値を許容しなくなります。
Mysql Raw Sqlでユニークをかける方法(usersテーブルを作成する時にかける場合)
CREATE TABLE users (
email varchar(50) UNIQUE,
...
)
Mysql Raw Sqlでユニークをかける方法(既にusersテーブルがある場合)
ALTER TABLE users ADD CONSTRAINT users_email_unique UNIQUE (email);
⚠️既存のデータに重複が存在する場合、重複削除処理を事前にする必要があります。
Laravelのマイグレーションでユニーク制約をかける方法(usersテーブルを作成する時にかける場合)

ユニークにしたいカラム->unique()
を指定すればOK。
Laravelのマイグレーションでユニーク制約をかける方法(既にusersテーブルがある場合)

⚠️既存のデータに重複が存在する場合、重複削除処理を事前にする必要があります。
もっと条件を入れたい場合
たとえば、部署が違う人のであれば、同じemailアドレスを許容したい!
どうすればいいでしょうか。
二つのカラムにそれぞれユニークをかける?
そうなると部署が同じユーザーは作れなくなりますね。
ユニーク制約には複数のカラムを登録することができます。
コードで見ると
このようにです。
このように複数のカラムにユニーク制約をかけることを
複合ユニーク(Composite Unique)と言います。
今回の例で言うと(部署、メールアドレス)ペアが同じ値だと許容しないことになります。
これで部署が違う場合同じメールアドレスでも会員登録ができるようになります。
3つのカラムで複合ユニークを登録すると、3つの値が全部同じ場合許容しなくなることになります。