Difference between revisions of "RU/kb/00000354"

From Wiki
Jump to navigationJump to search
(заменил список на таблицу для наглядности)
(Проверено на точность и соответствие стилю)
Line 4: Line 4:
  
  
<!-- Обязательный элемент -->{{RU/documentation/needsrework}}
+
В реляционных базах данных (RDBMS) поддерживается контроль целостности данных на уровне описания структуры таблиц (DML). В том числе, можно указать, какие поля не должны содержать неопределённые (NULL) значения<ref>Не следует путать неопределённое значение (NULL) и такие как пустая строка (""), ЛОЖЬ (FALSE) или ноль (0)</ref>. Проверка этих условий осуществляется средствами самой RDBMS и не зависит от способа добавления/изменения данных (через форму, командную строку или файл сценария).
  
<section begin=question/>
 
В реляционных базах данных (RDBMS) поддерживается контроль целостности данных на уровне описания структуры таблиц (DML). В том числе, можно указать, какие поля не должны содержать неопределённые (NULL) значения<ref>Не следует путать неопределённое значение (NULL) и такие как пустая строка (""), ЛОЖЬ (FALSE) или ноль (0)</ref>. Проверка этих условий осуществляется средствами самой RDBMS и не зависит от способа добавления/изменения данных (через форму, командную строку или файл сценария).
 
  
 
Однако, в ряде случаев, лучше проводить '''дополнительную''' проверку на стороне клиента, до отправки запроса к SQL-серверу.<ref>Хотя по умолчанию, данные и формы для доступа к ним хранятся в одном файле odb, всё равно имеет место клиент-серверная архитектура. Запросы, Формы и Отчёты - это клиентская сторона (интерфейс), которая посредством SQL-запросов общается с HSQLDB-сервером. А он уже осуществляет все низкоуровневые операции чтения/записи в двоичные файлы данных.</ref> <ref>Проверка на стороне клиента добавляет некоторые возможности, '''но не заменяет''' корректное DML-описание таблиц!</ref>
 
Однако, в ряде случаев, лучше проводить '''дополнительную''' проверку на стороне клиента, до отправки запроса к SQL-серверу.<ref>Хотя по умолчанию, данные и формы для доступа к ним хранятся в одном файле odb, всё равно имеет место клиент-серверная архитектура. Запросы, Формы и Отчёты - это клиентская сторона (интерфейс), которая посредством SQL-запросов общается с HSQLDB-сервером. А он уже осуществляет все низкоуровневые операции чтения/записи в двоичные файлы данных.</ref> <ref>Проверка на стороне клиента добавляет некоторые возможности, '''но не заменяет''' корректное DML-описание таблиц!</ref>
<section end=question/>
 
  
<section begin=answer/>
+
 
 
В формах {{OOo}} у многих элементов управления (текстовые поля, поля форматированного ввода и других) в '''Свойствах элемента''' на закладке '''Данные''' есть пара свойств:
 
В формах {{OOo}} у многих элементов управления (текстовые поля, поля форматированного ввода и других) в '''Свойствах элемента''' на закладке '''Данные''' есть пара свойств:
 
* "пустая строка - NULL" да/нет,
 
* "пустая строка - NULL" да/нет,
 
* "требуется ввод данных" да/нет.
 
* "требуется ввод данных" да/нет.
 +
  
 
Если первое свойство выставлено в значение "да", то активируется второе.
 
Если первое свойство выставлено в значение "да", то активируется второе.
 +
  
 
Между DML описанием таблицы и настройками элементов формы {{OOo}} существует следующая связь<ref>Проверено на встроенной HSQLDB</ref>:
 
Между DML описанием таблицы и настройками элементов формы {{OOo}} существует следующая связь<ref>Проверено на встроенной HSQLDB</ref>:
 +
  
 
{| class="prettytable"
 
{| class="prettytable"
Line 37: Line 37:
 
| align="center"| указано
 
| align="center"| указано
 
| align="center"| да
 
| align="center"| да
| Значение не сохраняется. Выводится локализованное предупреждение ООо.  
+
| Значение не сохраняется. Выводится локализованное предупреждение {{OOo}}.  
 
Т.е. срабатывает ограничение на стороне клиента.
 
Т.е. срабатывает ограничение на стороне клиента.
  
Line 47: Line 47:
  
 
|}
 
|}
 
<section end=answer/>
 
  
  
 
[[RU/kb/index/50|Индекс: Base]]
 
[[RU/kb/index/50|Индекс: Base]]
 
<section begin=signature/>
 
  
 
{{RU/documentation/signyear|Denis0.ru|Д. В. Черносов|2010 }}
 
{{RU/documentation/signyear|Denis0.ru|Д. В. Черносов|2010 }}
 
<section end=signature/>
 
 
 
{{KbBaseBottom}}
 
{{KbBaseBottom}}

Revision as of 20:22, 4 July 2010

Base. Формы


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


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


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

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


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


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


DML,

NOT NULL

Форма,

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

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

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

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

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

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

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


Индекс: Base

Template:RU/documentation/signyear

Template:KbBaseBottom

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