2008-09-22 68 views
9

Gần đây tôi đã thừa hưởng công việc duy trì một cơ sở dữ liệu không được thiết kế rất tốt và các nhà thiết kế không có sẵn để đặt bất kỳ câu hỏi nào. Và tôi có một cặp vợ chồng nữa sẽ đến với tôi trong tương lai gần.Lược đồ cơ sở dữ liệu giải mã

Thật khó để cố gắng tìm ra mối quan hệ giữa các bảng mà không có bất kỳ loại trợ giúp trực quan hoặc sơ đồ cơ sở dữ liệu nào.

Tôi đã tự hỏi những công cụ nào được khuyến nghị cho việc này. Tôi biết về Visio, nhưng tôi đã hy vọng có một số ứng dụng nguồn mở/phần mềm miễn phí tốt ngoài kia. Tôi không cần nó để thay đổi cơ sở dữ liệu. Chỉ cần đọc nó và tạo ra một số loại trợ giúp trực quan để giúp tôi hiểu cách mọi thứ được đặt ra và cố gắng tìm hiểu xem nhà thiết kế đang nghĩ gì về cách dữ liệu nên liên quan.


bổ sung câu trả lời dữ liệu: SchemaSpy là loại điều tôi đang tìm kiếm, nhưng đã không được thực hiện rất nhiều với các dòng lệnh trong lứa tuổi, tôi đã lựa chọn để sử dụng SchemaSpyGUI. Ngoài ra còn có một số cấu hình để làm quen với vì tôi không làm việc với Java nhiều, nhưng kết quả cuối cùng là những gì tôi đang tìm kiếm (thay thế mã nguồn mở cho sơ đồ ER của Visio).

+0

Bạn đang sử dụng cơ sở dữ liệu nào? –

+0

Xem thêm http://stackoverflow.com/questions/7031203/tools-for-discovering-de-facto-foreign-keys-in-databases – reinierpost

Trả lời

15

Hãy thử SchemaSpy. Tôi chạy nó với một cơ sở dữ liệu khá phức tạp và tôi đã khá hài lòng với kết quả, với lời khuyên về tối ưu hóa.

+0

Điều này có thực sự trả lời câu hỏi không? Công cụ này không xuất hiện để suy ra các khóa, mà tôi nghĩ là một phần của câu hỏi. – reinierpost

+0

@reinierpost Tôi không thấy "chìa khóa" trong câu hỏi ban đầu, vì vậy tôi không chắc chắn tại sao bạn nghĩ rằng ... :-) (Thực ra, tôi thậm chí không hiểu ý bạn là gì bởi "các khóa suy luận"). Dù sao, sự quan tâm để có một số câu trả lời là để đề xuất một số công cụ, vì vậy bạn có thể chọn tốt nhất cho việc sử dụng của bạn. – PhiLho

+1

Nếu một cơ sở dữ liệu không được thiết kế rất tốt (và trong nhiều trường hợp khác), thường là các khóa ngoài hoặc thậm chí các khóa chính chưa được khai báo rõ ràng. Vì vậy, cố gắng hiểu ý nghĩa của cơ sở dữ liệu đòi hỏi phải cố gắng tìm ra các khóa ngoài thực tế (các mối quan hệ giữa các bảng) là gì. Một công cụ sẽ sơ đồ một lược đồ cơ sở dữ liệu sẽ không làm điều đó, vì vậy trong những trường hợp như vậy nó sẽ chỉ tạo ra một bãi chứa các bảng và không hiển thị bất kỳ mối quan hệ nào giữa chúng. – reinierpost

1

Bạn đang sử dụng DBMS nào (Hệ thống quản lý cơ sở dữ liệu)? Nhiều máy chủ SQL giống như DBMS hiện đại và Access có thể tạo ra một sơ đồ E-R cho bạn.

Microsoft Visio là một công cụ tuyệt vời và có thể đảo ngược kỹ sư SQL từ bất kỳ nguồn dữ liệu nào.

DDT (Database Design Tool) có thể đảo ngược kỹ sư từ SQL thô trên cửa sổ và rất nhẹ (tải xuống miễn phí rất nhỏ).

MySQL Workbench là một trong những công cụ phổ biến hơn của MySQL và có phiên bản có thể tải xuống miễn phí.

SQLFairy có thể làm tương tự cho MySQL trên Linux.

0

Tôi sử dụng bàn làm việc mysql (http://www.mysql.com/products/workbench/) cho cơ sở dữ liệu mysql. Bạn có thể đính kèm bàn làm việc vào cơ sở dữ liệu của bạn và nó sẽ vẽ bản đồ ER cho bạn.

0

Sử dụng pgsql/win32 Tôi thấy giải pháp dễ nhất là viết một kịch bản perl sử dụng Biểu đồ :: Dễ dàng từ CPAN. Truy vấn cơ sở dữ liệu cho các mối quan hệ khóa ngoài, tạo biểu đồ có hướng với các bảng như các nút và các mối quan hệ FK dưới dạng các liên kết. Nếu đây là thiết lập của bạn, tôi có thể đăng mã.

1

Có một chút phần mềm nguồn mở, nhưng công cụ của Visio Professional cho các lược đồ cơ sở dữ liệu kỹ thuật đảo ngược khá tốt vì nó tách cặp quy trình đảo ngược và vẽ sơ đồ. Tôi sử dụng điều này rất nhiều vì nó có xu hướng có sẵn ở hầu hết các trang web.

Một tính năng tốt đẹp của visio là bạn có thể đảo ngược kỹ sư và sau đó xây dựng sơ đồ của riêng bạn từ lược đồ được thiết kế ngược. Làm điều này là một cách rất tốt để khám phá lược đồ và hiểu nó khi bạn đang thực hiện công việc này như là một phần của việc xây dựng tương tác một tài liệu tham chiếu cho lược đồ. Tôi đã sử dụng kỹ thuật này để đảo ngược mọi thứ từ Activity Based Costing Systems đến Insurance Underwriting Systems, thường không có sự trợ giúp nhiều từ nhà cung cấp. Tinkering về với Visio sơ đồ là khá thư giãn.

Giữa điều này và một thử nghiệm giả thuyết nhỏ về mối quan hệ FK (Nếu FK không có mặt trên bàn) bạn có thể hiểu được các lược đồ khá phức tạp. Tôi đã tìm thấy cách tiếp cận sơ đồ này làm cho Visio trở thành một nhà lãnh đạo đầu và vai bởi vì bạn có thể dễ dàng tương tác với mô hình được thiết kế ngược theo một cách khá thuận tiện.Bạn có thể điền vào các khóa ngoài bị thiếu, xây dựng sơ đồ khu vực chủ đề và thêm chú thích trên sơ đồ. Sự tương tác của quá trình này làm cho nó trở thành một công cụ học tập tốt.

Đây là một cái nhìn hơi chủ quan nhưng sự tương tác hoạt động rất tốt như là một quá trình học tập cho tôi và đó là cách tiếp cận ưa thích của tôi. Hầu hết các trang web sẽ không khiến bạn mất £ 300 hoặc hơn cho một giấy phép - nếu họ chưa có sẵn. Các trang web duy nhất tôi từng làm việc, nơi họ đã có để có được nó trong là bởi vì họ đã có Visio Standard thay vì Pro. Tôi hỏi rất hay và PHB đã ký nó đi.

0

Tôi thích thử xem các ứng dụng sử dụng cơ sở dữ liệu có cách ghi nhật ký SQL mà chúng sử dụng (hoặc bản thân chương trình phụ trợ DB hay không, nhưng điều đó có xu hướng ít khả thi hơn). Nhận được cảm giác về những yêu cầu được thực hiện trên cơ sở dữ liệu sẽ giúp bạn tập trung vào các bảng quan trọng.

Giống như hầu hết mọi thứ, quy tắc 80/20 áp dụng ở đây: 20% số bảng sẽ làm 80% nội dung thú vị. Một khi bạn đã tìm ra chúng, một sơ đồ hiếm khi cần thiết.

+0

Oh thực sự? 20% 40 bảng có thể quản lý được. 20% của 2000 bảng, không quá nhiều –

+0

Có thực sự. Tôi có một vài hệ thống với hơn 1200 bảng. Trong một, bạn thực sự chỉ cần biết làm thế nào 12 hoặc tương quan với nhau. Mặt khác, khoảng 25. Sơ đồ của toàn bộ lược đồ là vô ích, nhưng bản đồ của các bảng "cốt lõi" này là đủ để hiểu hệ thống ở mức hợp lý. – dland

+1

ok ... 20% của 1200 = 240. 25 gần hơn 2%, do đó bạn đang chứng minh quan điểm của mình. –

2

Hãy thử DBVis - tải xuống tại http://www.minq.se/products/dbvis/ - có phiên bản chuyên nghiệp (không cần thiết) và phiên bản mở đủ.

Tất cả những gì bạn phải làm là tải về JDBC - trình điều khiển cơ sở dữ liệu, công cụ hiển thị bảng và tham chiếu trực giao, hirarchical, trong vòng tròn ;-) vv. Thưởng thức!

1

dbdesc không miễn phí, nhưng tôi đã nghe những điều rất hay về nó. Nó hoạt động với một số cơ sở dữ liệu chính trên mạng.

Tôi đã may mắn vì tôi chưa phải giải mã các lược đồ cơ sở dữ liệu của người khác. Tôi đã sử dụng một tập hợp các mẫu đi kèm với CodeSmith.

0

Nhìn vào các khóa quan trọng của khóa ngoại quan chính đã được thiết lập làm vị trí bắt đầu.

Vì cơ sở dữ liệu không có sơ đồ hiện tại, có thể không có mối quan hệ thiết lập chính thức, tôi nhìn vào cấu trúc bảng và tên và đưa ra những dự đoán tốt nhất về những gì có thể liên quan đến cái gì, sau đó đào sâu vào cấu trúc để xem là các khóa ngoại (nhưng không xác định) rõ ràng. Tôi nhìn vào procs lưu trữ để có được một ý tưởng như thế nào các bảng được tham gia và những lĩnh vực đang được truy vấn trên.

Trong khi các công cụ tự động để tìm ra cơ sở dữ liệu có thể phát ra, tôi thấy rằng khi tôi thực sự tìm hiểu chi tiết về cơ sở dữ liệu, tôi sẽ hiểu rõ hơn nhiều so với bất kỳ hình ảnh nào được tạo tự động.

1

Thứ nhất, tôi có thể nói rằng tôi cảm thấy nỗi đau của bạn!
Dưới đây là một vài lời khuyên của tôi:

  1. Nói chung, một công cụ sẽ chỉ là hữu ích nếu các nhà thiết kế đã xác định một cách chính xác tất cả các khóa chính trong và ngoài nước, vì vậy cần lưu ý rằng một công cụ có thể không nhận tất cả các mối quan hệ quan trọng.
  2. Điều hữu ích nhất là xem những truy vấn nào đang được mã khách hàng thực hiện. Điều này sẽ cho bạn biết không chỉ những mối quan hệ tồn tại, mà các bảng và mối quan hệ nào được sử dụng thường xuyên nhất - đó là nơi bạn sẽ muốn tập trung nỗ lực của mình.
+0

một số công cụ có thể suy ra mối quan hệ nếu tên phù hợp. –

+0

Cảm ơn, @Stephanie. Đó là hữu ích để biết. Bạn có thể đặt tên một vài? –

+0

PowerDesigner có thể làm điều đó. Đó là những gì tôi sử dụng. Nó không rẻ nhưng có phiên bản đầy đủ, 15 ngày, bị ném bom thời gian. –

0

Tôi có một số trải nghiệm khá tốt với Aqua Data Studio để thiết kế ngược một lược đồ DB. Nó rất giàu tính năng và hỗ trợ nhiều cơ sở dữ liệu kỳ lạ hơn như Informix hoặc Sybase.

0

này đã giúp tôi có tạo ra các sơ đồ ER trên MS SQL Server 2012:

MS SQL Server Management Studio> menu File> "Kết nối Object Explorer" Chọn nút Database của bạn và mở rộng nó. dưới nút này bạn sẽ tìm thấy một nút con gọi là "Sơ đồ cơ sở dữ liệu" Nhấp chuột phải vào "Sơ đồ cơ sở dữ liệu"> "Sơ đồ cơ sở dữ liệu mới"> Thêm bảng mà bạn muốn xem các cột, mối quan hệ của họ, ...

0

Sử dụng Visio. Nếu sử dụng Vision 2010, bạn sẽ cần sử dụng Nhà cung cấp OLEDB chung cho SQL Server để đảm bảo rằng sẽ không có vấn đề gì khi kết nối với Trình điều khiển Visio.

+0

Điều này sẽ không hoạt động. Visio không suy ra mối quan hệ giữa các bảng. – reinierpost

Các vấn đề liên quan