Вот как я это делаю:Есть ли соглашение об именах для MySQL?
- имена таблиц в нижнем регистре, использует подчеркивания для разделения слов, и являются особыми (например, «Foo», «foo_bar» и т.д.
- я обычно (не всегда) имеют auto increment PK. Я использую следующее соглашение: tablename_id (например, «foo_id», «foo_bar_id» и т. д.).
- Когда таблица содержит столбец, являющийся внешним ключом, я просто копирую имя столбца этого ключ из любой таблицы, из которой он пришел. Например, таблица table 'foo_bar' имеет FK 'foo_id' (где 'foo_id' является PK из 'foo').
- При определении FK для enfo rce референциальная целостность, я использую следующее: tablename_fk_columnname (например, в соответствии с примером 3 это будет «foo_bar_foo_id»). Поскольку это комбинация имен таблиц/столбцов, она гарантирована быть уникальной в базе данных.
- Приказываю столбцы, как это: ПКС, ФКС, то остальная часть колонн по алфавиту
Есть лучше, более стандартный способ сделать это?
Неправильно использовать для автоматического увеличения PK jus t "id"? Зачем? Имя столбца имеет смысл только в контексте таблицы. Поэтому у меня есть один «id» в каждой таблице и может иметь много id_ для FK. –
Zbyszek
@Zbyszek Я думаю, что простейшая причина в том, что это просто для согласованности/простоты. Вместо того, чтобы иметь 'id_tableB' => * oh no * ** столбцы с разными именами **' id', согласованность 'id_tableB' =>' id_tableB' просто выглядит более аккуратно ... или как OP делает это: 'foo_id' => 'foo_id', а не' foo_id' => 'id' – mmcrae