Khuyến nghị
Không nên thêm tiền tố tên bảng vào tên cột (ví dụ: user_name, user_email trong bảng user). Nên dùng tên ngắn gọn: username hoặc name.
Lý do:
- Gây thừa thãi, dài dòng:
user.user_namevsuser.username - Rủi ro歧义 khi JOIN nhiều bảng:
SELECT user_name FROM user JOIN profile...(cột nào?) - Vi phạm quy tắc đặt tên chuẩn (ISO 11179, các style guide phổ biến)
Ví dụ thiết kế tốt
mysql> create table `user` (
-> username varchar(20),
-> password varchar(20)
-> );
Query OK, 0 rows affected (0.66 sec)
mysql> insert into `user` values('John','J_635');
Query OK, 1 row affected (0.34 sec)
mysql> insert into `user` values('Carol','Carol2212');
Query OK, 1 row affected (0.16 sec)
mysql> insert into `user` values('David','@12345678');
Query OK, 1 row affected (0.14 sec)
Kết quả
mysql> select * from `user`;
+----------+-----------+ | username | password | +----------+-----------+ | John | J_635 | | Carol | Carol2212 | | David | @12345678 | +----------+-----------+ 3 rows in set (0.00 sec)
Quy tắc đặt tên cột phổ biến:
- Khóa chính:
id(không phảiuser_idtrong bảnguser) - Khóa ngoại:
user_id(trong bảng khác tham chiếu đếnuser.id) - Boolean:
is_active,has_permission(prefix is/has/can) - Timestamp:
created_at,updated_at,deleted_at - Tránh từ khóa SQL: dùng backtick hoặc đổi tên (
order→sort_order)
Khi JOIN: SELECT u.username, p.bio FROM user u JOIN profile p ON u.id = p.user_id - rõ ràng, không ambiguous.