Имя: Пароль:
1C
 
Как устроено пустое значение внутри базы данных SQL?
,
0 Nuobu
 
26.12.16
13:39
Всем доброе утро.
Помогите, пожалуйста, разобраться с 1С. Это не для работы, а так - для лучшего понимания.
1С - реляционная база данных. Если она реляционная, то пустых значений в связанных таблицах быть не может.
Собственно сам вопрос:
Есть документ, например, Реализация. В Реализации есть Контрагент и ДоговорКонтрагента. Эти два поля связаны с таблицами Контрагенты и ДоговорыКонтрагентов.
Когда я записываю документ с пустыми значениями, то какие значения записываются в эти поля?
1 Cool_Profi
 
26.12.16
13:40
{00000-*}
в общем - пустой гуид
2 Nuobu
 
26.12.16
13:42
(1) Ясно, спасибо.
3 Живой Ископаемый
 
26.12.16
13:57
а еще можно записать неопределено
4 Nuobu
 
26.12.16
13:59
(3) Как? Какое это значение в скуле?
5 Nuobu
 
26.12.16
13:59
И еще вопрос - как работает скуль при непосредственном удалении, когда остаются ссылки?
6 Cool_Profi
 
26.12.16
14:00
(5) Хорошо работает. Как ему сказали, так он и работает.
7 Nuobu
 
26.12.16
14:01
(6) А разве он не должен удалять все связанные записи?
8 Cool_Profi
 
26.12.16
14:02
(7) Кому должен? Ты вообще схему 1сной БД в скуле открывал? Найди там хоть одну связку...
9 Nuobu
 
26.12.16
14:02
(8) То есть она - не реляционная?
10 Cool_Profi
 
26.12.16
14:03
(9) Нет. Это 1с не создаёт внешних ключей. 1с сама это разруливает.
А насчёт реляионности - это, так сказать, превращение лужи обыкновенной в лужу газированную
11 Nuobu
 
26.12.16
14:04
(10) То есть реляционность поддерживается самой 1С?
12 Cool_Profi
 
26.12.16
14:04
(11) Бинго!
13 Nuobu
 
26.12.16
14:06
(12) Спасибо.
Тогда еще такой вопрос - что такое Неопределено в понимании скуля?
14 Живой Ископаемый
 
26.12.16
14:06
2(9) а что такое по-твоему реляционная?
реляция - это отношение, как один объект относится к другому. Никаких обязательств на каскадное удаление не накладывает.
Это вопрос консистэнси (согласованности данных), а не самого движка БД.
15 Cool_Profi
 
26.12.16
14:07
(13) Скуль вяло разводит руками. Ибо в БД такое не пишется...
16 Shurjk
 
26.12.16
14:10
Похоже все знающие люди только в политических ветках сидят, в тематических как я погляжу все весело.
17 Nuobu
 
26.12.16
14:11
(14) Реляционная - я имел ввиду в понимании скульного сервера.
Я сейчас ужу базы данных - обычные - MySQL. И мне стало интересно, как оно устроено в кишках 1С. И я вот увидел, что там есть каскадное удаление, запрет на удаление, подстановка НУЛЛ. А тут получается, что 1С, при создании базы данных отключает реляционность в скуле.
По вопросу консистенции - понятно. Я хотел больше узнать про движок.
18 France
 
26.12.16
14:11
(11) база либо реляционная, либо нет.. 1С - предметно-ориентированная платформа со своим форматом базы..
19 Nuobu
 
26.12.16
14:11
(16) Они уже всё узнали.
Тут только те, кто учится.
20 Cool_Profi
 
26.12.16
14:17
(17) "1С, при создании базы данных отключает реляционность в скуле. "

Она не отключает. Она не включает.

Расскажи нам, какие теломдвижения ты делаешь, чтобы мыскль у тебя удалял каскадно. И мы вместе посмеёмся
21 Nuobu
 
26.12.16
14:22
(20) On delete cascade
Но это в обычной базе, не в 1С-ной.
22 Cool_Profi
 
26.12.16
14:24
(21) Во. То есть есть ты ей сам говоришь, что нужно делать.
А вот 1с ленивая. Она лучше сама сделает всё.
Ибо она поддерживает 4 СУБД. И в каждой из них такое нужно делать по-своему.
Проще удалить из программы, чем доверять серверу.
23 Вафель
 
26.12.16
14:25
если тип составной, то 2 колонки: тип и ссылка.
если тип заполнен, а ссылка - пустой гуид - это пустая ссылка.
А если тип - путосй гуид - это неопредлено.
А если реквизит не доступен для группы, то тогда NULL
24 Живой Ископаемый
 
26.12.16
14:28
(17) То о чем ты говоришь. Это не реляционность.
Это способы обеспечения согласованности данных по какием-то правилам.