Имя: Пароль:
1C
 
Почему не сделали сущность (например справочник)?
0 Lama12
 
25.08.25
10:53
Вопрос больше теоретический: почему так часто поступают, а не только в контексте 1С?

В конфигурации ДО (3.0) много связей через поля «Идентификатор», в которых хранится GUID. Можно было бы создать справочник, где эти идентификаторы были бы элементами без имени. Почему так не сделали?

Реляционные базы данных обычно не хранят связи внутри себя. Логика взаимосвязей передаётся алгоритмам.

Почему так делают? В чём преимущество?

Единственное, что приходит в голову касательно 1С, — это упрощение работы с полями составного типа. Вместо множества типов данных используется один — GUID, а остальное решает алгоритм. Для СУБД это проще. Но почему в реляционных СУБД редко хранят связи?
1 Ненавижу 1С
 
гуру
25.08.25
10:58
>>Реляционные базы данных обычно не хранят связи внутри себя

Это очень смелое утверждение, требующее аргументации
2 shuhard
 
25.08.25
10:58
(0)[Реляционные базы данных обычно не хранят связи внутри себя.]
100% бред, реляционные базы созданы именно для этого
3 d4rkmesa
 
25.08.25
11:02
(0) Скорее всего, это вызвано тем, что определенный функционал ДО 3 должен работать через Api в системе, в которую интегрируется БИД (ERP, например, или ЗУП КОРП, или УХ).
4 Garykom
 
гуру
25.08.25
11:03
(0) А зачем лишняя сущность?
Когда достаточно хранить УИД, причем из другой базы 1С
5 Lama12
 
25.08.25
11:15
(1) (2) Покажите схему связей таблиц в базе данных информационной базы 1С. Где эта информация хранится в базе данных на уровне СУБД?
Много вы видели прикладных баз данных, которые есть в реляционных СУБД, и чтоб на уровне механизмов СУБД хранились связи? Даже Microsoft это не делает.
6 Lama12
 
25.08.25
11:15
(4) (3) А вот это интересные варианты. 👍
7 Ненавижу 1С
 
гуру
25.08.25
11:26
(5) 1С использует СУБД без связей, но это не значит, что связи (FOREIGN KEY) не используются в других системах. А откуда информация, что не используются в майкрософт?
8 Lama12
 
25.08.25
11:26
(7) Разгребал таблички SharePoint и Project server.
9 shuhard
 
25.08.25
11:33
(5)[Много вы видели прикладных баз данных, которые есть в реляционных СУБД, и чтоб на уровне механизмов СУБД хранились связи?]
десятки, включая тиражные приложения
10 Kongo2019
 
25.08.25
11:37
(0) Обход работы с полями составного типа для реализации бесшовной интеграции с другими продуктами. Где-то на вебинаре мне запомнилось, смотрел на тему что нового в ДО 3, там кто-то это вопрос задавал.
11 Lama12
 
25.08.25
11:42
(9) Ну что ж. У нас разный опыт. Тут спорить не буду. Мне такие базы редко встречались, но надо признать встречались.
(10) 👍
12 Chai Nic
 
25.08.25
11:48
Использование синтетического первичного ключа для таблицы - так себе. На курсе "теория субд" за это двойки ставили. Но это позволяет легко создавать базы, без серьезной аналитической предварительной работы по построению моделей данных и нормальных форм.
13 scanduta
 
25.08.25
12:07
(0) "Реляционные базы данных обычно не хранят связи внутри себя. Логика взаимосвязей передаётся алгоритмам."

Да что ты чёрт побери такое несешь
14 Garykom
 
гуру
25.08.25
12:17
(13) Он как бы правильно сказал
Но не совсем, забыл про внешние ключи
В самих таблицах никаких связей нет, там просто ключи (идентификаторы)
К какой таблице или таблицам относится ключ хз
Для этого служит дополнительная сущность, которая по истории реляционных СУБД появилась сильно позже (когда на практике столкнулись что надо где-то хранить), причем в теории никак не фигурирует
Т.е. связи это внешняя и дополненная сущность
15 Garykom
 
гуру
25.08.25
12:20
(14)+ Кстати индексы - это тоже внешняя дополнительная хрень, к теории реляционных баз никак не относится
Как например и кэш в wiki:Архитектура_фон_Неймана
16 Asmody
 
25.08.25
12:22
[Реляционные базы данных обычно не хранят связи внутри себя] - а что ты имеешь ввиду под "реляционной базой"?
Только набор табличек сам по себе или их же с "обвязкой" в лице СУБД?

Так-то, в теории, слово "relation" и есть "связь", собственно, поэтому они "реляционные".
17 Asmody
 
25.08.25
12:23
(14) Как раз в теории со связями всё хорошо. На практике бывает по-разному
18 Garykom
 
гуру
25.08.25
12:24
(17) Да сама теория подразумевает связи
Но их поначалу не хранили а подразумевали в алгоритмах
19 VladZ
 
25.08.25
12:24
(0) Ничего не понял, но проблема видимо актуальная. :)
20 Garykom
 
гуру
25.08.25
12:32
(18)+ Кстати в языке SQL это сохранилось как рудимент
Любое соединение всегда требует указать по чему соединяем
Даже если есть внешние ключи для некой связи таблиц
21 Fragster
 
гуру
25.08.25
12:44
(20) ну так связей может быть больше одной к сущностям одного типа. типа контрагент грузоотправитель, покупатель и грузополучатель. ну и продавец еще.
22 Lama12
 
25.08.25
12:46
(16) Да, не однозначно выразил свою мысль. Тут больше "обвязка" с СУБД.
23 Garykom
 
гуру
25.08.25
13:06
(21) Может
Речь о том, что связи (внешние ключи), могут быть не прописаны в базе.
Если этого не требуется для каскадного удаления и т.д.
На работу SQL запросов это никак не повлияет.

Т.е. выделение внутренних или внешних ключей это дополнительная фича.
Ну там проверка на дубли в случае внутренних ключей и ускорение (индексы автоматом создаются для ключа простого/составного).
Или цепные действия и т.д. в случае внешних ключей.
24 Chai Nic
 
25.08.25
14:04
Вспомните теорию СУБД и нормальные формы. Введение уникального идентификатора строки хоть в виде УИДа, хоть в виде автоинкремента, вместо нормализации базы - это по сути читерство, облегчающее разработку, но делающее базу неоптимальной с точки зрения выборки данных. А 1с вся на этом и держится, по сути. В теории реляционных баз данных нет никаких "ссылок", это ересь.
25 Ботаник Гарден Меран
 
25.08.25
14:13
(24)
Теорию-то придумывали яйцеголовые, и думали, что и пользоваться будут тоже такие же.
А потом наступило широкое применение и практика - критерий истины.
26 Garykom
 
гуру
25.08.25
16:57
(24) Так понятие «ссылка» — это просто составной ключ по сути.
Где одно поле ссылается на таблицу, а второе — уникальный ID в этой таблице.
В итоге удобно, что по ссылке сразу понятно, что это.
Не надо еще отдельно хранить связи.
27 Chai Nic
 
25.08.25
16:57
(26) Да это понятно, что из себя представляет ссылка. Суть в том, что она не имеет предметного содержания. Это чисто синтетический ключ записи в таблице. А по науке строить базу надо без синтетических ключей, с использованием только ключей в виде полей данных.
28 Garykom
 
гуру
25.08.25
17:13
(27) не для всех данных на практике выходит без синтетических ключей
даже банальный id аля счетчик по сути синтетический
и без них никак
например возьмем для примера табличку стран мира или валют
да вроде как есть уже ключи в виде данных аля код страны или код валюты
но использовать их низзя для ссылок - ибо периодичность может помешать, может быть тот же код а суть другая (был код, затем отменили и снова добавили его же с другим значением)
или изменение кода без изменения сути, тут удобно что id тот же и ссылки не поменялись
29 Волшебник
 
25.08.25
19:51
(28) а ещё бывает 2 кода у одного по сути элемента, например, рубль РФ имеет код 643 и 810. Последний является устаревшим с точки зрения классификатора, но он остается в банковских и платежных документах до сих пор.
30 palsergeich
 
25.08.25
17:36
(29) Легаси оно везде)
31 craxx
 
25.08.25
17:58
(29) 810 это рубль до деноминации 1998 года, ЕМНИП
32 Сергиус
 
25.08.25
18:41
(0)[Можно было бы создать справочник, где эти идентификаторы были бы элементами без имени. Почему так не сделали?]

Лишние связи и соединения будут. ИМХО, на больших объемах будет больше ресурсов требовать.
33 Волшебник
 
25.08.25
19:51
(31) Так планировалось, но код 810 остается в банковских и платежных документах до сих пор.
34 Злопчинский
 
25.08.25
22:03
(0) если логика связей передается алгоритмам, то это уже не БД, а СУБД.
.
надеемся, что Субэдэй не перевернулся там где он лежит..