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

WordPress - Hậu trường, Phần 2

Trong Phần 1 của loạt bài này, tôi đã trình bày cách cài đặt WordPress cục bộ và cách nhập cơ sở dữ liệu WordPress vào Vertabelo. Trong bài viết này, chúng ta sẽ xem xét kỹ hơn các bảng trong cơ sở dữ liệu WordPress.

Xem nhanh Mô hình Cơ sở dữ liệu WordPress và Trang tổng quan

Trong phần trước, tôi đã nhập cơ sở dữ liệu WordPress vào công cụ tạo mô hình cơ sở dữ liệu trực tuyến của chúng tôi. Đối với bản ghi, cấu trúc của cơ sở dữ liệu như sau:




Có một số thông tin quan trọng về mô hình cơ sở dữ liệu WordPress mà bạn nên hiểu trước khi chúng ta bắt đầu:

  • Mỗi trang WordPress sử dụng chính xác cùng một cấu trúc cơ sở dữ liệu. Nó chứa 11 bảng và mọi trang web WordPress đều sử dụng chúng trong nền. Hầu hết các plugin WordPress cũng sử dụng cơ sở dữ liệu mà không có bất kỳ thay đổi nào trong mô hình cơ sở dữ liệu. Mô hình phải đủ linh hoạt để chứa tất cả các plugin khác nhau. Tất nhiên, người tạo plugin có thể thêm các bảng tùy chỉnh cho các plugin cụ thể nếu cấu trúc dữ liệu khác biệt đáng kể hoặc nếu plugin của họ lưu trữ lượng lớn dữ liệu.
  • Cơ sở dữ liệu WordPress thiếu các ràng buộc về khóa ngoại . Điều này là do WordPress sử dụng công cụ lưu trữ MyISAM, công cụ này không hỗ trợ khóa ngoại. Các bảng giải quyết vấn đề này bằng cách có các thuộc tính lưu trữ các giá trị giống như "khóa ngoại" không được kết nối, do đó, ràng buộc khóa ngoại sẽ không được cơ sở dữ liệu kiểm tra. Ví dụ:post_author trong wp_posts bảng là "tham chiếu" đến thuộc tính "ID" trong wp_users bảng.
  • Hầu hết các bảng sử dụng một khóa chính của một cột. Chúng được đặt tên đơn giản là “ID” (trong wp_userswp_posts table) hoặc meta_id / umeta_id (trong bảng meta:wp_postmeta , wp_commentmetawp_usermeta ), hoặc kết hợp giữa tên bảng và hậu tố “_id” (tất cả các bảng khác). Ngoại lệ duy nhất cho các quy tắc này là wp_term_relationships bảng, trong đó khóa chính bao gồm hai thuộc tính:object_idterm_taxonomy_id . Các thuộc tính là khóa chính hoặc một phần của khóa chính thuộc loại bigint (20). Các khóa chính thuộc tính đơn cũng có thuộc tính tăng tự động được đặt thành “Có”.

Bài đăng và Trang

Lý do chính để sử dụng WordPress là để tạo và thao tác nội dung và trình bày nó trước công chúng. Để đạt được điều đó, WordPress cung cấp cho chúng ta hai loại nội dung: Trang Bài đăng .

Trang được sử dụng để hiển thị nội dung tĩnh . Họ không sử dụng thẻ hoặc danh mục và không được liệt kê theo ngày tháng. Ngoài ra, họ không cho phép nhận xét hoặc chia sẻ trên mạng xã hội. Các trang có thể có các trang con. Về chúng tôi các trang là những ví dụ điển hình về loại này.

Mặt khác, Bài đăng được liệt kê theo ngày và có thể được sắp xếp bằng cách sử dụng danh mục thẻ . Các bài đăng có thể được sử dụng trong nguồn cấp RSS, nhờ vào thứ tự thời gian của chúng. Các bài đăng không được có “subpost”, nhưng có thể nhận xét và chia sẻ trên mạng xã hội. Bài viết thực chất là bài viết trên blog. Điều này có thể hiểu được, vì WordPress đã phát triển từ nền tảng blog.

Bảng chính đằng sau nội dung trên bất kỳ trang WordPress nào được gọi là wp_posts :

WordPress sử dụng wp_posts bảng để lưu trữ các trang, bài đăng và tệp đính kèm. Chúng ta có thể xem bảng này như phần cốt lõi của trang của chúng ta, nơi lưu trữ hầu hết nội dung. Điều quan trọng là chỉ ra rằng tệp đính kèm thực sự được lưu trữ trên đĩa và bản ghi trong wp_posts bảng lưu giữ thêm thông tin về nó (ai đã tải nó lên và khi nào, v.v.).

Các trường trong wp_posts bảng là:

  • post_author - tham chiếu đến wp_users bảng, biểu thị tác giả của bài đăng.
  • post_date - ngày và giờ khi bản ghi được chèn vào bảng.
  • post_date_gmt - ngày và giờ GMT / UTC khi một bản ghi được chèn vào bảng.
  • post_content - nội dung thực tế của bài đăng.
  • post_title - tiêu đề của bài đăng.
  • post_excerpt - tóm tắt nội dung.
  • post_status - tình trạng bài đăng hiện tại. WordPress sử dụng 8 trạng thái mặc định:“Xuất bản”, “Tương lai”, “Bản nháp”, “Đang chờ xử lý”, “Riêng tư”, “Thùng rác”, “Bản nháp tự động” và “Kế thừa”.
  • comment_status - Bật và tắt nhận xét trên một bài đăng hoặc trên toàn bộ trang. Có thể có hai giá trị:“mở” và “đóng”.
  • ping_status - xác định xem một bài đăng có cho phép pingback và trackbacks hay không. Thích comment_status , nó chỉ có thể chứa các giá trị "mở" và "đóng".
  • post_password - mật khẩu được sử dụng để xem bài đăng (tùy chọn).
  • post_name - url mà con người có thể đọc được của post_title .
  • to_ping - danh sách các URL mà WordPress sẽ gửi pingback đến, được phân tách bằng “\ n”.
  • pinged - danh sách các URL mà WordPress đã gửi pingback đến, được phân tách bằng “\ n”.
  • post_modified - ngày và giờ gần đây nhất mà một bài đăng đã được sửa đổi.
  • post_modified_gmt - ngày GMT / UTC cho post_modified .
  • post_content_filtered - được sử dụng bởi các plugin để lưu vào bộ nhớ cache các chuyển đổi nội dung bài đăng đắt tiền.
  • post_parent - tham khảo bài đăng gốc.
  • guid - Số nhận dạng duy nhất toàn cầu cho một bài đăng; URL cố định của nó.
  • menu_order - được sử dụng để sắp xếp nội dung.
  • post_type - loại bản ghi. Nó có thể chứa các giá trị “bài đăng”, “trang”, “tệp đính kèm” hoặc các loại tùy chỉnh do người dùng xác định.
  • post_mime_type - loại tệp tải lên chỉ được xác định cho các bài đăng có post_type = attachment . Nó có thể chứa các giá trị như “image”, “application / pdf” và “application / msword”.
  • comment_count - số lượng nhận xét, pingback và trackback của bài đăng.

Đây là ảnh chụp nhanh của wp_posts bảng sau khi tôi thêm trang “Giới thiệu về Nikola Tesla”:

Khi chúng tôi xem xét wp_posts , chúng ta có thể thấy một vài phiên bản của trang của mình. Bản ghi có ID = 1post_status = publish , nghĩa là bài đăng được hiển thị cho tất cả mọi người. comment_status = closedping_status = closed biểu thị rằng nhận xét và ping đã bị tắt cho bài đăng này.

Mọi thông tin bổ sung về các bài đăng và trang được lưu giữ trong wp_postmeta bảng:

Các cột trong bảng này như sau:

  • meta_id - khóa chính của bảng.
  • post_id - tham chiếu đến wp_posts bảng.
  • meta_key - mô tả về meta_value thuộc tính.
  • meta_value - giá trị thực được lưu trữ.

wp_postmeta bảng là nơi tất cả thông tin không thể được lưu trong wp_posts bảng được lưu trữ. Nó được lưu trữ dưới dạng các cặp khóa-giá trị, một kỹ thuật thường được gọi là thực thể-thuộc tính-giá trị (EAV). Bảng có thể được sử dụng bởi các plugin cho các nhu cầu tùy chỉnh.

Phân loại WordPress

Phân loại là một từ ưa thích về cơ bản dùng để chỉ nhóm mọi thứ lại với nhau. WordPress có một số đơn vị phân loại tích hợp để nhóm các bài đăng. Ví dụ: danh mục thẻ là các đơn vị phân loại WordPress được tích hợp sẵn. Bạn cũng có thể thêm các đơn vị phân loại tùy chỉnh của riêng mình vào WordPress.

Các đơn vị phân loại và các thuật ngữ của chúng được lưu trong các bảng được gọi là wp_terms , wp_term_taxonomywp_term_relationships .

wp_terms bảng lưu trữ danh sách các thuật ngữ được sử dụng để phân loại các đối tượng trong trang web WordPress của bạn:

Bảng này chứa tất cả các tên thẻ và danh mục, cũng như các thuật ngữ từ các đơn vị phân loại tùy chỉnh của chúng tôi. Các thuộc tính như sau:

  • term_id - khóa chính của bảng.
  • name - tên của thuật ngữ.
  • slug - URL của name .
  • term_group - được sử dụng để nhóm các thuật ngữ lại với nhau.

Đây là nội dung của wp_terms bảng:

Các thuật ngữ được chỉ định cho các đơn vị phân loại với sự trợ giúp của wp_term_taxonomy bảng:

Các thuộc tính trong bảng là:

  • term_taxonomy_id - khóa chính của bảng.
  • term_id - tham chiếu đến wp_terms bảng.
  • taxonomy - tên phân loại.
  • description - mô tả một thuật ngữ trong phân loại cụ thể đó.
  • parent - tham chiếu đến thuật ngữ mẹ trong wp_terms bảng.
  • count - số lượng đối tượng trong wp_posts bảng sử dụng thuật ngữ này trong phân loại này.

wp_term_taxonomy bảng cho phép chúng tôi sử dụng lại cùng một thuật ngữ trên các đơn vị phân loại khác nhau. Lưu ý rằng bản ghi trong đó term_id = 1taxonomy = category , trong khi các bản ghi khác có taxonomy = post_tag .

Để liên kết các đối tượng được lưu trong wp_postswp_term_taxonomy bảng, WordPress sử dụng wp_term_relationships bảng:

Lưu ý rằng đây là bảng duy nhất trong mô hình có khóa bao gồm nhiều thuộc tính.

wp_term_relationships bảng có các thuộc tính sau:

  • object_id - tham chiếu đến wp_posts bảng.
  • term_taxonomy_id - tham chiếu đến wp_term_taxonomy bảng.
  • term_order - thứ tự thuật ngữ cho một đối tượng cụ thể.

Chúng tôi có sáu bản ghi ở đây kết nối sáu bản ghi từ wp_term_taxonomy bảng có bài đăng (object_id = 6 ).

Nhận xét và lập mô hình dữ liệu WordPress

Chúng tôi đã quản lý để đặt một số nội dung trên trang WordPress của mình. Điều đó thật tuyệt, nhưng trong hầu hết các trường hợp, chúng tôi muốn nhận được phản hồi từ công chúng. Và đó là vai trò của tính năng bình luận.

Để xem bình luận về bài viết, chúng ta có thể chỉ cần sử dụng “Để lại bình luận” hoặc nhấp vào “Bình luận X” (trong đó X là số bình luận cho bài đăng).

Bài viết đầu tiên của chúng tôi đã có một bình luận. Khi chúng tôi nhấp vào nó, chúng tôi sẽ thấy đó là một nhận xét tự động do pingback gây ra. Chúng tôi sẽ thêm một nhận xét nữa vào bài đăng đó:

Bây giờ chúng tôi thấy hai nhận xét cho bài đăng của mình, nhưng điều gì ẩn sau tất cả trong cơ sở dữ liệu?

Bạn có thể đoán từ tên bảng rằng wp_comments bảng được sử dụng để lưu trữ các bình luận trên trang WordPress của chúng tôi:

Các thuộc tính chủ yếu là tự giải thích, nhưng chúng tôi vẫn sẽ xem xét kỹ hơn một số thuộc tính.

comment_post_ID là tham chiếu đến wp_posts bàn; nó biểu thị bài đăng nào đã nhận được bình luận. Đối với nhận xét đầu tiên, chúng ta có thể thấy rằng nó thực sự là pingback và "tác giả" là một bài đăng khác. Đối với nhận xét thứ hai, chúng ta có thể thấy rằng tôi là tác giả. Cũng lưu ý comment_agent chứa một số thông tin cơ bản về hệ thống và máy tính được sử dụng để đăng nhận xét.

Ý tưởng chính đằng sau cả ba bảng meta trong mô hình là lưu trữ dữ liệu mà chúng tôi không muốn lưu trữ trong bảng chính của mình. wp_commentmeta có liên quan đến wp_comments theo cách tương tự như wp_postmeta bảng có liên quan đến wp_posts bảng.

Thấy người dùng WordPress

Sau khi trang của chúng tôi trực tuyến, bất kỳ ai cũng có thể nhìn thấy nó. Người dùng WordPress là những người, theo trạng thái cho phép của họ, có thể thực hiện các thay đổi trên trang web của chúng tôi và nội dung của nó.

Bây giờ chúng ta sẽ xem xét wp_userswp_usermeta bảng trong cơ sở dữ liệu MySQL.

Như mong đợi, wp_users bảng hiển thị ở trên lưu trữ dữ liệu cơ bản cho tất cả người dùng đã đăng ký trên trang WordPress của chúng tôi. Lưu ý rằng user_pass được mã hóa và Người dùng mới đó có user_activation_key thuộc tính được điền trong khi edrkusic có trường đó trống.

Trong khi các thuộc tính được liệt kê trong wp_users bảng là những gì chúng tôi mong đợi trong bất kỳ trang web WordPress nào, wp_usermeta bảng được sử dụng để lưu trữ các giá trị có thể cụ thể cho một dự án nhất định:

Ví dụ:lưu ý rằng bản ghi có umeta_id = 25 chứa giá trị “một số thông tin tiểu sử” , cùng một văn bản mà chúng tôi đã nhập vào bảng điều khiển trong khi chỉnh sửa NewUser. user_id thuộc tính trong bản ghi đó có giá trị 2 , tương ứng với ID của Người dùng mới trong wp_users bàn. Rõ ràng, user_id là tham chiếu đến wp_users bảng.

Liên kết và Tùy chọn trong WordPress

Ý tưởng đằng sau wp_links bảng là để lưu trữ các liên kết đến các trang web khác:

Có liên kết đến các trang web khác rất phổ biến trong thời kỳ đầu của kỷ nguyên viết blog; ngày nay nó được sử dụng ít hơn và ít hơn. Từ phiên bản WordPress 3.5 trở đi, quản trị liên kết thậm chí đã bị xóa khỏi giao diện quản trị. Tuy nhiên, bảng này được giữ lại để cung cấp khả năng tương thích với các phiên bản cũ hơn.

wp_options bảng lưu trữ dữ liệu về cài đặt WordPress, cấu hình trang web, chủ đề, plugin và tiện ích con:

Nó cũng được sử dụng để lưu trữ dữ liệu được lưu trong bộ nhớ cache tạm thời. Logic EAV cũng có trong bảng này, vì nó có trong wp_usermeta , wp_postmetawp_commentmeta . Thuộc tính option_name đóng vai trò của khóa, trong khi thuộc tính option_value là giá trị tương ứng của nó. Hai thuộc tính khác trong bảng là thuộc tính khóa chính option_idautoload , kiểm soát nếu một tùy chọn tự động tải từ cơ sở dữ liệu.

Đánh giá mô hình cơ sở dữ liệu của WordPress

Mô hình cơ sở dữ liệu đằng sau WordPress không tuân theo một số quy tắc và quy ước thiết kế cơ sở dữ liệu tốt. Khi chúng tôi thiết kế cơ sở dữ liệu cho một mục đích cụ thể, biết trước tất cả các chức năng mong muốn của nó, chúng tôi có thể tuân theo tất cả các quy tắc đó. Nhưng WordPress cần phải đề cập đến bất cứ điều gì mà bất kỳ ai cũng có thể nghĩ đến, vì vậy việc hy sinh khóa ngoại và sử dụng EAV là điều cần phải làm. Tôi sẽ đặt tên thuộc tính ID giống nhau trên tất cả các bảng và làm tương tự với “khóa ngoại”. Ví dụ:tôi sẽ không sử dụng post_author trong wp_posts bảng, nhưng tôi muốn gắn bó với users_id . Ngoài điều này, tôi phải đồng ý rằng cơ sở dữ liệu WordPress thực sự là một mô hình tuyệt vời cho mục đích của nó.

Bạn nghĩ sao? Hãy cho chúng tôi biết trong phần bình luậ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. Mức cô lập SNAPSHOT

  2. Kết nối các ứng dụng ODBC trên Windows với SugarCRM

  3. Cách lọc các bản ghi bằng hàm tổng hợp COUNT

  4. Sử dụng thuật sĩ tổ chức lại ngoại tuyến

  5. SQL SELECT DISTINCT:Các phương pháp hay nhất về hiệu suất