# source: 2026-09-11/rec_20260911_103848.m4a # model: Systran/faster-whisper-small # transcribed: 2026-10-22T08:26:25Z [00:00:00] Но выбор структуры – это достаточно простая штука. [00:00:05] Для этого внутри базы не должно быть несколько хранилищ, [00:00:12] одно и то же структуры. [00:00:15] В принципе, если мы берем скривилайт, то оно так и напрашивается. [00:00:18] То есть, если мы туда добавили таблицы про кульство, [00:00:26] то они будут единственным экземплярием. [00:00:28] Там не будет набора таблиц в прокус, в одном неймспейсе и в другом неймспейсе. [00:00:34] Слоя базы. [00:00:37] И поэтому сам репозиторик своей реализацией [00:00:42] собственно и отражает выбор структуры в рамках базы данных. [00:00:48] Понятно, да? [00:00:51] Ну, еще раз напомню, откуда взялись родительские ID. [00:00:56] Смотри, в чем прикол. [00:00:58] В XML-документах, когда мы с ними работаем, [00:01:03] мы иногда используем следующий прием. [00:01:06] То есть, мы определяем какую-то XML-структуру универсальную [00:01:13] и засовываем ее, где ее в разные объекты, [00:01:18] то есть в разные места XML большого. [00:01:21] Ну, например, мы определяем связи с требованиями в инструкциях. [00:01:26] И вот этот блок в связи мы с уем отдельно в объекты. [00:01:31] Risk Object, допустим, Work Item, это Roar, [00:01:37] отдельно в Hazard Source, отдельно в Hazard Item, [00:01:42] отдельно в Action Item, в мировоуправлении. [00:01:48] То есть, одна и та же структура залетает в разные точки XML. [00:01:53] И поэтому, чтобы нам на нее настроиться, [00:01:56] нам нужно сначала передать родительские ID. [00:01:59] И тогда в рамках него мы уже работаем с ID, [00:02:03] так сказать, экземплярным. [00:02:06] Ладно, короче, еще раз. [00:02:09] То есть, поэтому мы не занимаемся выбором места структуры [00:02:13] в рамках базы данных. [00:02:15] То есть, считаем, что сама реализация репозитория [00:02:19] она за это отвечает. [00:02:21] То есть, у нас один репозиторий умеет работать с курсами, [00:02:27] если ему дается connection на базу данных, [00:02:31] то он однозначно может работать с курсами. [00:02:34] И все, что ему нужно дальше, это датченик объект, три параметра. [00:02:42] Вот, теперь посмотрим, как в риспрофе сделаны эти параметры. [00:02:46] Они сделаны очень просто. [00:02:48] Обратите внимание, что любой запрос на любую сущность [00:02:53] сопровождается вершиной ID. [00:02:56] То есть, это выбор документа, [00:03:02] выбор корневой сущности, [00:03:04] которая в нашем случае в риспрофе объединена с базой данных. [00:03:10] То есть, один проект, один файл. [00:03:14] Поэтому мы все запросы сопровождаем вершиной ID. [00:03:18] И при этом мы не сопровождаем их где-то на уровне connection string. [00:03:25] Мы сопровождаем их просто на уровне фильтров. [00:03:29] Вот. [00:03:34] Поэтому, вот, давай теперь обсуждаем, как все это дело разложить. [00:03:38] Вот, вернемся к organization. [00:03:40] Давай посмотрим два про две простых сущности. [00:03:43] Organization и курса. [00:03:46] То есть, organization может быть много. [00:03:49] В рамках одного organization может быть много курсов. [00:03:52] Вот мы можем это хранить все по отдельным файликам. [00:03:57] Все organization вместе. [00:04:00] Дальше, например, все курсы в рамках отдельного organization вместе. [00:04:06] Потом все курсы вообще вместе. [00:04:11] То есть, все organization вместе и все курсы разных organization вместе. [00:04:15] Это самый плохой вариант. [00:04:16] Но, тем не менее, технически он возможно. [00:04:19] Вот. [00:04:20] Он идет в разрез со стратегией разделяя backup по organization. [00:04:28] Но, тем не менее, вот. [00:04:29] И вообще все вместе organization и ее курсы вместе. [00:04:33] А, давайте на реченистые рассмотрим. [00:04:35] Organization отдельно, все курсы отдельно. [00:04:39] Organization отдельно. [00:04:41] Курсы по organization, по конкретному organization, [00:04:45] внутри файла с самой организацией. [00:04:49] Это второй вариант. [00:04:50] И третий вариант. [00:04:52] Все organization и все курсы в одном файле. [00:04:58] Это надо зафиксировать.