Как ПУСТЫЕ УКАЗАТЕЛИ сохранены в базе данных?

Из документации Laravel

Вы можете ограничить формат параметров вашего маршрута, используя метод where для экземпляра маршрута. Метод where принимает имя параметра и регулярное выражение, определяющее способ ограничения параметра:

blockquote>
Route::get('challenges/{id}', function ($id) {
    //
})->where('id', '[0-9]+');

Теперь только числовые значения будут приниматься в качестве параметра id. [115 ]

10
задан Jakub Hampl 30 April 2012 в 23:08
поделиться

5 ответов

На PostgreSQL это использует дополнительный битовый массив с одним битом для каждого столбца (0, является пустым, 1 не является пустым). Если битовый массив не присутствует, все столбцы не являются пустыми.

Это является абсолютно отдельным от устройства хранения данных самих данных, но находится на той же странице как строка (таким образом, и строка и битовый массив читаются вместе).

Ссылки:

3
ответ дан 3 December 2019 в 22:02
поделиться

Сервер обычно использует метаинформацию, а не волшебное значение. Таким образом, существует немного от где-нибудь, который указывает, является ли поле пустым.

- Adam

2
ответ дан 3 December 2019 в 22:02
поделиться

MySql использует второй метод. Это хранит массив битов (одно для каждого столбца) с данными для каждой строки для указания, какие столбцы являются пустыми, и затем оставляет данные для того полевого пробела. Я вполне уверен, это верно для всех других баз данных также.

Проблема с первым методом, действительно ли Вы уверены, что безотносительно значения, которое Вы выбираете для своих данных, не обнаружится как допустимые данные? Для некоторых значений (как даты или числа с плавающей точкой) это верно. Для других (как целые числа) это - ложь.

9
ответ дан 3 December 2019 в 22:02
поделиться

IBM Informix, на которую Динамический Сервер использует специальные значения для указания, аннулирует. Например, допустимый диапазон значений для SMALLINT (16-разрядный, подписанный)-32767.. +32767. Другое значение,-32768, резервируется для указания на ПУСТОЙ УКАЗАТЕЛЬ. Так же для ЦЕЛОГО ЧИСЛА (4 байта, подписанные) и BIGINT (8 байтов, подписанных). Для других типов это использует другие специальные представления (например, все биты 1 для ПЛАВАНИЯ SQL и SMALLFLOAT - иначе C дважды и плавания, соответственно). Это означает, что не должно использовать дополнительное пространство.

IBM DB2 для Linux, Unix, Windows использует дополнительные байты для хранения нуль-индикаторов; AFAIK, это использует отдельный байт для каждого nullable поля, но я мог быть неправ в той детали.

Так, как был указан, механизмы отличаются в зависимости от DBMS.

1
ответ дан 3 December 2019 в 22:02
поделиться

Проблема со специальными значениями для указания на ПУСТОЙ УКАЗАТЕЛЬ состоит в том, что рано или поздно, что специальное значение будет вставлено. Например, это будет вставлено в таблицу, указывающую специальные Нуль-индикаторы для различных серверов баз данных

| DBServer     | SpecialValue |
+--------------+--------------+
| 'Oracle'     | 'Glyph'      |
| 'SQL Server' | 'Redmond'    |

;-)

1
ответ дан 3 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: