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

Phần 2 - Cách tổ chức một sơ đồ cơ sở dữ liệu lớn

Trong Phần 1 của loạt bài này, chúng tôi đã nhập thành công cấu trúc cơ sở dữ liệu SuiteCRM vào công cụ lập mô hình cơ sở dữ liệu trực tuyến của chúng tôi. Đó là khi chúng tôi thấy rằng mô hình chứa 201 bảng không có mối quan hệ giữa chúng. Chúng tôi có một loạt các bảng trông thực sự lộn xộn. Trong bài viết này, tôi sẽ chỉ cho bạn cách bạn có thể tổ chức một mô hình lớn như vậy.

Ngay sau khi nhập vào Vertabelo, mô hình cơ sở dữ liệu SuiteCRM trông như sau:




Mô hình hoạt động - nhưng không hiệu quả. Chúng tôi sẽ cần phải sửa đổi nó để làm cho nó thực sự hữu ích. Vì chúng tôi muốn phân tích cơ sở dữ liệu SuiteCRM sau các hành động được thực hiện trên GUI của nó, chúng ta cần hiểu các định nghĩa bảng và mối quan hệ giữa các bảng. Hãy bắt đầu bằng cách nhóm các bảng thành các lĩnh vực chủ đề và thiết lập các mối quan hệ quan trọng nhất.

Vertabelo cung cấp ba công cụ chính để giúp bạn sắp xếp các sơ đồ lớn:

  • Các lĩnh vực chủ đề
  • Bảng và xem các phím tắt
  • Các phím tắt tham chiếu

Tôi sẽ mô tả chúng ở phần sau của bài viết này, nhưng bạn cũng có thể tìm hiểu thêm bằng cách xem video này.

Bước 1. Tắt tính năng tạo khóa ngoại tự động

Trước hết, chúng tôi sẽ tắt tính năng tạo khóa ngoại tự động. Theo mặc định, Vertabelo tạo thuộc tính khóa ngoại khi chúng tôi kéo các quan hệ từ bảng chính sang bảng được tham chiếu. Đây thường là một điều tốt, nhưng không phải ở đây. Chúng tôi đã có các thuộc tính đại diện cho khóa ngoại. Cái chúng ta thiếu là mối quan hệ “thực” giữa các bảng. Để tắt tùy chọn này, hãy nhấp vào “Tài khoản của tôi” trong menu trên cùng và tìm “Tùy chọn cá nhân” phần.

Tùy chọn đang tắt. Bây giờ, khi chúng ta vẽ một đường tham chiếu giữa các bảng, đường này sẽ được tạo - nhưng chúng ta sẽ phải chỉ định thuộc tính nào được sử dụng, ở cả bên chính và bên ngoài.

Bước 2. Nhóm các bảng có tiền tố với các vùng chủ đề

Tiếp theo, hãy nhóm một số bảng. Chúng tôi sẽ thực hiện việc này bằng cách sử dụng Chủ đề công cụ cho phép liên kết các bảng dựa trên các tiêu chí đã chọn. Trong trường hợp của chúng tôi, chúng tôi đang cố gắng xác định các bảng có liên quan hoặc là một phần của cùng một quy trình. Điều này sẽ dẫn đến các nhóm như “Cuộc gọi”, “Cuộc họp” và “Chiến dịch”.

Chúng tôi có thể tạo một khu vực chủ đề bằng cách nhấp vào “Thêm khu vực mới” biểu tượng trong hộp công cụ:

và sau đó vẽ một hình chữ nhật trên mô hình của chúng tôi:

Khu vực chủ đề được tạo ra. Chúng ta có thể thấy nó trong “Cấu trúc mô hình” bảng điều khiển bên trái:

Mỗi vùng chủ đề chứa một danh sách tất cả các đối tượng nằm bên trong đường viền của nó; trong trường hợp này, đây là các bảng và kiểu tham chiếu.

Trong SuiteCRM, có nhiều bảng chia sẻ một tiền tố chung. Vì vậy, tôi bắt đầu nhóm các bảng có tiền tố lại với nhau. Hãy xem bảng “acl” làm ví dụ. Trong bảng "Cấu trúc mô hình", tôi tìm thấy tất cả các bảng có tên bắt đầu bằng "acl_":

Sau đó, tôi tạo vùng chủ đề “acl” trong mô hình và kéo tất cả các bảng thích hợp vào đó. (Để hiển thị tốt hơn, tôi đặt màu nền thành màu tím.)

Bây giờ, chúng ta có thể thấy nhóm “acl”, với danh sách tất cả các bảng thuộc về nó, trong “Lĩnh vực chủ đề” trong “Cấu trúc mô hình” :

Tôi đã lặp lại quy trình tương tự cho tất cả các bảng có tiền tố còn lại.

Bước 3:Sắp xếp các bảng còn lại.

Cùng một bảng hai lần trong sơ đồ? Các phím tắt trong bảng!

Có khoảng 80 bảng có tiền tố. Sau khi nhóm chúng, tôi chỉ còn lại khoảng 120 bàn 'hoang dã'. Những điều này rất có ý nghĩa:chúng lưu trữ thông tin về người dùng, khách hàng, cuộc gọi, cuộc họp và các nội dung CRM khác. Đó là rất nhiều thông tin cần được duy trì, vì vậy hãy sắp xếp các bảng này.

Tính năng mà tôi thấy hữu ích nhất để sắp xếp các bảng này được gọi là phím tắt cho bảng . Đôi khi bạn muốn sử dụng cùng một bảng nhiều lần trong một mô hình. (Tại sao? Để làm phẳng mô hình và tránh chồng chéo.) Chúng tôi có thể dễ dàng thực hiện việc này bằng cách sử dụng “Sao chép” “Dán làm lối tắt” các nút.

Chỉ cần chọn bảng mà bạn muốn tạo lối tắt và nhấp vào “Sao chép” trong thanh công cụ trên cùng (hoặc nhấn Ctrl + C ):

Để tạo lối tắt, hãy nhấp vào “Dán làm lối tắt” (hoặc nhấn Ctrl + K ). Sau đó, một bảng mới với đường viền chấm chấm sẽ xuất hiện:

Đây không phải là không một bản sao của bảng, nhưng một bản sao khác của bảng gốc. Chúng tôi có thể đặt nó ở bất cứ đâu trong mô hình của chúng tôi. Tôi đã sử dụng các phiên bản của cùng một bảng trong các lĩnh vực chủ đề khác nhau để tránh các tham chiếu chồng chéo. Điều đáng nói là mọi cá thể bảng đều có tên vùng chủ đề được chỉ định (bên cạnh tên của nó) khi nó nằm bên trong vùng chủ đề đó.

Một ví dụ điển hình về cách hoạt động của điều này là users bàn. Nó có thể được tìm thấy trong “Người dùng và Tài khoản”, “Vai trò”, “Tài liệu” và các lĩnh vực chủ đề khác. Chúng ta sẽ thấy điều này sau trong mô hình.

Tôi sử dụng rộng rãi các phím tắt trong bảng khi tạo các lĩnh vực chủ đề với các mối quan hệ được thiết lập giữa các bảng. Để xem cách này hoạt động như thế nào, hãy xem lĩnh vực chủ đề “Cơ hội” được trình bày bên dưới. Lưu ý rằng tất cả các bảng trong khu vực chủ đề đó được đặt tên theo quy tắc sau: {tên bảng}:{tên khu vực chủ đề} .

Khi chúng tôi mở rộng {tên khu vực chủ đề} trong bảng điều khiển "Cấu trúc mô hình", chúng ta có thể thấy rõ rằng nó chứa các bảng và tham chiếu:

Tôi đã làm điều này cho các lĩnh vực chủ đề sau:“Cuộc gọi”, “Vụ việc”, “Chiến dịch”, “Danh bạ”, “Tài liệu”, “Gặp gỡ và khách hàng tiềm năng”, “oauth”, “Dự án”, “Triển vọng và tiếp thị qua email”, “Vai trò” và “Người dùng và tài khoản”. Tất cả các khu vực này đều có nền màu xanh lam nhạt.

Các bảng còn lại được nhóm dựa trên tên và ý nghĩa giả định của chúng:“Email”, “Người dùng (bổ sung)” và “Các bảng khác”. Các nhóm này có màu nền được đặt thành đỏ nhạt.

Khi bạn bấm đúp vào tên bảng trong cây điều hướng, dạng xem sẽ phóng to bảng đó trong mô hình và chọn nó. Khi bạn phóng to bằng cách lăn con lăn chuột, chế độ xem sẽ phóng to theo hướng của con trỏ chuột.

Mô hình Sắp xếp

Tôi đã sử dụng các tùy chọn được mô tả trước đó để làm phẳng mô hình nhiều nhất có thể trong khi nhóm các bảng một cách hợp lý. Kết quả là 26 lĩnh vực chủ đề, một số lĩnh vực chỉ chứa bảng trong khi những lĩnh vực khác có bảng và quan hệ. Hãy đánh giá nhanh từng danh mục:

Lĩnh vực chủ đề chứa các bảng và mối quan hệ:

“Cuộc gọi”, “Chiến dịch”, “Trường hợp”, “Danh bạ”, “Tài liệu”, “Cuộc họp và khách hàng tiềm năng”, “Cơ hội”, “Dự án”, “Triển vọng và tiếp thị qua email”, “Vai trò”, “Người dùng và tài khoản”

Tất cả các quan hệ được đặt là không bắt buộc. Điều này giữ thông tin rằng các bảng này có liên quan và thông qua (các) thuộc tính nào.

Khu vực Chủ đề Chỉ chứa Bảng:

“Acl”, “am”, “aod”, “aok”, “aop”, “aor”, “aos”, “aow”, “Email”, “fp”, “jwg”, “oauth”, “security_groups ”,“ Người dùng bổ sung ”

Điều này không có nghĩa là các mối quan hệ không tồn tại ở đây; chúng chỉ không được nhấn mạnh.

Khu vực chủ đề "Các bảng khác" dành cho các bảng không thực sự phù hợp với một nhóm cụ thể.

Mô hình trông như thế nào?

Mô hình được sắp xếp lại trông giống như sau:




Rõ ràng là một quy ước đặt tên đã được sử dụng. Dưới đây là tổng quan về các nguyên tắc mà chúng tôi đã tuân theo:

  1. Tên bảng chủ yếu là số nhiều:users , contracts , các thư mục folders , roles , tasks . Một số tên bảng là số ít, chẳng hạn như project .
  2. Khóa chính trong hầu hết các bảng được gọi đơn giản là id và là kiểu char (36).
  3. Khi quan hệ một-nhiều xảy ra, khóa ngoại thường được đặt tên là parent_id . (Ví dụ:contacts_audit.parent_id là một tham chiếu đến contacts.id .)
  4. Trong quan hệ nhiều-nhiều, “parent_id ”Không thể được sử dụng làm tên cho nhiều cột. Thay vào đó, một tên bảng số ít với hậu tố “_id” được sử dụng. (Ví dụ:contacts_bugs.bug_id là tham chiếu đến bug.id .)
  5. Có những trường hợp khi cùng một cột được sử dụng làm khóa ngoại cho nhiều bảng. (Ví dụ:calls.parent_id được tham chiếu đến cột id trong mỗi bảng sau:accounts , bugs , cases , contacts , leads , tasks , opportunities and prospects . Tôi chưa kiểm tra các giá trị trong cơ sở dữ liệu, nhưng tôi đoán là không có giá trị khóa nào giống nhau trong các bảng này. Vì tất cả đều là kiểu char (36), có lẽ một số kết hợp giữa tên bảng và tự động tăng được sử dụng. Chúng tôi sẽ kiểm tra điều đó trong các bài viết sắp tới.)
  6. Chúng tôi sử dụng các tên giống nhau cho các cột có cùng ý nghĩa trong các bảng khác nhau. (Ví dụ:modified_user_id , created_byassigned_user_id có thể được tìm thấy trong nhiều bảng trong mô hình. Tất cả chúng đều được tham chiếu đến users.id .)

Tiếp theo là gì?

Trong các bài viết sắp tới, chúng tôi sẽ sử dụng SuiteCRM GUI và theo dõi những thay đổi mà điều này gây ra trong cơ sở dữ liệu. Với thông tin đó, chúng tôi sẽ cố gắng thực hiện các thay đổi trong mô hình, tổ chức lại các lĩnh vực chủ đề và thiết lập kết nối nếu cần. Ngoài ra, chúng tôi sẽ tìm kiếm các quy tắc khác dành riêng cho SuiteCRM, chẳng hạn như cách khóa chính được tạo.

Xử lý sơ đồ cơ sở dữ liệu lớn không bao giờ là một công việc dễ dàng. Giống như việc xây dựng một nền tảng tốt cho một ngôi nhà, dành nhiều thời gian hơn cho các nguyên tắc cơ bản lúc này sẽ mang lại lợi thế sau này. Nếu chúng tôi muốn phân tích các mô hình như mô hình đằng sau SuiteCRM, thì việc phân tích trước khi chúng tôi tổ chức cấu trúc mô hình và xác định các mối quan hệ bảng đang thực hiện theo kiểu Sisyphus.


  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ẹo về hiệu suất XML

  2. Thư viện kiểu chờ SQLskills hiện hiển thị dữ liệu SentryOne

  3. Cách kiểm tra xem T-SQL UDF có bị ràng buộc bởi giản đồ hay không (Ngay cả khi nó được mã hóa)

  4. Các tính năng không dùng nữa để đưa ra khỏi hộp công cụ của bạn - Phần 1

  5. Tránh tự ảo tưởng về Giải pháp HA / DR