Joe Celko (sql guru) nói rằng chúng ta không nên sử dụng các kiểu dữ liệu độc quyền và đặc biệt hạn chế những thứ cấp máy như bit hoặc byte vì SQL-Server sử dụng ngôn ngữ cấp cao. Về cơ bản, nguyên tắc mô hình hóa dữ liệu là trừu tượng hóa dữ liệu. Vì vậy, sành điệu các khuyến nghị trên cho các lĩnh vực như "IsActive" vv, những gì sẽ là sự lựa chọn đúng cho các loại dữ liệu, một trong đó là rất xách tay và một trong đó là giải mã rõ ràng bởi các lớp kết thúc trước? Cảm ơn!Trình bày dữ liệu "Cái gì đó" trong SQL-Server
Trả lời
Trong SQL Server, tôi sẽ dùng loại dữ liệu BIT
phù hợp với yêu cầu trừu tượng mà bạn mô tả: nó có thể có 2 giá trị (ánh xạ tới Có và Không theo quy ước được sử dụng rộng rãi của Yes = 1 và No = 0). Nó có thể có giá trị NULL bổ sung nếu muốn.
Nếu có thể, sử dụng các kiểu dữ liệu gốc có tất cả các lợi ích về hiệu suất, sự rõ ràng và dễ hiểu đối với người khác. Chưa kể đến nguyên tắc không quá phức tạp khi bạn có thể giữ chúng đơn giản.
Máy chủ SQL không có loại dữ liệu Boolean để Boolean không tham gia vào câu hỏi. BIT là một số số loại chấp nhận các giá trị 0 và 1 cũng như null. Tôi thường thích loại CHAR có ràng buộc CHECK cho phép các giá trị như "Y"/"N" hoặc "T"/"F". CHAR ít nhất cho phép bạn mở rộng tập hợp các giá trị thành nhiều hơn hai giá trị nếu bạn muốn.
BIT có bất lợi tiềm năng là nó không chuẩn, không đặc biệt thân thiện với người dùng và cũng không được người dùng SQL Server hiểu rõ. Các ngữ nghĩa của BIT rất đặc biệt trong SQL Server và thậm chí cả các sản phẩm của Microsoft đối xử với BIT theo những cách không phù hợp.
- 1. Cách trình bày dữ liệu sau trong XML?
- 2. Sự khác biệt giữa vị trí ruột kết trong: cái gì đó và cái gì đó:
- 3. Cách trình bày dữ liệu âm thanh nổi cho FFT
- 4. Trình bày không giới hạn trong cơ sở dữ liệu với kiểu dữ liệu số
- 5. xác thực cấu trúc dữ liệu python bằng Validator (hoặc một cái gì đó tương tự)
- 6. Cách trình bày nhiều dữ liệu chuỗi thời gian tới SVM (ksvm) trong R (hoặc, Cách trình bày dữ liệu đầu vào hai chiều vào SVM)
- 7. Bỏ trống vào một cái gì đó?
- 8. C# Cái gì đó nhanh hơn Console.Write()?
- 9. JBoss 7 AS nguồn dữ liệu cho SQLServer
- 10. SqlServer/MyBatis SqlMapConfig thiết lập nguồn dữ liệu
- 11. Javascript ngữ: một cái gì đó && function()
- 12. Cái gì đó tương tự như split()?
- 13. Trình bày UIActivityViewController trong Swift
- 14. Cách tạo một cái gì đó trong PowerShell
- 15. postgresql - java - đánh thức ứng dụng khi một cái gì đó trong cơ sở dữ liệu xảy ra
- 16. Làm thế nào để có được một cái gì đó ngẫu nhiên trong kho dữ liệu (AppEngine)?
- 17. Cách dễ nhất để xuất cơ sở dữ liệu SQLServer 2000 sang XML là gì?
- 18. ElasticSearch hoặc Couchbase hoặc một cái gì đó khác
- 19. Cách lấy tên Cơ sở dữ liệu của sqlserver
- 20. Một cái gì đó như tăng :: multi_index cho Python
- 21. Có cái gì đó giống như Python 'với' trong C#?
- 22. Làm thế nào để trình bày dữ liệu phân cấp trong ứng dụng iPhone?
- 23. Làm thế nào để trình bày dữ liệu không gian trong Cassandra
- 24. Tại sao đặt một khai báo tài liệu XHTML trên các tệp HTML? Cái đó làm cái gì?
- 25. Trình bày thứ tự trong một cơ sở dữ liệu quan hệ
- 26. một cái gì đó sai trong chương trình của tôi bằng cách sử dụng GData xmlsupport
- 27. Tên ADT. `Trái a` là gì, và sau đó cái gì là` a`, trong Haskell?
- 28. Bạn sẽ trình bày dữ liệu 3D sau đây như thế nào trong Matplotlib hoặc Mayavi?
- 29. Liệu Perl có một cái gì đó giống như Java/PHP Docs?
- 30. Cách tạo bot trên web? (hoặc một cái gì đó)
Có, giả sử chỉ có hai giá trị có thể là "Có" và "Không". –
'Boolean' có vẻ hợp lý với tôi mặc dù việc triển khai của nó khác nhau giữa các phương ngữ SQL. –
@Jarvis. . . Có vẻ như một ý tưởng hay nếu cơ sở dữ liệu của bạn hỗ trợ 'boolean'. Không phải tất cả. Câu hỏi của bạn sẽ tốt hơn nếu nó nói: "Tôi muốn đại diện cho cờ boolean trong một cơ sở dữ liệu cụ thể. Cách tốt nhất là gì?" - sau đó cũng gắn thẻ câu hỏi với cơ sở dữ liệu bạn đang sử dụng. –