Database Conventions
Quy định về cách đặt tên
  - Sử dung Lowercase cho việc đặt tên database, tên bảng, tên cột ..
Ví dụ : name, age. 
  - Sử dụng dấu 
_ khi nối các từ, điển hình như snake case.
Ví dụ : first_name, last_name. 
  - Dùng tiếng anh để đặt tên, tên có tính tự giải thíc,tránh việc viết tắt gây khó hiểu cho người đọc. 
Ví dụ : nên đặt tên middle_name thay vì mid_nm. 
  - Trong 1 số trường hợp từ quá dài, có thể sử dụng từ viết tắt phổ biến. 
Nếu cảm thấy chưa rõ ràng thì không nên dùng từ viết tắt.
Ví dụ: Internationalization và localization viết tắt thành i18n and l10n 
  - Không dùng từ khóa MySql và kiểu dữ liệu để đặt tên.
Ví dụ: add, after, … 
  - Tên cột không cần thêm các tiền tố không cần thiết.
Ví dụ: Tên bảng 
posts không đặt posts_title mà chỉ cần title 
  - Khi đánh Indexes thì cần đặt tên rõ ràng, bao gồm cả tên bảng và tên cột được đánh index
 
  - Các trường chỉ có 2 trạng thái TRUE/FALSE hoặc YES/NO thì nên thêm prefix 
is_
Ví dụ: is_active, is_admin 
  - Đặt tên table bằng tiếng anh ở dạng số nhiều (thêm s, es, …)
Ví dụ: users, categories, cities
    Đặt tên cho các khóa
   
  - Chỉ có 1 khóa chính đặt tên 
id 
  - Khóa ngoài được kết hợp từ tên bảng được tham chiếu đến và tên của trường được tham chiều.
Ví dụ: user_id , room_id 
  - Đối với quan hệ nhiều nhiều, tạo bảng thứ 3 được đặt tên được kết hợp từ tên của bảng thứ nhất ở dạng số ít và 
tên của bảng thứ 2 ở dạng số ít. Có 2 khóa chính, khóa chính thứ nhất là 
id của bảng thứ nhất được đặt tên theo quy tắc đặt tên khóa ngoài, 
khóa chính thứ 2 là id của bảng thứ 2 được đặt tên theo quy tắc đặt tên khóa ngoài.
Ví dụ: bảng articles và bảng categories được liên kết với nhau qua bảng thứ 3 article_category có 2 khóa chính là 
article_id và category_id. 
Thay đổi thông tin
  - Khi thêm mới, sửa thì lưu thời gian thay đổi vào 2 trường 
created_at và updated_at 
  - Trong trường hợp không xóa vật lý mà chỉ xóa logic thì lưu thời gian xóa vào trường 
deleted_at