UML путаница в сценарии «многие ко многим» - PullRequest
0 голосов
/ 01 февраля 2012

Это моя примерная диаграмма классов

cls_Invoice = {InvoiceID: int, InvoiceDate: Date, InvoiceProduct: cls_Products };

cls_Products = {ProductID: int, StockQuantity: double, Price: double};

БД таблиц

Invoice = {InvoiceID, InvoiceDate}; Products = {ProductID, StockQuantity, Price};

1 счет имеет много продуктов 1 продукты могут быть во многих счетах так что в конце концов в дизайне ER будет ссылка, как показано ниже

Invoice_Products = {InvoiceID, ProductID, Кол-во, Цена}

но теперь есть еще два свойства Qty и Price, которые я понятия не имею при рисовании диаграммы классов, пожалуйста, совет?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012

На диаграмме классов UML у вас будет два класса: Счет-фактура и Продукт.Счет имеет два атрибута: InvoiceID и InvoiceDate, продукт имеет три атрибута: ProductID, StockQuantity и Price.Между двумя классами вам нужна ассоциация с кратностью 1 .. * на обоих концах.

1 голос
/ 03 февраля 2012

Хотя я не очень знаком с приложениями для покупок, но когда я думаю об этом, мне приходят в голову следующие моменты:

Должна быть другая концепция для проданного товара / продукта, чем предмет / продукт. Потому что «концепция продукта» должна быть независимой от «того, что можно сделать с продуктом». Например, продажа товара - это не то же самое понятие, что и сам товар. Поэтому у вас может быть другой класс, например orderItem.

class product {
    Long productId
    String productName
    ...
} 

class orderItem{
      Product soldProduct;
      Invoice itsInvoice;

      public Invoice getItsInvoice();

}

class Invoice {
    Long invoiceNumber;
    List<OrderItem> orderItem;

}

Если вы сделаете это, то каждый элемент заказа принадлежит только одному счету, в то время как счет может иметь много элементов заказа. Следовательно, между ivoice и позицией заказа существует взаимно-однозначное отношение, а между oreritem и продуктом - взаимно-однозначное отношение.

Даже если вы все еще делаете это только с двумя сущностями, счет-фактура и продукт, что подразумевает, что вы объединяете понятия «продукт» и «продающий продукт» в одну сущность, все же связь между счетом-фактурой и продуктом является однозначной. -Много не много ко многим. Потому что отношения между ними через "продажу продукта". В этом случае «проданный товар» принадлежит только одному счету.

Но первый подход кажется мне лучше.

0 голосов
/ 13 сентября 2018

Это сценарий «один ко многим», а не сценарий «многие ко многим». Один и тот же продукт не может быть частью многих счетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...