2010-09-11 77 views
13

Dự án luận văn thạc sĩ của chúng tôi đang tạo một trình phân tích lược đồ cơ sở dữ liệu. Là một nền tảng cho điều này, chúng tôi đang làm việc để định lượng thiết kế cơ sở dữ liệu xấu.Lược đồ cơ sở dữ liệu thực tế xấu

Người giám sát của chúng tôi đã giao nhiệm vụ phân tích một lược đồ thế giới thực, theo lựa chọn của chúng tôi, để chúng tôi có thể xác định một số/một số vấn đề về thiết kế. Những vấn đề này sẽ được sử dụng như một điểm khởi đầu trong phân tích lược đồ.

Tìm một giản đồ tốt là một chút khó khăn vì chúng tôi không muốn một lược đồ được thiết kế tốt ở mọi khía cạnh, nhưng lược đồ có nhiều "hiếm đến trung bình".

Chúng tôi đã lên lịch các lược đồ sau để phân tích: wikimedia, moodle và drupal. Không chắc chắn loại nào phù hợp. Không cần thiết lược đồ là nguồn mở.

Công cụ cơ sở dữ liệu được sử dụng không quan trọng, mặc dù chúng tôi muốn tập trung vào máy chủ SQL, Posgresql và Oracle.

Hiện tại tài liệu sẽ được hoãn lại, vì nhiệm vụ này được cho là cung cấp cho chúng ta các ví dụ thế giới thực có thể được sử dụng trong luận án. nghĩa là "Thiết kế X được chúng tôi coi là thiết kế tồi, mà thiết bị phân tích của chúng tôi xác định và đề xuất các cải tiến cho", thay vì đưa ra các ví dụ giả tạo.

Tôi sẽ cập nhật bài đăng này khi chúng tôi có sẵn một số công cụ.

+1

Không quan tâm, bạn có thể làm gì khác ngoài việc kiểm tra các biểu mẫu bình thường? Có rất nhiều tối ưu hóa, phụ thuộc vào việc sử dụng, vì vậy tôi đoán mà không có một số truy vấn bạn thực sự không thể biết được điều gì là tối ưu hay không, phải không? –

+0

Điều tôi thấy thú vị hơn là câu hỏi liệu bạn có thực sự tìm thấy nhiều lược đồ "trung gian đến xấu" với các dự án mã nguồn mở (hợp lý và được phát triển tích cực) hay không hoặc liệu các lược đồ xấu có được cải thiện nhanh chóng hay không thế giới nguồn mở. – stakx

+0

chúng sẽ không được cải thiện một cách nhanh chóng bởi vì bạn phải viết lại tấn mã có nghĩa là nó phức tạp để di chuyển một cá thể hiện có. Và một khi căn bệnh lan truyền, bạn đang viết hacks mọi lúc;) – sled

Trả lời

6

Tôi đang làm việc trên một dự án bao gồm hệ thống thông tin địa lý. Và theo tôi, những thiết kế này thường "trung bình" đến "hiếm".

Dưới đây là một số ví dụ:

1) Geonames.org

Bạn có thể tìm thấy các dữ liệu và các lược đồ ở đây: http://download.geonames.org/export/dump/ (di chuyển xuống phía dưới của trang cho các lược đồ, đó là trong văn bản đơn giản trên site!)

Thật thú vị khi thiết kế DB này hoạt động với lượng dữ liệu khổng lồ như vậy!

2) OpenGeoDB

Cái này là rất phổ biến ở các nước nói tiếng Đức (Đức, Áo, Thụy Sĩ) vì đó là một cơ sở dữ liệu có chứa hầu hết các thành phố/thị xã/làng trong khu vực nói tiếng Đức với zip-code, tên, phân cấp và tọa độ.

Điều này đi kèm với lược đồ .sql và các trường bảng bằng tiếng Anh, vì vậy đây không phải là vấn đề.

http://fa-technik.adfc.de/code/opengeodb/

Điều thú vị trong cả hai ví dụ là cách họ quản lý hệ thống phân cấp của các tổ chức như quốc gia -> Nhà nước -> Hạt -> City -> Village, vv

PS: Có lẽ bạn có thể đánh giá của tôi DB thiết kế quá;) DB Schema of a Role Based Access Control

+0

Là loại câu trả lời trễ: Cả Microsoft ASP.NET Membership và nhà cung cấp vai trò (lược đồ của nó, nhưng mã và giao diện) :) –

5

vBulletin có lược đồ cơ sở dữ liệu thực sự xấu.

+0

Có thể tôi là một con vịt què, nhưng tôi không thể tìm thấy lược đồ vBulletin. Bạn có biết nếu nó có thể nhận được mà không cần mua một giấy phép? – Benjamin

+0

Bạn không thể tải xuống phiên bản dùng thử? Tôi không biết cách lấy lược đồ, tôi phải trích xuất dữ liệu từ một hệ thống hiện có cho một khách hàng. Cũng có thể là một ý kiến ​​hay khi gửi thư đến Jelsoft. Đôi khi nó hoạt động :) – tamasd

+1

Chúng tôi tìm thấy một số đồ họa trực tuyến mà chúng tôi sử dụng để thay thế. :) Btw. hãy tưởng tượng xem email sẽ được diễn đạt như thế nào: "Thưa vBulletin, chúng tôi nghe nói bạn có thiết kế DB thực sự xấu, chia sẻ plz." – Benjamin

7

Kiểm tra Dell-dvd-store, bạn có thể sử dụng nó miễn phí.

Dell DVD Store là một mã nguồn mở mô phỏng của một trang web thương mại điện tử trực tuyến với việc triển khai trong Microsoft SQL Server, Oracle và MySQL cùng với chương trình điều khiển và các ứng dụng web

Bill Karwin có đã viết một cuốn sách hay về thiết kế xấu: SQL antipatterns

+0

thx cho gợi ý cuốn sách! :) – sled

3

"chúng tôi đang nghiên cứu định lượng thiết kế cơ sở dữ liệu xấu".

Dường như với tôi như bạn đang phát triển một mô hình, hoặc quá trình hoặc thiết bị, có một lược đồ quan hệ như là đầu vào và điểm số cho chất lượng.

tôi mời các bạn suy nghĩ như sau:

một lược đồ vật lý có thể là "xấu", trong khi các giản đồ logic là dù sao "cực kỳ tốt"? Bạn có dự định phân biệt chính xác giữa "lược đồ lôgic" và "lược đồ vật lý" không? Làm thế nào để bạn mơ ước đạt được điều đó?

Làm thế nào để bạn quyết định rằng một khía cạnh nhất định của thiết kế vật lý là "xấu"? Lấy ví dụ sự vắng mặt của một số chỉ mục. Nếu các relvar rằng "được cho là chỉ số mong muốn" là được trên, bản thân nó bị ràng buộc là một singleton, sau đó những ảnh hưởng bất lợi sẽ sự vắng mặt của chỉ số đó gây ra cho hệ thống? Nếu không có những ảnh hưởng bất lợi như vậy, thì những căn cứ nào có đó để đủ điều kiện sự vắng mặt của một chỉ mục như "xấu"?

Làm cách nào để bạn quyết định rằng một khía cạnh nhất định của thiết kế lôgic là "xấu"? Các lựa chọn trong thiết kế logic được thực hiện như một hệ quả của những yêu cầu thực tế là gì. Làm thế nào bạn có thể đưa ra bất kỳ phán đoán nào về một thiết kế logic, mà không có một cách thức chính thức và có thể đọc được máy để xác định những yêu cầu thực tế là gì?

3

Wow - bạn có một dự án đầy tham vọng phía trước bạn. Để xác định thiết kế cơ sở dữ liệu tốt là gì không thể, ngoại trừ các nguyên tắc và nguyên tắc được hiểu rộng rãi.

Dưới đây là một vài ý tưởng mà bạn quan tâm:

Tôi làm việc cho một công ty quản lý cơ sở dữ liệu cho một số công ty bán lẻ lớn. Chúng tôi có cơ sở dữ liệu tùy chỉnh được thiết kế cho từng công ty, theo cách họ dự định sử dụng dữ liệu (đối với thư trực tiếp, chiến dịch email, v.v.) và loại phân tích và thông số lựa chọn họ muốn sử dụng. Ví dụ, một công ty bán thiết bị âm nhạc trong cửa hàng và trực tuyến sẽ muốn phân biệt giữa khách hàng đi bộ và trực tuyến, phân loại khách hàng theo loại mặt hàng họ mua (trống, guitar, micrô, bàn phím, thiết bị ghi âm, bộ khuếch đại, vv) và theo dõi số tiền họ đã chi tiêu và những gì họ đã mua, trong 6 tháng qua hoặc năm qua. Họ sử dụng thông tin này để quyết định ai sẽ nhận catalog trong thư. Những thư này rất tốn kém; có thể một hoặc hai đô la cho mỗi khách hàng, vì vậy công ty chỉ muốn gửi các danh mục sản phẩm đến những người có nhiều khả năng mua thứ gì đó nhất. Họ có thể có 15 triệu khách hàng trong cơ sở dữ liệu của họ, nhưng chỉ có 3 triệu trống mua, và chỉ 750.000 đã mua bất cứ thứ gì trong năm qua.

Nếu bạn phân tích cơ sở dữ liệu chúng tôi tạo, bạn sẽ tìm thấy nhiều bảng "công việc" được sử dụng cho các mục đích lựa chọn cụ thể và có thể không được thiết kế đúng cách theo nguyên tắc thiết kế cơ sở dữ liệu. Trong khi các bảng "chính" được thiết kế hiệu quả và có các mối quan hệ và chỉ mục thích hợp, thì các bảng "công việc" này sẽ làm cho nó xuất hiện là toàn bộ cơ sở dữ liệu được thiết kế kém, trong thực tế, các bảng công việc có thể được sử dụng một vài lần, hoặc thậm chí chỉ một lần, và chúng tôi đã không đi vào để xóa chúng ra hoặc thả chúng.Các bảng công việc vượt xa các bảng chính trong cơ sở dữ liệu cụ thể này.

Một cũng phải tính đến khối lượng dữ liệu đang được quản lý. Một cơ sở khách hàng 10 triệu có thể có dữ liệu giao dịch đánh số 10 đến 20 triệu giao dịch mỗi tuần. Hoặc mỗi ngày. Đôi khi, để quản lý, dữ liệu này phải được phân đoạn thành các bảng theo phạm vi ngày và sau đó một chế độ xem sẽ được sử dụng để chọn dữ liệu từ bảng phụ thích hợp. Điều này là hiệu quả cho khối lượng lớn này, nhưng nó có thể xuất hiện lặp đi lặp lại đến một máy phân tích tự động.

Máy phân tích của bạn sẽ cần phải được người dùng định cấu hình trước khi phân tích bắt đầu. Một số mục phải được bỏ qua, trong khi những mục khác có thể cực kỳ quan trọng.

Ngoài ra, cách phân tích thủ tục được lưu trữ và các hàm do người dùng xác định, v.v ... Tôi đã thấy một số mã thực sự xấu xí hoạt động khá hiệu quả. Và, một số mã xấu nhất, kém hiệu quả nhất được viết chỉ dùng một lần.

OK, tôi không có ý tưởng cho thời điểm này. Chúc may mắn với dự án của bạn.

+0

là một số loại phần mềm OLAP Cube? :) – sled

0

Nếu bạn có thể nắm bắt được nó, hệ thống quản lý dự án Clarity có thiết kế cơ sở dữ liệu khủng khiếp. Tôi không biết nếu họ có một phiên bản dùng thử, bạn có thể tải xuống.

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