Q:

Правильно ли используеться UNIQUE KEY

Пусть есть три таблици: студенты, жилье и еще какая - то.
В жилье поля: id автоинкрементированное, town, street, flat_number.
Чтобы запись в жилье не повторялась следует сделать UNIQUE KEY (id, town, street, flat_number) и правильно ли я написал? После этого создаем PK (id) и таким образом могут в третей таблици уже быть ссылки на записи из жилья и не буде ошибок,как если бы в жилье я создал два первичных ключа?
Второе. А если бы не было третей таблици со ссылками, можно бы ло сделать через PRIMARY KEY, а не UNIQUE KEY? 

A:

Если я правильно вас понял то: нет unique key должын быть другим.
Должно быть: UNIQUE KEY (town, street, flat_number) иначе строки с одинаковыми town, street, flat_number могут повторятся с разными id.
"Как если бы в жилье я создал два первичных" - таблицы не могут иметь двух первичных ключей, но вы можете эмулировать первичный ключ. PRIMARY KEY это тоже смое что и UNIQUE + NOT NULL. Если вам нужно эмулировать первичный ключ то можете навесить на это поле/поля unique и not null (not null должны быть все поля в ключе).
"Второе. А если бы не было третей таблици со ссылками, можно бы ло сделать через PRIMARY KEY, а не UNIQUE KEY" --- если вам не нужна уникальность по жилью, и таблица студентов приведена просто так (она не зависит ни от жилья ни от 3ей таблицы), то да. Но зачем, в таком случае, в вопросе упомянута таблица студентов если от неё ничего не зависит?

