Я вижу удобство того, что user_id
в таблице «Этаж» позволяет вам выполнить одно присоединение к таблице «Пользователи». Однако существует вероятность несоответствия. Допустим, кто-то вручную ввел в базу данных:
floor_id floor_name facility_id ( user_id )
5 floor1 13 2
6 floor2 14 2
Теперь, если вы доберетесь до пользователя через средство, мы получим пользователя 3, и если мы перейдем непосредственно от пола к пользователю, мы получим пользователя 2.
Согласованность можно обеспечить, указав, что отношение внешнего ключа между объектом и полом находится в двух столбцах (user_id, facility_id)
. Вы по-прежнему можете присоединиться к Floor to User, но даже вручную ввести несогласованный (facility_id, user_id)
в Floor невозможно, пара должна соответствовать существующей строке в Facility (id, user_id)
.