2009-02-12 29 views
9

Tôi quan tâm đến việc tìm hiểu về các công cụ hoạt động như thế này:Trình kiểm tra chuẩn hóa giản đồ cơ sở dữ liệu?

Đưa ra lược đồ cơ sở dữ liệu và một số dữ liệu, đề xuất xem lược đồ có thể được cấu trúc trong bất kỳ biểu mẫu bình thường cụ thể nào không. tạo ra sự bình thường hóa hơn nữa.

Về cơ bản, một công cụ phân tích tĩnh cho thiết kế lược đồ cơ sở dữ liệu. Giống như các công cụ phân tích tĩnh khác, công cụ cơ sở dữ liệu như vậy không cần tạo ra kết quả hoàn hảo (tôi nghi ngờ một công cụ "hoàn hảo" có tính toán khả thi), hoặc áp dụng cho tất cả các hệ thống cơ sở dữ liệu, hoặc nguồn mở/miễn phí. Công cụ này không cần phải độc lập; nó có thể được đóng gói như một số tính năng IDE tinh vi. Tôi chỉ tự hỏi có gì ở ngoài kia.

Trả lời

6

Có thể thực hiện và có ít nhất 2 công cụ có sẵn đặc biệt có thể làm bình thường cho bạn: GeneXus và DeKlarit. Họ sử dụng quy trình có tên là NormalizationBySynthesis

0

Không thể thực hiện được.

Normalization được định nghĩa về phụ thuộc hàm

  1. Không thể được thể hiện trong SQL
  2. Không thể được suy ra từ các dữ liệu

Bạn có thể nhìn vào một bảng như

A | B 
--+-- 
1 | 1 
1 | 2 

và suy ra rằng B là không phải là phụ thuộc vào A (bởi vì nó có hai giá trị riêng biệt cho một giá trị A), nhưng bạn không bao giờ có thể suy ra rằng phụ thuộc không tồn tại, ví dụ: A có thể hoặc không thể phụ thuộc vào B.

+0

Hãy ghi nhớ rằng tôi không tìm kiếm bất kỳ công cụ hoàn toàn chính xác, trên thực tế, tôi đủ điều kiện câu hỏi của tôi để loại trừ khả năng đó. Có lẽ công cụ cũng có thể xem xét việc mã hóa các phụ thuộc chức năng như vậy. –

+1

Nhưng nếu bạn có một bảng với 1 triệu hàng trong đó B là 2 khi A là 1 cho 99,9999% số hàng (có thể có lỗi trong đó và tất cả giá trị B phải là 2) và B không bao giờ là 2 cho bất kỳ giá trị nào khác giá trị của A, bạn có thể thích một công cụ chỉ ra rằng để bạn có thể xem xét nó. –

0

Tôi nghĩ rằng rất khó thực hiện.

Giống như, một bảng

Id | Name | Surname | SSN 

là ở 1NF, và

Id | Name | Surname | Mobile 

là không, nhưng bạn có thể nói nó không phải từ việc thiết kế cũng không từ dữ liệu, chỉ từ tên trường.

Tôi đã từng thấy một cơ sở dữ liệu về siêu âm thực sự có cả hai GENDERLMP (kỳ kinh nguyệt cuối cùng) trong một bảng.

+1

Cả hai ví dụ của bạn đều có trong 1NF. Bạn có nghĩa là 2NF? – finnw

+0

Nó không chỉ cứng, nó có thể tính toán không thể. Nhưng bạn có thể quét ảnh xác định rằng bất kỳ mục nhập LMP không NULL nào có khả năng liên quan đến mục nhập 'Nữ' GENDER (một số lỗi nhập dữ liệu có thể đã vô tình đánh dấu hộp 'Nam'). Hãy suy nghĩ về Heuristics tại đây ... –

+0

@finnw: một người có thể có nhiều số điện thoại di động. Đó là một ví dụ cổ điển từ Wikipedia :) – Quassnoi

6

Một công cụ như bạn mô tả, mà cố gắng để phân tích dữ liệu và siêu dữ liệu của bạn và tư vấn cho bạn về những thể cấu trúc không bình thường, sẽ cung cấp cho gợi ý sai nên thường xuyên rằng nó sẽ làm cho Clippy, trợ lý của Microsoft có vẻ như một không thể thiếu của nhà văn viện trợ.

enter image description here

Quá trình chuẩn hóa liên quan đến việc ánh xạ các yêu cầu phần mềm đến mô hình dữ liệu lôgic. Công cụ phân tích không thể biết yêu cầu dữ liệu của bạn tốt hơn bạn. Vì vậy, nó không thể suy ra từ một thiết kế cơ sở dữ liệu không chính xác mà các bộ phận của nó là sai.

Tôi hiểu rằng bạn đã đủ điều kiện cho câu hỏi và bạn có kỳ vọng giới hạn về khả năng của công cụ.Nhưng bạn sẽ muốn nó hữu ích cho các công việc thường ngày, nhưng nó sẽ không đáng tin cậy ngay cả đối với những trường hợp đơn giản nhất.

So sánh với công cụ phân tích mã tĩnh. Giả sử bạn viết một ứng dụng và gửi nó cho khách hàng của bạn, và khách hàng nói "tại sao tôi không thể gửi email từ ứng dụng này?" Công cụ phân tích mã tĩnh sẽ cho bạn biết rằng bạn đã bỏ qua một tính năng mong muốn như thế nào? Nó không thể biết những yêu cầu đó. Tương tự như vậy, công cụ phân tích chuẩn hóa cơ sở dữ liệu sẽ biết liệu nó có phù hợp với bảng UserAccount để có một thuộc tính MobilePhoneNumber hay không, hoặc nếu thích hợp hơn để tách số điện thoại thành một bảng khác để một người dùng có thể có nhiều điện thoại liệt kê?

+1

Tôi tìm thấy tham chiếu này tới một bài báo: http://www.actapress.com/PaperInfo.aspx ? PaperID = 28880 & reason = 500 Nó cho thấy rằng ít nhất ai đó nghĩ rằng có thể tạo ra một cái gì đó hữu ích trong không gian này :) Đó là một bài nghiên cứu, do đó, không biết làm thế nào thực tế là giải pháp. –

+0

số điện thoại wrt, một công cụ có thể phát hiện bảng với một số cột số điện thoại, hoặc bằng cách phát hiện chuỗi "phonenumber" được lặp lại trong tên cột hoặc bằng cách phát hiện dữ liệu có cùng định dạng, độ dài, v.v. –

+0

Bất kỳ công cụ nào như vậy hoặc kỹ thuật sẽ có tỷ lệ "dương tính giả" cao. Nó sẽ chính xác hơn, đáng tin cậy và tiết kiệm chi phí để có một con người làm công việc thiết kế. –

3

Tôi cũng đã nghĩ về vấn đề này. Đó là lý thuyết có thể và có một số tài liệu nghiên cứu về chủ đề này. có sử dụng công cụ khá thú vị tại www.dbtools.cs.cornell.edu. Điều này được phát triển bởi tác giả nổi tiếng Raghu Ramakrishnan. Ông hiện đang ở Yahoo Research. Bạn có thể tham khảo các giấy tờ sau để biết thêm thông tin

  1. Diederich, T. và Miton, J., (1988), "Phương pháp mới và thuật toán nhanh để chuẩn hóa cơ sở dữ liệu", Giao dịch ACM trên hệ thống cơ sở dữ liệu, 13 (3), 339-365.
  2. Bernstein, P. A. (1986), "Tổng hợp quan hệ biểu mẫu thông thường thứ ba từ các phụ thuộc chức năng", các giao dịch ACM trên các hệ thống cơ sở dữ liệu, tập 1. Số 4, trang 277-298.
  3. JMathNorm: Công cụ chuẩn hóa cơ sở dữ liệu sử dụng Mathematica, Bài giảng trong Khoa học máy tính; Vol. 4488, Kỷ yếu Hội nghị quốc tế lần thứ 7 về Khoa học Máy tính, Phần II, Ali Yazici, Ziya Karakaya

Liên kết thứ ba rất thú vị. Dưới đây là tóm tắt của bài báo:

Bài viết này là về thiết kế một công cụ tương tác hoàn chỉnh , tên JMathNorm, cho cơ sở dữ liệu quan hệ (RDB) bình thường sử dụng Mathematica. Nó là một phần mở rộng của nguyên mẫu phát triển bởi các tác giả cùng [1] với sự bao gồm của Form Second Bình thường (2NF), và Boyce Codd-Normal Form (BCNF) ngoài các hiện Form bình thường thứ ba (3NF) mô-đun. Công cụ được phát triển trong nghiên cứu này là hoàn chỉnh và có thể được sử dụng cho thời gian thực thiết kế cơ sở dữ liệu cũng như trợ giúp trong các khái niệm cơ bản về chuẩn hóa cho sinh viên có giới hạn nền toán học. JMathNorm cũng hỗ trợ sử dụng tương tác của mô-đun cho thực hiện thí điểm hoạt động thiết lập nền tảng như đóng cửa, và toàn đóng cửa cùng với mô-đun để có được tối thiểu bìa của sự phụ thuộc chức năng thiết lập và thử nghiệm một thuộc tính cho một chìa khóa ứng cử viên. Giao diện GUI của JMathNorm được viết bằng Java và sử dụng cơ sở JLink của Mathematica để điều khiển hạt nhân Mathematica.

Tôi cũng rất quan tâm đến câu trả lời cho câu hỏi này. Nếu có ai đó gặp một công cụ, xin vui lòng cho chúng tôi biết!

+0

Thông tin tuyệt vời - Cảm ơn! –

+2

Khoảng 20 năm trước, tôi đã thực hiện quy trình được mô tả trong giấy Bernstein là một dự án đại học. Đầu vào cho chương trình là tập hợp các chức năng phụ thuộc (FD's) cho cơ sở dữ liệu của bạn. Đầu ra là một lược đồ chuẩn hóa. Vấn đề với cách tiếp cận này là những người hiểu FD không gặp khó khăn trong việc phát triển một lược đồ chuẩn hóa, và những người không hiểu FD không thể cùng nhau đưa đầu vào cho chương trình! Thật không may là bản sao duy nhất tôi còn lại là trên một đĩa mềm 5,25 inch - và không có cách nào để đọc nó. – NealB

+0

@NealB bạn đã thử eBay chưa? – Mawg

2

Công cụ nguồn mở SchemaSpy phát hiện một số "dị thường", như "Bảng không có chỉ mục" hoặc "Cột được gắn cờ là cả 'không thể' và 'phải là duy nhất'". Một trong những bất thường là "Bàn với incrementing tên cột, có khả năng chỉ ra denormalization"

http://schemaspy.sourceforge.net/

+0

+1 @balazscs - đó là hữu ích certianly – Mawg

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