Использование первичных ключей для хорошего дизайна базы данных может быть дебатом. классически в соответствии с руководством РСУБД рекомендуется создавать первичные ключи для хорошего проектирования базы данных. но теперь в течение нескольких дней наблюдается тенденция не создавать больших ограничений на стороне БД для повышения производительности, а не выполнять проверки на бизнес-уровне (не уверен, что это верно и для первичных ключей).
Теперь на ваш вопрос, Первичные ключи не являются обязательными для операций объединения, однако обязательно использовать столбцы, которые однозначно идентифицируют записи главной таблицы, в противном случае могут генерировать ложные записи.
отдел
| dept| sub_dept | dsc |
| CS | CS | Computer sc.|
| CS | IT | Info Tech. |
студент
| Name | age | sex | dept | sub_dept|
| abcd | 025 | M | CS | CS |
| wxyz | 023 | M | CS | IT |
Теперь, если вы присоединитесь таблицы на sub_dept вы получите правильные результаты.
select s.name, s.age, s.sex, d.dsc from student s, department d where
s.sub_dept = d.sub_dept
| Name | age | sex | dsc |
| abcd | 025 | M | Computer Sc. |
| wxyz | 023 | M | Computer Sc. |
, если вы присоединитесь таблицы на колонке DEPT вы получите ложные кортежи (2 дополнительные строки)
select s.name, s.age, s.sex, d.dsc from student s, department d where s.dept = d.dept
| Name | age | sex | dsc |
| abcd | 025 | M | Computer Sc. |
| wxyz | 023 | M | Computer Sc. |
| abcd | 025 | M | Info Tech. |
| wxyz | 023 | M | Computer Sc. |