вторник, 2 августа 2022 г.

Про пространство

Пространство - такое же абстрактное понятие, как время, и обязано своим существованием нашему способу познания (моделирования) мира.

Несомненно, что размеры одних физических объектов выражаются через размеры других физических объектов. Кто помнит советский мультик, где удав оказался длиной 38 попугаев?

Привычный нам "метр" когда-то был определен как одна сорокамиллионная часть длины меридиана Земли. Можно считать, что измеряя размеры и расстояния метрами, мы измеряем их относительно размеров Земли. Аналогично, морская миля – это расстояние, соответствующее одной минуте (одной шестидесятой части градуса) на земном меридиане. А такие исторические меры, как "локоть", "сажень", "фут" (ступня) происходят от размеров, связанных с человеческим телом. А "астрономическая единица" есть расстояние между Землей и Солнцем.

суббота, 9 июля 2022 г.

Какого ограничения целостности не хватает в SQL

Константного - когда значение в столбце, присвоенное insert'ом, нельзя изменить update'ом.

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

Можно, конечно, создать триггер для update, который запретит изменение, если новое значение такого столбца отличается от старого.

четверг, 26 мая 2022 г.

Периодические таблицы (не химия)

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

В связи с этим при вставке или изменении записи нужно проверять, не приведет ли эта операция к появлению в таблице записей с пересекающимися периодами.

суббота, 2 января 2021 г.

ЛМНты Python, 96 - 100

>>> Декартово произведение

Декартово произведение последовательностей или множеств можно получить с помощью спискового включения или множественного включения. Например:

>>> [(x, y) for x in (1, 2) for y in (-2, -1)]
[(1, -2), (1, -1), (2, -2), (2, -1)]
>>>
>>> {(x, y) for x in {1, 2} for y in {-2, -1}}
{(1, -1), (2, -2), (1, -2), (2, -1)}

В модуле itertools имеется функция product для получения декартовых произведений. Получим тот же результат с ее помощью.

вторник, 1 декабря 2020 г.

ЛМНты Python, 91 - 95

>>> Две или больше, the Python way

Чтобы перебрать все элементы последовательности, делается цикл по элементам последовательности:

>>> letters = ['a', 'b', 'c']
>>> for x in letters:
...     pass
...

Если нужно параллельно перебирать элементы нескольких последовательностей, то прибегают к индексированию:

>>> numbers = [1, 2, 3]
>>> for i in range(len(letters)):
...     letter = letters[i]
...     number = numbers[i]
...