ФорумПрограммированиеPHP для идиотов → Стандарты кодирования в БД

Стандарты кодирования в БД

  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 февраля 2009 г. 8:01

    Очень много пишут про стандарты кодирования в PHP, обмусоливая скобочки на отдельных строчках.
    Давайте помусолим насчёт именования таблиц и столбцов в БД.

    Придерживаетесь ли вы каких-либо стандартов в этом деле и каких?


    Наши:

    1. Имена таблиц и столбцов записываются в нижнем регистре. Для разделения слов используется "_".

    2. Имя таблицы соответствует названию сущностей которые в ней хранятся во множественном числе — users, groups, meets.

    3. Имена таблиц связанных с основными таблицами, дополняющие сущности и относящиеся к определённому разделу дополняются префиксом.
    Например, основная таблица `users`, связанные с ней - `users_profile` (профили пользователей), `users_params` (параметры пользователей).

    4. Таблицы, связывающие две другие, состоят из имён этих таблиц — `posts_tags` (теги статей — связывают `posts` и `tags`). Можно отступать от точного названия связываемых таблиц — `groups_members` (члены группы, связываются `groups` и `users`).

    5. При именовании столбцов следует следить за тем, чтобы по возможности одинаковые имена не пересекались при JOIN различных таблиц. Например, есть необходимость жойнить пользователей и группы, а у обоих есть имена. Поэтому столбцам с именами даются названия — `user_name`, `group_name` (используется префикс с названием сущности в единственном числе). Если в двух таблицах есть одинаковые имена столбцов, но эти таблицы никогда не пересекутся, то тут заморачиваться не обязательно.

    6. Один из столбцов, пересекающийся при жойне — идентификатор. Идентификатор именуется префиксом (сущность в единственном числе) и словом "id" - `user_id`, `group_id`.

    7. У каждой таблицы должен быть первичный ключ (не обязательно автоинкремент).

    8. Поле, выступающее в роли вторичного ключа (пусть и не физического) связывающегося с первичной таблицей по идентификатору, именуется как название сущности из первичной таблицы в единственном числе. Например, таблица `groups_members` (члены группы) содержит столбцы — `group` (связь с `groups`.`group_id`), `user` (связь с `users`.`user_id`) и дополнительные. При этом (`group`, `user`) является первичным ключем.

    9. Лучше называть столбец в соответствии с тем, что означают содержащиеся в нём данные, а не в зависимости от их структуры. Например, дату создания записи лучше назвать created (создано тогда-то), а не date (хз что за дата). Или ещё лучше `time_created`.
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 февраля 2009 г. 8:08, спустя 6 минут 35 секунд

    связанные с ней - `users_profile` (профили пользователей), `users_params` (параметры пользователей).
    почему не users_profiles?
    adw/0
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 февраля 2009 г. 8:12, спустя 4 минуты 32 секунды

    9. Лучше называть столбец в соответствии с тем, что означают содержащиеся в нём данные, а не в зависимости от их структуры. Например, дату создания записи лучше назвать created (создано тогда-то), а не date (хз что за дата). Или ещё лучше `time_created`.


    "created" как и "date" не понятное… "mkdate" и "update" куда яснее, вариант с "time_created" - самый удачный. Не экономьте на именах!
    adw/0
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 февраля 2009 г. 8:14, спустя 1 минуту 23 секунды

    почему не users_profiles?

    Не знаю, так повелось исторически :)
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 февраля 2009 г. 8:16, спустя 1 минуту 55 секунд

    vasa_c,
    Не знаю, так повелось исторически :)
    не айс, отступление от стандартов это плохо…
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!