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

Thiết kế DB để lưu trữ các trường tùy chỉnh cho một bảng

Đây là một vấn đề phổ biến và không có giải pháp hoàn hảo. Một số giải pháp:

1. Xác định X trường kiểu varchar2, trường Y kiểu số và Z trường kiểu ngày tháng. Điều đó có khả năng gấp 3 lần số lượng trường tùy chỉnh nhưng bạn sẽ không bao giờ gặp bất kỳ vấn đề chuyển đổi nào nữa.

Ví dụ của bạn sẽ xuất hiện như sau:

Id Name field_char1  field2_char2 field_char3 ... field_num1 field_num2 ...
1  lap1 lappy        lappy        lappy       ... 12         13     
2  lap2 lappy2       lappy2       lapp2       ... 13         12

Trong ví dụ của bạn, bạn có cùng một số giá trị số và giá trị ký tự trên cả hai hàng nhưng nó không phải như vậy:ví dụ:hàng thứ ba có thể không có trường số.

2. Xác định các trường X thuộc loại varchar2 và có áp dụng hàm bijective để lưu trữ trường số hoặc ngày (ví dụ:Ngày có thể được lưu trữ dưới dạng YYYYMMDDHH24miss ). Bạn cũng sẽ cần một trường bổ sung sẽ xác định ngữ cảnh của hàng. Bạn sẽ áp dụng to_number hoặc to_char chỉ hoạt động khi các hàng thuộc loại tốt.

Ví dụ của bạn:

Id Name context field1  field2 field3  field4 field5
1  lap1 type A  lappy   lappy  12      13     lappy
2  lap2 type B  lappy2  13     lappy2  lapp2  12

Bạn có thể truy vấn bảng bằng DECODE hoặc CASE:

SELECT * 
  FROM laptop
 WHERE CASE WHEN context = 'TYPE A' THEN to_number(field3) END = 12

Thiết kế thứ hai là thiết kế được sử dụng trong Oracle Financials ERP (trong số những thiết kế khác). Ngữ cảnh cho phép bạn xác định ràng buộc KIỂM TRA với thiết kế này (ví dụ:CHECK (CASE WHEN context = 'TYPE A' THEN to_number(field3) > 0 ) để đảm bảo tính toàn vẹn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi trường ngày giờ thành trường ngày tháng trong SQL (Oracle)

  2. Bật SSL hoặc TLS trong Oracle Apps R12

  3. Chuyển đổi dấu thời gian thành ngày tháng trong Oracle SQL

  4. Làm thế nào để cài đặt ruby-oci8?

  5. Cột tham chiếu truy vấn con lồng nhau trong SQL