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

Bảng cơ sở dữ liệu, càng nhiều càng tốt?

Vấn đề ở đây là nhập phụ . Có ba cách tiếp cận cơ bản để xử lý các kiểu phụ.

  1. Đặt từng loại bản ghi vào một bảng hoàn toàn riêng biệt;
  2. Đặt một bản ghi trong một bảng mẹ và sau đó một bản ghi trong một bảng kiểu con; và
  3. Đặt tất cả các bản ghi vào một bảng, có các cột có thể làm trống cho dữ liệu "tùy chọn" (tức là những thứ không áp dụng cho loại đó).

Mỗi chiến lược đều có giá trị của nó.

Ví dụ, (3) đặc biệt có thể áp dụng nếu có rất ít hoặc không có sự khác biệt giữa các kiểu con khác nhau. Trong trường hợp của bạn, các bản ghi nhật ký khác nhau có thêm cột nếu chúng thuộc một loại cụ thể không? Nếu họ không hoặc có một vài trường hợp khi họ đặt tất cả chúng vào một bảng thì hoàn toàn hợp lý.

(2) thường được sử dụng cho bàn tiệc. Đây là một mô hình phổ biến trong các CRM liên quan đến đối tượng Bên mẹ có các loại phụ là Nhân sự và Tổ chức (Tổ chức cũng có thể có các loại phụ như Công ty, Hiệp hội, v.v.). Cá nhân và Tổ chức có các thuộc tính khác nhau (ví dụ:chào, tên cụ thể, ngày sinh, v.v. đối với Người) vì vậy sẽ hợp lý khi chia nhỏ điều này thay vì sử dụng các cột có thể trống.

(2) có khả năng hiệu quả hơn về không gian (mặc dù tổng chi phí của các cột NULL trong DBMS hiện đại là rất thấp). Vấn đề lớn hơn là (2) có thể khó hiểu hơn đối với các nhà phát triển. Bạn sẽ gặp tình huống ai đó cần lưu trữ một trường bổ sung ở đâu đó và sẽ đánh dấu nó vào một cột trống cho loại đó đơn giản vì làm điều đó dễ dàng hơn việc nhận được sự chấp thuận cho các DBA để thêm một cột (không, tôi không đùa đâu ).

(1) có lẽ là lược đồ ít được sử dụng nhất trong số 3 theo kinh nghiệm của tôi.

Cuối cùng, khả năng mở rộng phải được xem xét và có lẽ là trường hợp tốt nhất cho (1). Tại một số điểm nhất định, JOIN không mở rộng hiệu quả và bạn sẽ cần sử dụng một số loại lược đồ phân vùng để cắt giảm kích thước bảng của mình. (1) là một phương pháp thực hiện điều đó (nhưng là một phương pháp thô sơ).

Tôi sẽ không lo lắng quá nhiều về điều đó. Thông thường, bạn sẽ cần phải truy cập hàng trăm triệu hoặc hàng tỷ bản ghi trước khi điều đó trở thành vấn đề (trừ khi hồ sơ của bạn thực sự lớn, trong trường hợp đó, điều đó sẽ xảy ra sớm hơ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. Chèn hàng loạt MySQL từ tệp dữ liệu CSV

  2. Sự cố cài đặt MYSQL

  3. Tính toán khoảng cách Haversine giữa hai điểm trong Laravel

  4. PHP:nhiều truy vấn SQL trong một câu lệnh mysql_query

  5. MySQL 8 Biểu thức Bảng Phổ biến CTE