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

MySQL tự động chèn một hàng vào table2 trên một chèn vào table1

Bạn sẽ yêu cầu trình kích hoạt để "tự động" chèn bản ghi vào một bảng riêng biệt.

Chèn bản ghi vào UserPrivacy với một truy vấn riêng biệt sẽ là cách phổ biến nhất để thực hiện điều này.

Nếu đó là mối quan hệ một-một, việc đặt nó vào cùng một bảng sẽ cho phép các truy vấn đơn giản hơn (không cần nối).

Quyết định, Quyết định ...

Với mối quan hệ một đối (không đối một), có nhiều yếu tố hơn cần xem xét.

Nếu bảng Quyền riêng tư của Người dùng lớn, thì bạn nên đặt nó vào một bảng riêng để tiết kiệm không gian. Điều này cũng sẽ được bình thường hóa hơn.

Nếu bạn thường truy vấn điều gì đó như "Cung cấp cho tôi tất cả Người dùng không có Dữ liệu quyền riêng tư", thì bạn có thể đặt nó vào một bảng riêng. Vì các chỉ mục không bao gồm các giá trị NULL (theo mặc định), sẽ nhanh hơn nếu thực hiện một phép tham gia vào một bảng riêng biệt. Tất nhiên, công việc xung quanh là sử dụng một giá trị khác với NULL để đại diện cho "không có cài đặt riêng tư", nhưng cardinality thấp cũng ảnh hưởng tiêu cực đến hiệu suất. Các bảng riêng biệt sẽ là tốt nhất cho trường hợp này.

Ngoài ra, nếu dữ liệu quyền riêng tư được cập nhật thường xuyên, nhưng không phải dữ liệu Người dùng, các bảng riêng biệt sẽ ngăn chặn việc khóa hàng trên bảng Người dùng và cập nhật nhanh hơn trên các bảng nhỏ hơn, điều này có thể cải thiện hiệu suất.

Nếu bạn thường cần dữ liệu Quyền riêng tư của Người dùng mà không có Dữ liệu Người dùng hoặc ngược lại, bạn có thể muốn tách chúng ra.

Tuy nhiên, đây có thể là sự tối ưu hóa quá sớm. Bạn có thể chỉ muốn tách chúng ra nếu chúng phù hợp hơn với mô hình của bạn. Cân nhắc sự đơn giản của việc giữ nó trong cùng một bảng so với các vấn đề về hiệu suất, kích thước và khả năng đọc.

Nếu mối quan hệ là một-to- (không đến nhiều), rõ ràng bạn sẽ muốn có một bảng riêng biệt, nhưng đối với một-to- (không đến một), đó là tùy chọn.

Cuối cùng ...

Đừng ngại tách chúng ra, miễn là có lý do.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế cho PDO ::lastInsertId / mysql_insert_id

  2. cách đặt lại mật khẩu mysql của tôi trong mac os 10.13.3

  3. Express.js và mô hình MySQL + xác thực

  4. Cách tính tiền ký quỹ trong MySQL

  5. Cảnh báo trình liên kết trong khi xây dựng ứng dụng chống lại API mysql-connector-c / libmysqlclient / mysql C