Re: Работа с базой данных OpenMeetings

2024-02-08 Пенетрантность Maxim Solodovnik
может быть тут можно пойти другим путём?

составить пример "отчёта мечты" в том виде в котором его увидит пользователь

понять чего сейчас не хватает чтобы "запросто" такое построить

добавить это

:))

On Thu, 8 Feb 2024 at 21:54, Maxim Solodovnik  wrote:
>
> On Thu, 8 Feb 2024 at 21:39, Елизавета Фролова  wrote:
> >
> > https://docs.google.com/document/d/1OADjPFaw6SCoqmK6mNgoZRiStGPwjPReqG2YUkciYSk/edit?usp=sharing
> >
> > Прикрепляю Вам ссылку на эти запросы. Немного описала, как именно их можно
> > использовать и их полезность.
>
> ага
> помнится я крепко задумался на тему: что будет если
>  - человека выкинуло и/или он/она перезаходил в комнату много раз
>  - необходимо как-то "закрывать" записи в этой таблице (если сервер
> перегрузился почему-то)
>
> на тему сущности "видеоконференция" можно завести дополнительные
> события (типы событий)
> и сделать лог интереснее :))
>
> >
> > чт, 8 февр. 2024 г. в 17:22, Maxim Solodovnik :
> >
> > > Добрый вечер Павел,
> > >
> > > On Thu, 8 Feb 2024 at 19:33, Pavel Zhdanovich 
> > > wrote:
> > > >
> > > > Здравствуйте, Максим!
> > > > (Прошу прощения, промахнулся с ответом )
> > > > Попробую немного объяснить замысел.
> > > > Мы хотим использовать базу данных OpenMeetings для анализа данных.
> > > > Задача у меня возникла уже довольно давно. В 2020 году нас всех
> > > > отправили на карантин, и я, как и другие университетские преподаватели,
> > > > начал проводить занятия дистанционно и использовал для этого
> > > > OpenMeetings, который у меня был развернут дома. Могу, кстати,
> > > > похвастаться, что не провел ни одной минуты занятий со своими студентами
> > > > в проприетарных системах видеоконференций, не считая случая, когда меня
> > > > включили в комиссию и принудительно подключили к Zoom. 
> > >
> > > это отличные новости :)
> > >
> > > > Руководство требовало от нас предоставлять отчеты о проведенных
> > > > занятиях: сколько часов проведено, сколько студентов присутствовало,
> > > > сколько пропускало и т.д. Мне было лень проводить переклички, запускать
> > > > голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я
> > > > просто подключался к БД (Postgres) и писал SQL-запрос.
> > > > Позже я поставил Елизавете задачу написать несколько аналогичных
> > > > запросов, в которых уже появляется некая производная сущность "встреча"
> > > > или "конференция". Это ситуация, когда двое или более пользователей
> > > > одновременно находятся в одной комнате, скажем, более 1 минуты. Такие
> > > > запросы уже пишутся с применением Window Functions (OLAP Functions в DB2
> > > > и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не
> > > > знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в
> > > > основной проект.
> > >
> > > это очень даже актуальная задача :))
> > > https://issues.apache.org/jira/browse/OPENMEETINGS-858
> > > https://issues.apache.org/jira/browse/OPENMEETINGS-
> > >
> > > мне казалось что тут можно/нужно улучшать таблицу `conference_log` :))
> > >
> > > и я бы принял такой PR (пусть и на уровне запроса)
> > > и прикрутил бы к нему и "веб-морду" и REST
> > >
> > > > С другой стороны, и не такая уж узкоспецифическая.
> > > > Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 
> > > > Так вот, для таких запросов могут понадобиться новые индексы и
> > > > определения внешних ключей, так как оптимизаторы в СУБД используют их
> > > > при составлении планов запросов, содержащих joins.
> > > > А поскольку внешние ключи сейчас определяются в приложении, которое
> > > > монопольно использует БД, мы решили посоветоваться насчет их определения
> > > > на уровне БД при помощи DDL, так как к базе данных подключаются и другие
> > > > приложения.
> > >
> > > но, если честно, я пока совсем не понимаю как тут помогут те ключи,
> > > которые упомянуты в документе :(
> > > может можно это как-то на примере показать? :)
> > >
> > > зы индексы можно добавить
> > >
> > > >
> > > > С уважением,
> > > > Павел Жданович
> > > >
> > > >
> > > > 08.02.2024 06:19, Maxim Solodovnik пишет:
> > > > > Здравствуйте Елизавета,
> > > > >
> > > > > очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я
> > > > > сильно тихий :))
> > > > > ну и плюс ответ написать было сложно :(
> > > > >
> > > > > БД описывается аннотациями JPA
> > > > > вот пример:
> > > https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417
> > > > >
> > > > >
> > > > > по пунктам:
> > > > >   - **Блок "Первичные ключи для таблиц"**
> > > > >
> > > > > например таблица `om_user_right` создаётся вот такими аннотациями:
> > > > > @ElementCollection(fetch = FetchType.EAGER)
> > > > > @Column(name = "om_right")
> > > > > @CollectionTable(name = "om_user_right", joinColumns =
> > > > > @JoinColumn(name = "user_id"))
> > > > > @Enumerated(EnumType.STRING)
> > > > >
> > > > > для этой таблицы не нужен Primary Key
> > > > > индивидуальный доступ к элементам не нужен
> > 

Re: Работа с базой данных OpenMeetings

2024-02-08 Пенетрантность Maxim Solodovnik
On Thu, 8 Feb 2024 at 21:39, Елизавета Фролова  wrote:
>
> https://docs.google.com/document/d/1OADjPFaw6SCoqmK6mNgoZRiStGPwjPReqG2YUkciYSk/edit?usp=sharing
>
> Прикрепляю Вам ссылку на эти запросы. Немного описала, как именно их можно
> использовать и их полезность.

ага
помнится я крепко задумался на тему: что будет если
 - человека выкинуло и/или он/она перезаходил в комнату много раз
 - необходимо как-то "закрывать" записи в этой таблице (если сервер
перегрузился почему-то)

на тему сущности "видеоконференция" можно завести дополнительные
события (типы событий)
и сделать лог интереснее :))

>
> чт, 8 февр. 2024 г. в 17:22, Maxim Solodovnik :
>
> > Добрый вечер Павел,
> >
> > On Thu, 8 Feb 2024 at 19:33, Pavel Zhdanovich 
> > wrote:
> > >
> > > Здравствуйте, Максим!
> > > (Прошу прощения, промахнулся с ответом )
> > > Попробую немного объяснить замысел.
> > > Мы хотим использовать базу данных OpenMeetings для анализа данных.
> > > Задача у меня возникла уже довольно давно. В 2020 году нас всех
> > > отправили на карантин, и я, как и другие университетские преподаватели,
> > > начал проводить занятия дистанционно и использовал для этого
> > > OpenMeetings, который у меня был развернут дома. Могу, кстати,
> > > похвастаться, что не провел ни одной минуты занятий со своими студентами
> > > в проприетарных системах видеоконференций, не считая случая, когда меня
> > > включили в комиссию и принудительно подключили к Zoom. 
> >
> > это отличные новости :)
> >
> > > Руководство требовало от нас предоставлять отчеты о проведенных
> > > занятиях: сколько часов проведено, сколько студентов присутствовало,
> > > сколько пропускало и т.д. Мне было лень проводить переклички, запускать
> > > голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я
> > > просто подключался к БД (Postgres) и писал SQL-запрос.
> > > Позже я поставил Елизавете задачу написать несколько аналогичных
> > > запросов, в которых уже появляется некая производная сущность "встреча"
> > > или "конференция". Это ситуация, когда двое или более пользователей
> > > одновременно находятся в одной комнате, скажем, более 1 минуты. Такие
> > > запросы уже пишутся с применением Window Functions (OLAP Functions в DB2
> > > и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не
> > > знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в
> > > основной проект.
> >
> > это очень даже актуальная задача :))
> > https://issues.apache.org/jira/browse/OPENMEETINGS-858
> > https://issues.apache.org/jira/browse/OPENMEETINGS-
> >
> > мне казалось что тут можно/нужно улучшать таблицу `conference_log` :))
> >
> > и я бы принял такой PR (пусть и на уровне запроса)
> > и прикрутил бы к нему и "веб-морду" и REST
> >
> > > С другой стороны, и не такая уж узкоспецифическая.
> > > Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 
> > > Так вот, для таких запросов могут понадобиться новые индексы и
> > > определения внешних ключей, так как оптимизаторы в СУБД используют их
> > > при составлении планов запросов, содержащих joins.
> > > А поскольку внешние ключи сейчас определяются в приложении, которое
> > > монопольно использует БД, мы решили посоветоваться насчет их определения
> > > на уровне БД при помощи DDL, так как к базе данных подключаются и другие
> > > приложения.
> >
> > но, если честно, я пока совсем не понимаю как тут помогут те ключи,
> > которые упомянуты в документе :(
> > может можно это как-то на примере показать? :)
> >
> > зы индексы можно добавить
> >
> > >
> > > С уважением,
> > > Павел Жданович
> > >
> > >
> > > 08.02.2024 06:19, Maxim Solodovnik пишет:
> > > > Здравствуйте Елизавета,
> > > >
> > > > очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я
> > > > сильно тихий :))
> > > > ну и плюс ответ написать было сложно :(
> > > >
> > > > БД описывается аннотациями JPA
> > > > вот пример:
> > https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417
> > > >
> > > >
> > > > по пунктам:
> > > >   - **Блок "Первичные ключи для таблиц"**
> > > >
> > > > например таблица `om_user_right` создаётся вот такими аннотациями:
> > > > @ElementCollection(fetch = FetchType.EAGER)
> > > > @Column(name = "om_right")
> > > > @CollectionTable(name = "om_user_right", joinColumns =
> > > > @JoinColumn(name = "user_id"))
> > > > @Enumerated(EnumType.STRING)
> > > >
> > > > для этой таблицы не нужен Primary Key
> > > > индивидуальный доступ к элементам не нужен
> > > > элементы этой "подтаблицы" всегда достаются **все** при работе с
> > > > объектом пользователя
> > > > вставка/удаление происходят автоматически, редактирование не нужно
> > > >
> > > > остальные таблицы этого блока такие же
> > > >
> > > >
> > > >   - **Блок "Внешние ключи для таблиц"**
> > > >
> > > > эти ключи будет очень затруднительно добавить используя аннотации JPA
> > > > (похоже единственный способ - добавить @OneToOne аннотацию)
> > > > в результате 

Re: Работа с базой данных OpenMeetings

2024-02-08 Пенетрантность Елизавета Фролова
https://docs.google.com/document/d/1OADjPFaw6SCoqmK6mNgoZRiStGPwjPReqG2YUkciYSk/edit?usp=sharing

Прикрепляю Вам ссылку на эти запросы. Немного описала, как именно их можно
использовать и их полезность.

чт, 8 февр. 2024 г. в 17:22, Maxim Solodovnik :

> Добрый вечер Павел,
>
> On Thu, 8 Feb 2024 at 19:33, Pavel Zhdanovich 
> wrote:
> >
> > Здравствуйте, Максим!
> > (Прошу прощения, промахнулся с ответом )
> > Попробую немного объяснить замысел.
> > Мы хотим использовать базу данных OpenMeetings для анализа данных.
> > Задача у меня возникла уже довольно давно. В 2020 году нас всех
> > отправили на карантин, и я, как и другие университетские преподаватели,
> > начал проводить занятия дистанционно и использовал для этого
> > OpenMeetings, который у меня был развернут дома. Могу, кстати,
> > похвастаться, что не провел ни одной минуты занятий со своими студентами
> > в проприетарных системах видеоконференций, не считая случая, когда меня
> > включили в комиссию и принудительно подключили к Zoom. 
>
> это отличные новости :)
>
> > Руководство требовало от нас предоставлять отчеты о проведенных
> > занятиях: сколько часов проведено, сколько студентов присутствовало,
> > сколько пропускало и т.д. Мне было лень проводить переклички, запускать
> > голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я
> > просто подключался к БД (Postgres) и писал SQL-запрос.
> > Позже я поставил Елизавете задачу написать несколько аналогичных
> > запросов, в которых уже появляется некая производная сущность "встреча"
> > или "конференция". Это ситуация, когда двое или более пользователей
> > одновременно находятся в одной комнате, скажем, более 1 минуты. Такие
> > запросы уже пишутся с применением Window Functions (OLAP Functions в DB2
> > и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не
> > знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в
> > основной проект.
>
> это очень даже актуальная задача :))
> https://issues.apache.org/jira/browse/OPENMEETINGS-858
> https://issues.apache.org/jira/browse/OPENMEETINGS-
>
> мне казалось что тут можно/нужно улучшать таблицу `conference_log` :))
>
> и я бы принял такой PR (пусть и на уровне запроса)
> и прикрутил бы к нему и "веб-морду" и REST
>
> > С другой стороны, и не такая уж узкоспецифическая.
> > Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 
> > Так вот, для таких запросов могут понадобиться новые индексы и
> > определения внешних ключей, так как оптимизаторы в СУБД используют их
> > при составлении планов запросов, содержащих joins.
> > А поскольку внешние ключи сейчас определяются в приложении, которое
> > монопольно использует БД, мы решили посоветоваться насчет их определения
> > на уровне БД при помощи DDL, так как к базе данных подключаются и другие
> > приложения.
>
> но, если честно, я пока совсем не понимаю как тут помогут те ключи,
> которые упомянуты в документе :(
> может можно это как-то на примере показать? :)
>
> зы индексы можно добавить
>
> >
> > С уважением,
> > Павел Жданович
> >
> >
> > 08.02.2024 06:19, Maxim Solodovnik пишет:
> > > Здравствуйте Елизавета,
> > >
> > > очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я
> > > сильно тихий :))
> > > ну и плюс ответ написать было сложно :(
> > >
> > > БД описывается аннотациями JPA
> > > вот пример:
> https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417
> > >
> > >
> > > по пунктам:
> > >   - **Блок "Первичные ключи для таблиц"**
> > >
> > > например таблица `om_user_right` создаётся вот такими аннотациями:
> > > @ElementCollection(fetch = FetchType.EAGER)
> > > @Column(name = "om_right")
> > > @CollectionTable(name = "om_user_right", joinColumns =
> > > @JoinColumn(name = "user_id"))
> > > @Enumerated(EnumType.STRING)
> > >
> > > для этой таблицы не нужен Primary Key
> > > индивидуальный доступ к элементам не нужен
> > > элементы этой "подтаблицы" всегда достаются **все** при работе с
> > > объектом пользователя
> > > вставка/удаление происходят автоматически, редактирование не нужно
> > >
> > > остальные таблицы этого блока такие же
> > >
> > >
> > >   - **Блок "Внешние ключи для таблиц"**
> > >
> > > эти ключи будет очень затруднительно добавить используя аннотации JPA
> > > (похоже единственный способ - добавить @OneToOne аннотацию)
> > > в результате при запросе `menu_group` (например) будет каждый раз
> > > тащиться ещё и куча связанных сущностей
> > >
> > > то есть запросы станут очень **тяжёлыми**
> > >
> > > не могли бы Вы прокомментировать всё что я написал
> > > и может у Вас есть какой-то анализ: какой в этом всём смысл? ну то
> > > есть добавление ключей
> > >
> > > За
> > >   - увеличит связность
> > >
> > > Против
> > >   - замедлит базу
> > >   - замедлит все запросы: добавление @OneToOne/@OneToMany добавляет
> > > JOINы и кучу колонок из связанных таблиц в каждый запрос :(((
> > >
> > > на мой взгляд "против" сильно перевешивает 

Re: Работа с базой данных OpenMeetings

2024-02-08 Пенетрантность Maxim Solodovnik
Добрый вечер Павел,

On Thu, 8 Feb 2024 at 19:33, Pavel Zhdanovich  wrote:
>
> Здравствуйте, Максим!
> (Прошу прощения, промахнулся с ответом )
> Попробую немного объяснить замысел.
> Мы хотим использовать базу данных OpenMeetings для анализа данных.
> Задача у меня возникла уже довольно давно. В 2020 году нас всех
> отправили на карантин, и я, как и другие университетские преподаватели,
> начал проводить занятия дистанционно и использовал для этого
> OpenMeetings, который у меня был развернут дома. Могу, кстати,
> похвастаться, что не провел ни одной минуты занятий со своими студентами
> в проприетарных системах видеоконференций, не считая случая, когда меня
> включили в комиссию и принудительно подключили к Zoom. 

это отличные новости :)

> Руководство требовало от нас предоставлять отчеты о проведенных
> занятиях: сколько часов проведено, сколько студентов присутствовало,
> сколько пропускало и т.д. Мне было лень проводить переклички, запускать
> голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я
> просто подключался к БД (Postgres) и писал SQL-запрос.
> Позже я поставил Елизавете задачу написать несколько аналогичных
> запросов, в которых уже появляется некая производная сущность "встреча"
> или "конференция". Это ситуация, когда двое или более пользователей
> одновременно находятся в одной комнате, скажем, более 1 минуты. Такие
> запросы уже пишутся с применением Window Functions (OLAP Functions в DB2
> и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не
> знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в
> основной проект.

это очень даже актуальная задача :))
https://issues.apache.org/jira/browse/OPENMEETINGS-858
https://issues.apache.org/jira/browse/OPENMEETINGS-

мне казалось что тут можно/нужно улучшать таблицу `conference_log` :))

и я бы принял такой PR (пусть и на уровне запроса)
и прикрутил бы к нему и "веб-морду" и REST

> С другой стороны, и не такая уж узкоспецифическая.
> Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 
> Так вот, для таких запросов могут понадобиться новые индексы и
> определения внешних ключей, так как оптимизаторы в СУБД используют их
> при составлении планов запросов, содержащих joins.
> А поскольку внешние ключи сейчас определяются в приложении, которое
> монопольно использует БД, мы решили посоветоваться насчет их определения
> на уровне БД при помощи DDL, так как к базе данных подключаются и другие
> приложения.

но, если честно, я пока совсем не понимаю как тут помогут те ключи,
которые упомянуты в документе :(
может можно это как-то на примере показать? :)

зы индексы можно добавить

>
> С уважением,
> Павел Жданович
>
>
> 08.02.2024 06:19, Maxim Solodovnik пишет:
> > Здравствуйте Елизавета,
> >
> > очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я
> > сильно тихий :))
> > ну и плюс ответ написать было сложно :(
> >
> > БД описывается аннотациями JPA
> > вот пример: 
> > https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417
> >
> >
> > по пунктам:
> >   - **Блок "Первичные ключи для таблиц"**
> >
> > например таблица `om_user_right` создаётся вот такими аннотациями:
> > @ElementCollection(fetch = FetchType.EAGER)
> > @Column(name = "om_right")
> > @CollectionTable(name = "om_user_right", joinColumns =
> > @JoinColumn(name = "user_id"))
> > @Enumerated(EnumType.STRING)
> >
> > для этой таблицы не нужен Primary Key
> > индивидуальный доступ к элементам не нужен
> > элементы этой "подтаблицы" всегда достаются **все** при работе с
> > объектом пользователя
> > вставка/удаление происходят автоматически, редактирование не нужно
> >
> > остальные таблицы этого блока такие же
> >
> >
> >   - **Блок "Внешние ключи для таблиц"**
> >
> > эти ключи будет очень затруднительно добавить используя аннотации JPA
> > (похоже единственный способ - добавить @OneToOne аннотацию)
> > в результате при запросе `menu_group` (например) будет каждый раз
> > тащиться ещё и куча связанных сущностей
> >
> > то есть запросы станут очень **тяжёлыми**
> >
> > не могли бы Вы прокомментировать всё что я написал
> > и может у Вас есть какой-то анализ: какой в этом всём смысл? ну то
> > есть добавление ключей
> >
> > За
> >   - увеличит связность
> >
> > Против
> >   - замедлит базу
> >   - замедлит все запросы: добавление @OneToOne/@OneToMany добавляет
> > JOINы и кучу колонок из связанных таблиц в каждый запрос :(((
> >
> > на мой взгляд "против" сильно перевешивает 
> >
> > On Sun, 28 Jan 2024 at 20:36, Елизавета Фролова  
> > wrote:
> >> https://docs.google.com/document/d/12WmqQKdNSr0o_TAnCMkAm4EMx1MrrSqD50VAV9_Kk_Q/edit?usp=sharing
> >> добрый день! прикрепила ссылку для просмотра ключей, созданных в базе 
> >> данных
> >>
> >> вт, 23 янв. 2024 г. в 06:23, Maxim Solodovnik :
> >>
> >>> On Mon, 22 Jan 2024 at 23:49, Елизавета Фролова 
> >>> wrote:
>  Запросы я перенесла в документ Word, да.
>  Создавала ключи там, 

Re: Работа с базой данных OpenMeetings

2024-02-08 Пенетрантность Pavel Zhdanovich

Здравствуйте, Максим!
(Прошу прощения, промахнулся с ответом )
Попробую немного объяснить замысел.
Мы хотим использовать базу данных OpenMeetings для анализа данных. 
Задача у меня возникла уже довольно давно. В 2020 году нас всех 
отправили на карантин, и я, как и другие университетские преподаватели, 
начал проводить занятия дистанционно и использовал для этого 
OpenMeetings, который у меня был развернут дома. Могу, кстати, 
похвастаться, что не провел ни одной минуты занятий со своими студентами 
в проприетарных системах видеоконференций, не считая случая, когда меня 
включили в комиссию и принудительно подключили к Zoom. 
Руководство требовало от нас предоставлять отчеты о проведенных 
занятиях: сколько часов проведено, сколько студентов присутствовало, 
сколько пропускало и т.д. Мне было лень проводить переклички, запускать 
голосовалки и т.п., как это делали коллеги, а потом считать вручную. Я 
просто подключался к БД (Postgres) и писал SQL-запрос.
Позже я поставил Елизавете задачу написать несколько аналогичных 
запросов, в которых уже появляется некая производная сущность "встреча" 
или "конференция". Это ситуация, когда двое или более пользователей 
одновременно находятся в одной комнате, скажем, более 1 минуты. Такие 
запросы уже пишутся с применением Window Functions (OLAP Functions в DB2 
и т.п.). Парочку из них Елизавета, думаю, сможет здесь показать. Я не 
знаю, настолько ли это всеобщая задача, чтобы предлагать включить ее в 
основной проект. С другой стороны, и не такая уж узкоспецифическая. 
Скорее, это что-то в жанре "OpenMeetings SQL Cookbook". 
Так вот, для таких запросов могут понадобиться новые индексы и 
определения внешних ключей, так как оптимизаторы в СУБД используют их 
при составлении планов запросов, содержащих joins.
А поскольку внешние ключи сейчас определяются в приложении, которое 
монопольно использует БД, мы решили посоветоваться насчет их определения 
на уровне БД при помощи DDL, так как к базе данных подключаются и другие 
приложения.


С уважением,
Павел Жданович


08.02.2024 06:19, Maxim Solodovnik пишет:

Здравствуйте Елизавета,

очень извиняюсь за долгий ответ (не стесняйтесь меня пинать если я
сильно тихий :))
ну и плюс ответ написать было сложно :(

БД описывается аннотациями JPA
вот пример: 
https://github.com/apache/openmeetings/blob/master/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java#L417


по пунктам:
  - **Блок "Первичные ключи для таблиц"**

например таблица `om_user_right` создаётся вот такими аннотациями:
@ElementCollection(fetch = FetchType.EAGER)
@Column(name = "om_right")
@CollectionTable(name = "om_user_right", joinColumns =
@JoinColumn(name = "user_id"))
@Enumerated(EnumType.STRING)

для этой таблицы не нужен Primary Key
индивидуальный доступ к элементам не нужен
элементы этой "подтаблицы" всегда достаются **все** при работе с
объектом пользователя
вставка/удаление происходят автоматически, редактирование не нужно

остальные таблицы этого блока такие же


  - **Блок "Внешние ключи для таблиц"**

эти ключи будет очень затруднительно добавить используя аннотации JPA
(похоже единственный способ - добавить @OneToOne аннотацию)
в результате при запросе `menu_group` (например) будет каждый раз
тащиться ещё и куча связанных сущностей

то есть запросы станут очень **тяжёлыми**

не могли бы Вы прокомментировать всё что я написал
и может у Вас есть какой-то анализ: какой в этом всём смысл? ну то
есть добавление ключей

За
  - увеличит связность

Против
  - замедлит базу
  - замедлит все запросы: добавление @OneToOne/@OneToMany добавляет
JOINы и кучу колонок из связанных таблиц в каждый запрос :(((

на мой взгляд "против" сильно перевешивает 

On Sun, 28 Jan 2024 at 20:36, Елизавета Фролова  wrote:

https://docs.google.com/document/d/12WmqQKdNSr0o_TAnCMkAm4EMx1MrrSqD50VAV9_Kk_Q/edit?usp=sharing
добрый день! прикрепила ссылку для просмотра ключей, созданных в базе данных

вт, 23 янв. 2024 г. в 06:23, Maxim Solodovnik :


On Mon, 22 Jan 2024 at 23:49, Елизавета Фролова 
wrote:

Запросы я перенесла в документ Word, да.
Создавала ключи там, где, как мне казалось, их нет.

давайте где-нибудь выложим этот документ? :)
(на ум приходит: google docs или
https://cwiki.apache.org/confluence/display/OPENMEETINGS) :)


Пн, 22 янв. 2024 г. в 19:39, Maxim Solodovnik :


Доброй ночи Елизавета,

from mobile (sorry for typos ;)


On Mon, Jan 22, 2024, 23:14 Елизавета Фролова 
wrote:


Здравствуйте!
Меня зовут Елизавета, я студентка Волгоградского государственного
университета.
Моя бакалаврская работа связана с работой с базой данных

OpenMeetings. С

вами уже связывался наш научный руководитель Жданович Павел

Борисович.

Хотела бы показать Вам, что у меня уже готово.
Я работала с созданием первичных и внешних ключей, где они были

нужны.

Как я могу прислать свою работу?


Я уже писал Павлу что (вроде как) ключи в базе есть

Сейчас они заданы в виде аннотаций JPA

В каком виде ваша работа?
PR? Документ? :)




--
Best regards,
Maxim