2012-04-23 57 views
5

Tôi đang làm một mô hình UML dựa trên ERD của tôi được tạo với MySQL workbench. Nhưng bây giờ tôi có một nghi ngờ về các biểu diễn khóa chính và khóa ngoài trong một sơ đồ lớp.khóa chính/khóa ngoài trong uml

Trong biểu đồ UML truyền thống, chúng ta nên bao gồm các khóa chính làm các thuộc tính của mỗi lớp? Ví dụ: id_user hoặc id_list? Và về chìa khóa nước ngoài? Những cái này bị bỏ qua dưới dạng thuộc tính nhưng được phản ánh là các liên kết?

cảm ơn

Trả lời

1

Trước hết: tại sao bạn muốn vẽ nó trong UML? Nếu bạn đã có một ERD, bạn muốn minh họa thêm thuộc tính bổ sung/thay thế nào với sơ đồ lớp UML mà ERD không cung cấp cho bạn?

Tại sao? Bởi vì UML là một công cụ. Trên giả định sơ đồ chỉ dành cho tiêu dùng của con người (tức là bạn không tạo mã từ nó) thì bạn nên sử dụng UML để hiển thị thông tin bạn đang cố gắng giao tiếp.

Như một tiêu chuẩn chung, UML không nói gì về cách bạn chính thức hóa danh tính (PK/FK). UML tuân theo thành ngữ OO rằng mọi đối tượng đều có bản sắc ngầm - do đó bạn không cần phải xác định rõ ràng nó. Vì vậy, trong trường hợp đơn giản nhất, bạn có thể:

  • liệt kê Thuộc tính PK làm thuộc tính bình thường;
  • bỏ qua tất cả các thuộc tính FK.

Nếu đáp ứng nhu cầu làm mẫu của bạn thì bạn đã hoàn tất.

Là lần tinh lọc thứ hai, bạn có thể gắn thẻ thuộc tính PK với một ràng buộc ocl isUnique(), một lần nữa bỏ qua các FK.

Một tùy chọn khác sẽ là sử dụng các quy tắc của Executable UML. Nó biểu thị cả PKS ('nhận dạng'} và FKS ('thuộc tính tham chiếu'} trực tiếp trên sơ đồ lớp Vì vậy, nó gần gũi nhất với chụp tất cả mọi thứ trong ERD

Vì vậy, trong bản tóm tắt:.. Không có câu trả lời đúng UML áp đặt. Tất cả phụ thuộc vào những gì bạn muốn giao tiếp với các sơ đồ.

hth.

+1

Bỏ qua FK không có ý nghĩa nhiều, imo. Sử dụng các hiệp hội (có các thuộc tính cho thành viên kết thúc tốt) như OP được hỏi là phù hợp hơn. – Christian

+0

@Christian: Có, FK có thể được hiển thị dưới dạng vai trò trong liên kết kết thúc. Quan điểm của tôi là không có bộ quy tắc cứng và nhanh nào phải được áp dụng. Bạn có vĩ độ để làm điều gì đó hoạt động trong trường hợp cụ thể của bạn. FKs như vai trò sẽ là một mặc định tốt mặc dù. – sfinnie

1

bạn có thể sử dụng/tạo một "hồ sơ cơ sở dữ liệu" để chú thích mô hình UML của bạn với thông tin này. Nếu không có một hồ sơ cá nhân bạn có thể sử dụng OCL để xác định các ràng buộc duy nhất trong khi các liên kết thông thường phải đủ để biểu diễn những gì sẽ được chuyển thành khóa ngoài ở cấp cơ sở dữ liệu

0

Bạn có thể sử dụng bản dùng thử EclipseUML Omondo và đảo ngược cơ sở dữ liệu của bạn.

Bạn sẽ nhận được thông tin bạn cần và sau đó bạn có thể sao chép thông tin đó bằng công cụ nguồn mở hoặc miễn phí.

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