1. SQL

1.1. Naming

  • Для названий таблиц использовать существительное в единственном числе.

  • Для названий таблиц, которые используют в качестве связующей таблицы для связи Many to Many, использовать шаблон {first_table_name}_{second_table_name}_link, где {first_table_name} - название главной (с точки зрения моделей) таблицы, {second_table_name} - название второстепенной таблицы.

  • Для названий синтетических идентификаторов избегать названия id. Лучшк использовать шаблон {table_name}_id, где {table_name} - название таблицы содержащей текущий индекс.

  • Для названий primary keys использовать шаблон pk_{table_name}, где {table_name} - название таблицы содержащей текущий primary key.

  • Для названий foreign keys использовать шаблон fk_{table_name}, где {table_name} - название таблицы содержащей текущий foreign key.

1.2. Approach

  • Использовать UPPER CASE для SQL синтаксиса.

  • Использовать lower_case для собственных названий.

Example
CREATE TABLE IF NOT EXISTS role
(
    role_id VARCHAR(255) NOT NULL,
    name    VARCHAR(255)
);
  • Добавление PRIMARY KEY для текущей таблицы осуществлять как отдельный CONSTRAINT. Добавление осуществлять с помощью оператора CREATE TABLE, но не ALTER TABLE.

CREATE TABLE IF NOT EXISTS user_role_link
(
    user_id VARCHAR(255) NOT NULL,
    role_id VARCHAR(255) NOT NULL,

    CONSTRAINT pk_user_role_link PRIMARY KEY (user_id, role_id)
);
  • Добавление FOREIGN KEY для текущей таблицы осуществлять как отдельный CONSTRAINT. Добавление осуществлять с помощью оператора CREATE TABLE, но не ALTER TABLE.

CREATE TABLE IF NOT EXISTS user_role__link
(
    user_id VARCHAR(255) NOT NULL,
    role_id VARCHAR(255) NOT NULL,

    CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES "user"(user_id)
);
  • При создании таблиц использовать оператор IF NOT EXISTS.

  • При удаление таблиц использовать оператор IF EXISTS.