Difference between revisions of "RU/kb/00000354"

From Wiki
Jump to navigationJump to search
(мелкие уточнения и стилистические поправки)
(заменил список на таблицу для наглядности)
Line 21: Line 21:
 
Между DML описанием таблицы и настройками элементов формы {{OOo}} существует следующая связь<ref>Проверено на встроенной HSQLDB</ref>:
 
Между DML описанием таблицы и настройками элементов формы {{OOo}} существует следующая связь<ref>Проверено на встроенной HSQLDB</ref>:
  
* Если в DML '''не''' указано NOT NULL, то в форме настройки игнорируются. Сохранять NULL-значения можно свободно.
+
{| class="prettytable"
 +
! DML,
 +
NOT NULL
 +
! Форма,  
 +
"требуется ввод данных"
 +
! Результат попытки сохранить NULL значение в БД
  
* Если в DML указано NOT NULL, то при "требуется ввод данных - '''да'''" и попытках записать пустое значение выводится локализованное предупреждение ООо. Т.е. проверка идет на стороне клиента.
+
|-
 +
| align="center"| не указано
 +
| align="center"| любое значение
 +
| Значение сохраняется.
 +
Настройки формы игнорируются.
 +
 
 +
|-
 +
| align="center"| указано
 +
| align="center"| да
 +
| Значение не сохраняется. Выводится локализованное предупреждение ООо.  
 +
Т.е. срабатывает ограничение на стороне клиента.
 +
 
 +
|-
 +
| align="center"| указано
 +
| align="center"| нет
 +
| Значение не сохраняется. Выводится предупреждение SQL-движка.
 +
Т.е. срабатывает ограничение на стороне сервера.
 +
 
 +
|}
  
* Если в DML указано NOT NULL, то при "требуется ввод данных - '''нет'''" и попытках записать пустое значение выводится ошибка SQL-движка. Т.е. проверка идет на стороне сервера.
 
 
<section end=answer/>
 
<section end=answer/>
  

Revision as of 20:17, 4 July 2010

Base. Формы


Template:RU/documentation/needsrework


В реляционных базах данных (RDBMS) поддерживается контроль целостности данных на уровне описания структуры таблиц (DML). В том числе, можно указать, какие поля не должны содержать неопределённые (NULL) значения[1]. Проверка этих условий осуществляется средствами самой RDBMS и не зависит от способа добавления/изменения данных (через форму, командную строку или файл сценария).

Однако, в ряде случаев, лучше проводить дополнительную проверку на стороне клиента, до отправки запроса к SQL-серверу.[2] [3]


В формах OpenOffice.org у многих элементов управления (текстовые поля, поля форматированного ввода и других) в Свойствах элемента на закладке Данные есть пара свойств:

  • "пустая строка - NULL" да/нет,
  • "требуется ввод данных" да/нет.

Если первое свойство выставлено в значение "да", то активируется второе.

Между DML описанием таблицы и настройками элементов формы OpenOffice.org существует следующая связь[4]:

DML,

NOT NULL

Форма,

"требуется ввод данных"

Результат попытки сохранить NULL значение в БД
не указано любое значение Значение сохраняется.

Настройки формы игнорируются.

указано да Значение не сохраняется. Выводится локализованное предупреждение ООо.

Т.е. срабатывает ограничение на стороне клиента.

указано нет Значение не сохраняется. Выводится предупреждение SQL-движка.

Т.е. срабатывает ограничение на стороне сервера.



Индекс: Base


Template:RU/documentation/signyear


Template:KbBaseBottom

  1. Не следует путать неопределённое значение (NULL) и такие как пустая строка (""), ЛОЖЬ (FALSE) или ноль (0)
  2. Хотя по умолчанию, данные и формы для доступа к ним хранятся в одном файле odb, всё равно имеет место клиент-серверная архитектура. Запросы, Формы и Отчёты - это клиентская сторона (интерфейс), которая посредством SQL-запросов общается с HSQLDB-сервером. А он уже осуществляет все низкоуровневые операции чтения/записи в двоичные файлы данных.
  3. Проверка на стороне клиента добавляет некоторые возможности, но не заменяет корректное DML-описание таблиц!
  4. Проверено на встроенной HSQLDB