Несколько недавних вопросов обсуждают стратегии именования столбцов, и я был довольно удивлен, обнаружив концепцию встраивания понятия внешнего и первичного ключей в имена столбцов. Это
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo_pk = t2.id_foo_fk
Я должен признаться, что я никогда не работал ни в одной системе баз данных, которая использует такую схему, и мне интересно, каковы преимущества. На мой взгляд, как только вы изучите N основных таблиц системы, вы напишете на несколько порядков больше запросов с этими таблицами.
Чтобы стать продуктивным в разработке, вам нужно узнать, какие таблицы являются важными таблицами, а какие - простыми притоками. Вы захотите зафиксировать большое количество имен столбцов в памяти. И одна из основных задач - объединить две таблицы. Чтобы сократить объем обучения, проще всего убедиться, что имя столбца одинаково в обеих таблицах:
select t1.col_a, t1.col_b, t2.col_z
from t1 inner join t2 on t1.id_foo = t2.id_foo
Я полагаю, что как разработчику вам не нужно напоминать о том, какие столбцы являются первичными ключами, какие являются внешними, а какие - ничем. Достаточно легко взглянуть на схему, если вам интересно. При просмотре случайного
tx inner join ty on tx.id_bar = ty.id_bar
... это так важно знать, какой из них является внешним ключом? Внешние ключи важны только для самого ядра базы данных, что позволяет ему обеспечивать ссылочную целостность и делать правильные вещи во время обновлений и удалений.
Какая проблема здесь решается? (Я знаю, что это приглашение к обсуждению, и не стесняйтесь это делать. Но в то же время я * ищу ответ, поскольку я могу что-то действительно упустить).