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

Cách lưu trữ mảng hoặc nhiều giá trị trong một cột

Bạn có một vài câu hỏi ở đây, vì vậy tôi sẽ giải quyết chúng một cách riêng biệt:

Tôi cần lưu trữ một số mục đã chọn trong một trường trong cơ sở dữ liệu

Nguyên tắc chung của tôi là:không. Đây là điều mà tất cả ngoại trừ yêu cầu bảng thứ hai (hoặc thứ ba) với khóa ngoại. Chắc chắn, bây giờ có vẻ dễ dàng hơn, nhưng điều gì sẽ xảy ra nếu trường hợp sử dụng đi kèm với nơi bạn cần thực sự truy vấn từng mục đó? Điều đó cũng có nghĩa là bạn có nhiều tùy chọn hơn để khởi tạo lười biếng và bạn có trải nghiệm nhất quán hơn trên nhiều khung / ngôn ngữ. Hơn nữa, bạn ít có khả năng gặp vấn đề về thời gian chờ kết nối hơn (30.000 ký tự là rất nhiều).

Bạn đã đề cập rằng bạn đang suy nghĩ về việc sử dụng ENUM. Các giá trị này có cố định không? Bạn có biết chúng trước thời hạn? Nếu vậy, đây sẽ là cấu trúc của tôi:

Bảng cơ sở (những gì bạn có bây giờ):

| id primary_key sequence
| -- other columns here.

Bảng mục:

| id primary_key sequence
| descript VARCHAR(30) UNIQUE

Bảng bản đồ:

| base_id  bigint
| items_id bigint

Bảng bản đồ sẽ có các khóa ngoại để base_id ánh xạ tới bảng Cơ sở và items_id sẽ ánh xạ tới bảng item.

Và nếu bạn muốn một cách dễ dàng để lấy dữ liệu này từ DB, thì hãy tạo một dạng xem mà nó tham gia. Bạn thậm chí có thể tạo các quy tắc chèn và cập nhật để thực tế bạn chỉ xử lý một bảng.

Tôi nên sử dụng định dạng nào để lưu trữ dữ liệu?

Nếu bạn phải làm điều gì đó như thế này, tại sao không chỉ sử dụng một chuỗi ký tự được phân định? Nó sẽ tốn ít sức mạnh xử lý hơn CSV, XML hoặc JSON và nó sẽ ngắn hơn.

Tôi nên sử dụng loại cột nào để lưu trữ dữ liệu?

Cá nhân tôi sẽ sử dụng TEXT . Có vẻ như bạn sẽ không thu được gì nhiều khi đặt cái này thành BLOBTEXT , theo kinh nghiệm của tôi, sẽ dễ đọc hơn nếu bạn đang sử dụng một số dạng IDE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách sửa lỗi OperationalError:(psycopg2.OperationalError) máy chủ đóng kết nối đột ngột

  2. Các hàm Ngày &Giờ trong PostgreSQL

  3. Sự cố khi nhập tệp txt vào postgres bằng php

  4. Làm thế nào để sử dụng kiểu dữ liệu Postgres JSONB với JPA?

  5. Chuyển đổi ký tự Unicode thoát trở lại ký tự thực trong PostgreSQL