Kunci asing harus menargetkan kunci utama atau batasan unik. Adalah normal untuk mereferensikan kunci utama, karena Anda biasanya ingin mereferensikan satu baris di tabel lain, dan kunci utama adalah pengidentifikasi baris tabel.
Dari sudut pandang teknis, tidak masalah apakah kunci asing mereferensikan kunci utama atau batasan unik lainnya, karena di PostgreSQL keduanya diimplementasikan dengan cara yang sama, menggunakan indeks unik.
Mengenai contoh konkret Anda, tidak ada yang salah dengan memiliki size yang unik kolom vehicle_size menjadi target kunci asing, meskipun itu menimbulkan pertanyaan mengapa Anda tidak membuat size kunci utama dan hilangkan id kolom sama sekali. Setiap tabel tidak perlu memiliki id kolom yang merupakan kunci utama numerik yang dibuat secara otomatis, kecuali bahwa mungkin ada ORM dan perangkat lunak lain yang mengharapkannya.