Một vài Best Practices khi thiết kế Database
Khi thực hiện một dự án Web Application, việc đầu tiên chúng ta hay nghĩ đến là việc thiết kế database làm sao cho hợp lý. Dưới đây mình xin giới thiệu với các bạn một vài best practices từ kinh nghiệm của bản thân và từ những tài liệu đã đọc được về cách thiết kế database :
1. Đặt tên cho bảng :
Tên bảng cần dễ hiểu và đoán được mục đích lưu trữ của bảng, đồng thời sử dụng kí chữ hoa ở đầu tên
Ví dụ : AdReport, CampaignGroupReport , chúng ta không nên đặt adreport,campaigngroupreport hoặc report
2. Đặt tên số ít
Chúng ta nên đặt tên số ít ví dụ : CampaignGroupReport, không cần thiết phải đặt tên CampaignGroupReports
3. Không sử dụng dấu cách trong tên bảng
Ví dụ : nên sử dụng CampaignGroupReport thay vì [Campaign Group Report]
4. Sử dụng tên bảng gắn với ID là tên của trường Primary Key nếu có thế
Ví dụ : CampaignGroupReportID
5. Sử dụng kiểu Boolean để lưu giá trị yes/no và tên trường bắt đầu bằng Is
Ví dụ : IsEnabled
6. Add trường Audit để có thể biết rằng ai tạo thêm row và khi nào, ai sửa row và khi nào
7. Sử dụng indexes để tăng tốc độ queries, với việc sử dụng Profile Analyser
8. Sử dụng nvarchar để đảm bảo tất cả các ngôn ngữ được hỗ trợ
9.Sử dụng varchar(max) khi thực sự cần thiết và nên tránh sử dụng ntext
10. Chia nhỏ bảng nếu có thể để tăng tính linh động và mềm dẻo
Ví dụ : Đối với một bảng thông tin khách hàng như sau
Customers |
CustomerID |
CustomerName |
Payment01 |
Payment02 |
Payment03 |
Payment04 |
Payment05 |
Cách tốt nhất nên chia nó thành 2 bảng gồm
Customers |
CustomerID |
CustomerName |
và
Payments |
PaymentID |
CustomerID |
PaymentNumber |
Việc làm này sẽ :
+ Giảm dung lượng lưu trữ, vì khách hành có thể sẽ không bao giờ điền hết 5 trường Payment01,Payment02,..Payment05 nếu sử dụng bảng ban đầu ta phải lưu rất nhiều dữ liệu NULL
+ Làm tăng tính mềm dẻo của hệ thống, nếu sau này hệ thống có thể có thêm nhiều hình thức thanh toán khác, thì cũng không cần phải sửa lại bảng để thêm trường mới
Mình xin dừng lại ở con số 10 cho đẹp :), chắc sẽ có rất rất nhiều những best practices khi thiết kế database chúng ta cũng có thể đọc nó trong quyển Design Database của Apress