169 похожих чатов

Всем привет! У меня возник вопрос по именованию ключей в

таблицах, собираю различные мнения, надеюсь, кто-нибудь сможет дать ответ в пользу одного из вариантов)

Ситуация следующая: есть база данных с множеством таблиц. Возьмем для примера две таблицы: items (товары) и manufacturers (производители)
У каждого производителя может быть множество товаров в таблице items, там есть внешний ключ manufacturer_id, который ссылается на первичный ключ в таблице manufacturers

Вопрос заключается в именовании первичных ключей в таблицах. Я вижу два варианта:

1. В каждой таблице использовать поле id в качестве первичного ключа
2. В каждой таблице называть первичный ключ по типу данных в этой таблице. К примеру, в таблице manufacturers первичным ключом будет поле manufacturer_id, в таблице items первичным ключом будет поле item_id и так далее

Как думаете, какой из вариантов лучше?

12 ответов

58 просмотров

Нейминг таблиц и полей у каждой конторы свой. В первую очередь надо думать о саппорте новым человеком. Самое верное - ключи зовется по названию таблицы + id. Не так быстро при написании кода, зато потом без алиасов можно. А потом в Селесте будет два Айди, их все равно переименовать на вывод придется

Будешь джойнить таблицы - придется все равно название таблицы писать )

Lancashire Heeler
Нейминг таблиц и полей у каждой конторы свой. В пе...

По вашей логике все поля так нужно именовать item_name, manufacturer_name, etc...

Lancashire Heeler
Будешь джойнить таблицы - придется все равно назва...

я про сценарий select * from items join manufacturers on item.manufacturer_id = manufacturers.manufacturer_id есть конечно using, но он работает в ограниченном числе случаев (буквально только в этом, наверное)

Slava Rozhnev SQLtest.online https://phpize.online
По вашей логике все поля так нужно именовать item_...

Неа. Просто если айдишник наверняка пойдет в джоины - почему бы его сразу не назвать как-то? Чтобы потом каждый программист не изобретал свой нейминг для алиасов, чтобы потом не путаться

Lancashire Heeler
Неа. Просто если айдишник наверняка пойдет в джоин...

нейминг для алиасов должен передавать смысл -- сразу видно перевод денег с клиентского счета на банковский, и тп select from accounts client_acc join transfers t on t.debit_acc = client_acc.id join accounts bank_acc on bank_acc.id = t.credit_acc

Kirill Leontev
нейминг для алиасов должен передавать смысл -- ср...

Смотри, у тебя даже в примере нет селекта конкретных колонок. Значит на выходе два айди. Значит пойдем их называть ? Почему бы не сделать это сразу

Первый.И гадать не надо как оно там называется,и стиль будет единый в любом запросе Ещё и имена таблиц в единственном числе-и так всем понятно,что записей много

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта