Advertisement
Guest User

Untitled

a guest
Dec 5th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. ### Руководство по проектированию базы.
  2. 1) ВСЕ поля и ВСЕ названия таблиц в snake_case.
  3. 2) ВСЕ таблицы во множественном числе. Исключения в словах, где множ. число применить нельзя.
  4. 3) Когда поле должно быть bool: is_seller -> tinyint 1. Желательно добавить not null и default значение. Перед названием поля пишем приставку is_ чтобы понимать что оно bool типа просто посмотрев на него.
  5. 4) Поля для фильтрации, такие как: status, type и т.д. (где ограниченное фиксированное количество значений) - tinyint (4) поле с обычным индексом. ТАБЛИЦУ один-ко-многим НЕ делаем. Значения будут указаны в коде приложения. В комментарии к полю пишем возможные значения.
  6. 5) В каждой таблице поле id - unsigned int (10), primary, not null, auto increment
  7. 6) Поля-ссылки (Н: cities -> city_id (одиночная форма)) - unsigned int (10), not null (там где НУЖНО, можно убрать NOT NULL)
  8. 7) Наименование индексов на поля-ссылки. Н: city_id -> city_id_idx
  9. 8) Наименование уникальных ключей. Н: slug -> slug_idx_uniq
  10. 9) Наименование составных индексов. Н: slug + user_id -> slug_user_id_idx(_uniq опционально, если уникальный)
  11. 10) Наименование внешних ключей: table_column_id_fk. Н: Таблица addresses ссылается на cities - addresses_city_id_fk.
  12. 11) ON_DELETE - cascade, ON_UPDATE - restrict
  13. 12) В каждой таблице которая представляет собой некую сущность (persons, cities, etc.) добавляем поля:
  14. 13) created_at - timestamp, nullable, default CURRENT_TIMESTAMP
  15. 14) updated_at - timestamp, nullable, default CURRENT_TIMESTAMP и ставим опцию "On Update Current_Timestamp".
  16.  
  17.  
  18. ### Примечание
  19. 1) При использовании symfony/doctrine использовать в 12 пункте datetime nullable, а не timestamp
  20. 2) Если не использовать unsigned, то пишем int (11) в id полях.
  21. 3) В symfony/doctrine ОСТАВЛЯЕМ внешние ключи по умолчанию т.е. не задаем им имена. Доктрина все равно перепишет на свои при генерации таблиц с Entities.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement