UserField custom_field reference

I have determined that user_field_15 implicitly maps to UserField(id:15)
and user_field_1 implicitly maps to UserField(id:1)

Is there any explicit mapping for UserField or is it explicitly user_field_n where n is the id for the UserField record?

Context

[79] pry(main)> user.custom_fields
=> {"user_field_2"=>"xxxx",
 "user_field_1"=>"xxxx-xxx-xxx",
 "user_field_4"=>"Fulltime",
 "user_field_8"=>"true",
 "user_field_9"=>"false",
 "user_field_13"=>"true",
 "user_field_15"=>"true"}

user_field = UserField.find_by_name("Mobile")
=> #<UserField:0x00005635bff79158
 id: 1,
 name: "Mobile",
 field_type: "text",
 created_at: Fri, 01 Feb 2019 23:05:43 UTC +00:00,
 updated_at: Mon, 08 Apr 2019 04:50:11 UTC +00:00,
 editable: true,
 description: "Your Mobile Number",
 required: false,
 show_on_profile: false,
 position: 1,
 show_on_user_card: false,
 external_name: nil,
 external_type: nil>
[81] pry(main)> 

Извините за поднятие темы. Я понял, что таблицы user_fields и user_custom_fields используют столбцы id и name соответственно в качестве своего рода «мягкой связи», но меня просто заинтересовало с точки зрения дизайна, почему это не прямое внешнее ключевое соединение? Уверен, что для этого есть веская причина, но хотел бы узнать конкретно, какие соображения легли в основу решения по проектированию базы данных!

Спасибо.