Câu trả lời:
Bạn nên mô tả mục đích của cột và không nhất thiết phải là kiểu dữ liệu. Bạn có thể bao gồm ngày / thời gian / dấu thời gian trong tên, nhưng bạn cũng nên bao gồm ý nghĩa. Ví dụ
Thêm Ngày / Thời gian / Dấu thời gian và như vậy vào cuối là đặc biệt hữu ích khi sự bỏ qua của bổ sung sẽ xung đột với một cột khác. Ví dụ: một bảng có thể cần cả Status và StatusTime.
Làm thế nào về xyz_at
một timestamp
và xyz_on
cho một date
lĩnh vực - ví dụ start_at
hoặc start_on
?
Thông thường tôi sẽ tránh đưa loại dữ liệu vào tên trường - tốt hơn nhiều nếu bạn có thể suy ra những gì bạn cần biết về loại từ tên của bất kỳ trường nào (một trường được gọi description
là không chắc là một integer
) - nhưng có thể nói sự khác biệt giữa a timestamp
và a date
thường hữu ích.
Tôi sử dụng:
updated_at
có thể là một trong hai. Nhưng tôi nghĩ rằng câu trả lời là, như mọi khi với việc đặt tên, sử dụng tên ngắn gọn nhất để loại bỏ tất cả sự mơ hồ thực tế. Tức là nếu trong một bối cảnh cụ thể có tiềm năng cho một sự nhầm lẫn nào đó, loại bỏ nó, nhưng không sử dụng những cái tên được tiết hơn là cần thiết cho rằng
Tôi đã xem hồ sơ của bạn và nó nói rằng bạn làm việc với SQL Server và trong kiểu dữ liệu TIMESTAMP của SQL Server không liên quan gì đến ngày hoặc thời gian và nó được sử dụng để loại phiên bản dập các hàng. Điều này rất hữu ích trong việc xác định hàng nào đã được sửa đổi từ một thời điểm nhất định.
Nếu bạn sử dụng TIMESTAMP thì bạn không phải chỉ định tên cột và SQL Server sẽ tạo cột "TimeStamp" cho bạn. Nhưng nên sử dụng kiểu dữ liệu "ROWVERSION" và trong trường hợp này bạn phải chỉ định tên cột.
Tên tốt nhất cho một cột như thế này là gì? Nó phụ thuộc và tôi sẽ sử dụng một cái gì đó như VersionStamp, RV, v.v ... Điều tôi cho là quan trọng KHÔNG phải là cách bạn đặt tên cho nó mà là bạn sử dụng nó một cách nhất quán trên bảng.
HTH
Tham chiếu: http://msdn.microsoft.com/en-us/l Library / ms182776 (v = sql.90) .aspx
Tôi thấy rằng việc sử dụng các tên cột như create_time
, update_time
và expire_time
dẫn đến khả năng đọc tốt hơn khi nói đến cách đặt tên phương thức và thông số kỹ thuật (RSpec).
Tôi thích sử dụng tiền tố của DT cho tem ngày. Ví dụ: DTOpened, DTCloses, DTLastAccessed. Điều này cho phép tôi liệt kê tất cả DTxxxx để tham khảo nhanh tất cả các tem ngày trong một bảng nhất định.
Tôi làm việc cho Texas Cụ và trên hệ thống của họ, họ sử dụng xxxx_ dttm
Tôi thích sử dụng các quy ước đã tồn tại.
Unix và ngôn ngữ lập trình có một quy ước được chấp nhận rộng rãi của mtime
cho Thời gian Sửa đổi
Đối với thời gian tạo
btime
crtime
otime
(không hỏi, đoán "nguồn gốc").Vì vậy, đối với tôi, tôi chọn mtime
và crtime
cho dữ liệu meta.
Đối với dữ liệu do người dùng cung cấp, tôi đi với những gì trường đại diện. Nếu đó là sinh nhật, tôi chỉ nói user_birthday
.
Theo như độ chính xác, đối với một số người dường như treo chúng lên quá nhiều độ chính xác. Bạn có thể lưu trữ birthdate
dưới dạng dấu thời gian (sau tất cả những gì bạn được sinh ra về mặt kỹ thuật tại một thời điểm trong ngày), nhưng thông số SQL có độ chính xác cao hơn đến độ chính xác thấp hơn vì vậy nếu bạn sử dụng cơ sở dữ liệu đàng hoàng thì đây không phải là vấn đề . Trong chính ứng dụng của bạn, bạn luôn có thể cắt ngắn khi cần. Đó là để nói, tôi sẽ không bao giờ đi birthday_date
.
Tôi sẽ sử dụng một tiền tố có ý nghĩa và _TSMP làm hậu tố, ví dụ CREATION_TSMP hoặc LAST_UPDATE_TSMP
Theo đề xuất của @Evan Carroll, hãy tuân thủ các tiêu chuẩn hiện có trừ khi bạn có lý do mạnh mẽ để phá vỡ mô hình.
Nếu đây là một cái gì đó mới thì bạn có thể làm theo bất kỳ câu trả lời nào phù hợp nhất với bạn.
Tôi sử dụng * _on và * _by vì nó giúp tôi giữ nó nhất quán khi nào và ai trong hàng:
- created_on & created_by
- updated_on & updated_by
- deleted_on & deleted_by -- soft delete
- approved_on & approved_by