PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có phải thiết kế tồi khi sử dụng các mảng trong cơ sở dữ liệu không?

Câu trả lời ngắn gọn cho tiêu đề :Không

Câu trả lời dài hơn một chút :

Bạn nên học cách sử dụng mảng khi thích hợp. Mảng không phải là thiết kế tồi, chúng giống như một trường thay đổi ký tự (mảng ký tự, không?) Và chúng tồn tại để làm cho cuộc sống của chúng ta dễ dàng hơn và cơ sở dữ liệu của chúng ta nhanh hơn và nhẹ hơn. Có vấn đề về tính di động (hầu hết các hệ thống cơ sở dữ liệu không hỗ trợ mảng hoặc làm như vậy theo cách khác với Postgres)

Ví dụ:

Bạn có một blog với các bài đăng và thẻ, và mỗi bài đăng có thể có 0 hoặc nhiều thẻ. Điều đầu tiên nghĩ đến là tạo một bảng khác với hai cột postidtagid và gán các thẻ trong bảng đó.

Nếu chúng ta cần tìm kiếm thông qua các bài đăng có tagid, thì bảng bổ sung là cần thiết (tất nhiên là với các chỉ mục thích hợp).

Nhưng nếu chúng ta chỉ muốn thông tin thẻ được hiển thị dưới dạng thông tin bổ sung của bài đăng, thì chúng ta có thể dễ dàng thêm cột mảng số nguyên trong bảng bài đăng và trích xuất thông tin từ đó. Điều này vẫn có thể được thực hiện với bảng bổ sung, nhưng việc sử dụng một mảng làm giảm kích thước của cơ sở dữ liệu (không cần thêm bảng hoặc hàng thừa) và đơn giản hóa truy vấn bằng cách cho phép chúng tôi thực hiện các truy vấn đã chọn của mình bằng cách tham gia một bảng ít hơn và có vẻ dễ hiểu hơn bằng mắt người (phần cuối nằm trong mắt người xem, nhưng tôi nghĩ tôi nói phần lớn ở đây). Nếu các thẻ của chúng tôi được tải trước, thì thậm chí không cần một phép nối.

Ví dụ có thể kém nhưng đó là ví dụ đầu tiên tôi nghĩ đến.

Kết luận :

Mảng không cần thiết. Chúng có thể gây hại nếu bạn sử dụng sai. Bạn có thể sống mà không có chúng và có một cơ sở dữ liệu tuyệt vời, nhanh chóng và được tối ưu hóa. Khi bạn đang xem xét tính di động (ví dụ:viết lại hệ thống của bạn để hoạt động với các cơ sở dữ liệu khác) thì bạn không được sử dụng mảng.

Nếu bạn chắc chắn mình sẽ gắn bó với Postgres, thì bạn có thể yên tâm sử dụng các mảng ở những nơi bạn thấy thích hợp. Chúng tồn tại là có lý do và không phải là thiết kế xấu cũng như không tuân thủ. Khi bạn sử dụng chúng ở những nơi thích hợp, chúng có thể giúp một chút trong việc đơn giản hóa cấu trúc cơ sở dữ liệu và mã của bạn, cũng như tối ưu hóa không gian và tốc độ. Đó là tất cả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - vô hiệu hóa các ràng buộc

  2. Tại sao chúng ta cần các nhà môi giới tin nhắn như RabbitMQ trên cơ sở dữ liệu như PostgreSQL?

  3. Triển khai thiết lập đa trung tâm dữ liệu cho PostgreSQL - Phần thứ hai

  4. Lưu đầu ra PL / pgSQL từ PostgreSQL vào tệp CSV

  5. làm thế nào để sao chép dữ liệu từ tệp sang PostgreSQL bằng JDBC?