Bạn nên cố gắng để có một khóa chính trong bất kỳ bảng không tầm thường nơi bạn đang có khả năng muốn truy cập (hoặc cập nhật hoặc xóa) các hồ sơ cá nhân của khóa đó. Các khóa chính có thể bao gồm nhiều cột và chính thức nói, sẽ là siêu khóa có sẵn ngắn nhất; có nghĩa là, các nhóm cột có sẵn ngắn nhất, cùng nhau, xác định duy nhất bất kỳ hàng nào.
Tôi không biết lược đồ cơ sở dữ liệu Stack Overflow trông như thế nào (và từ một số điều tôi đã đọc trên blog của Jeff, tôi không muốn), nhưng trong trường hợp bạn mô tả, nó hoàn toàn có thể có một khóa chính trên số nhận dạng bài đăng, số sửa đổi và giá trị thẻ; chắc chắn, đó sẽ là siêu phím ngắn nhất (và duy nhất) có sẵn.
Đối với điểm thứ hai của bạn, có thể hợp lý để tranh luận về giá trị tổng hợp trong bảng lưu trữ, nó đi ngược lại nguyên tắc mỗi giao điểm hàng/cột trong bảng phải chứa một giá trị duy nhất. Mặc dù nó có thể đơn giản hóa việc phát triển, không có lý do gì bạn không thể giữ một bảng bình thường với siêu dữ liệu đã được phiên bản, thậm chí cho một thứ gì đó tầm thường như các thẻ.
Tôi hy vọng bạn nhận thấy câu cuối cùng của bạn đã bị coi là không thể hiểu được bởi nhiều người. – kch
Có thể trùng lặp [Mỗi bảng và mỗi bảng có khóa chính không?] (Https://stackoverflow.com/questions/840162/should-each-and-every-table-have-a-primary-key) –