Проблемы по n-арным ассоциациям в SQL / UML - PullRequest
0 голосов
/ 29 июня 2019

У меня есть два (связанных) вопроса о диаграммах классов UML и SQL.

ПЕРВЫЙ: ОБ UML Могу ли я иметь тройные ассоциации с рекурсией в диаграмме классов UML?Я имею в виду что-то вроде этого:

enter image description here

(троичная связь с рекурсией)

Если это возможно, как я могу реализовать этов SQL?Должен ли я иметь уникальную таблицу с тремя атрибутами (по одному для каждого участвующего класса)?

ВТОРОЕ: ОБ SQL Как реализовать количество ассоциаций?Предположим, есть такая ситуация:

enter image description here

Как я могу гарантировать, что каждый экземпляр класса A связан с двумя и только двумя экземплярами класса B

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Вопрос 1:

TableA(int id, varchar fieldA) ->PK id
TableB(int id, varchar fieldB) ->PK id

таблица ассоциаций

TableAB(int id, int keyA, int keyB) -> PK id,
FK1(keyA) ref TableA(id)
FK2(KeyB) ref TableB(id)

Вопрос 2: (Java)

class B 
{

}
class A
{
      //can put constrains on list(methods) not to able to add more the 2(or n) elements
      List<B> l;
      // or B b1; B b2; 
}
0 голосов
/ 29 июня 2019

Первый : Да, вы можете сделать это без проблем. Конечно, это зависит от того, что и почему вы хотите сделать. И это ни в коем случае не рекурсивно.

Второй : Реализация зависит от разработчика. Если есть ограничение множественности, то разработчик должен кодировать проверку для массива или от field1 до fieldN, чтобы содержать ссылки на объекты. В вашем примере экземпляру ClassA нужно ровно две ссылки (вы их не называли) на ClassB, в то время как ClassB имеет необязательную ссылку ClassA. (Понятия не имею, почему вы отметили это SQL)

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