Имя: Пароль:
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
 
гуру
26.08.25
09:57
(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) если логика связей передается алгоритмам, то это уже не БД, а СУБД.
.
надеемся, что Субэдэй не перевернулся там где он лежит..
35 Ненавижу 1С
 
гуру
26.08.25
08:22
(24) почему это нет ссылок?
FOREIGN KEY REFERENCES
36 Eiffil123
 
26.08.25
08:45
(29) это разные рубли. просто каким-то случайным образом название совпало.
37 Eiffil123
 
26.08.25
08:52
(0) а как бы 1С хранила связи в базе данных, если в ней на уровне конфигураций позволено создавать ссылки составного типа, и даже ссылки на любые таблицы и объекты?

это какой-то монстр получился бы
38 Chai Nic
 
26.08.25
09:54
(35) Это другое. Ссылка имеется в виду как универсальный синтетический ключ записи в таблице базы данных. А не естественный первичный ключ другой таблицы.
39 Волшебник
 
26.08.25
10:31
(36) Понятно. Значит в случае чего, банки вернут Ваши вклады с пересчётом.

Например, у Вас на счёте лежат 2 млн руб в валюте с кодом 810. Это старые рубли до 1998 года, до деноминации.
Чтобы в этом убедиться, зайдите в реквизиты счёта и посмотрите на номер счёта: 40702810200210000237
Цифры с шестой по восьмую информируют о валюте, в которой открыт счёт. Например, 810 — российский рубль до 1998 года (до деноминации), 840 — доллары США, 156 — китайские юани.

Если Вы хотите забрать свой вклад сегодня в современных рублях с кодом 643, то нужен пересчёт:
2 000 000 / 1 000 = 2 000

Получите, распишитесь:
40 Ненавижу 1С
 
гуру
26.08.25
11:39
(38) синтетический или естественный это абсолютно все равно. Да и вообще ссылка (внешний ключ) может быть не к первичному ключу

А давайте вы придумаете естественный ключ к справочнику ФизическиеЛица или Сотрудники.
Кстати табельный номер или номер любого документа - это вполне себе синтетические ключи.
41 Garykom
 
гуру
26.08.25
12:20
(40) Ссылка не может быть не к ключу
Точнее любая ссылка = ключ, неважно простой или составной
Если не ключ - то ссылка не уникальна, ссылается на две и более возможных записей
42 Serg_1960
 
26.08.25
12:50
[не по теме]
Справедливости ради уточню/замечу: упомянутая деноминация никакого отношения не имеет к изменению кодов валюты - при деноминации менялись только купюры и монеты, денежные знаки российской валюты.

В нумерации лицевых счетов указывается трехзначный код иностранной валюты согласно ОКВ, а в счетах для учета операций в валюте Российской Федерации - указывается признак рубля "810" (не "код валюты", а "признак рубля").
Источник: "Положение ЦБ РФ от 01.08.2022 N 803-П"
https://normativ.kontur.ru/document?moduleId=1&documentId=489573
(редакция от 21.05.2024, действует - с 01.01.2025)

PS: боюсь не всем дано заценить тонкий юмор и троллинг волшебника.
43 Ненавижу 1С
 
гуру
26.08.25
13:24
(41) ссылка может быть к столбцу, на который навешен индекс уникальности
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.