Примечание: Функции, описанные в этой статье, не относятся к веб-приложениям Access и веб-базам данных Access. Дополнительные сведения о работе с веб-приложениями Access см. в статье Создание веб-приложений Access.
На имена полей, элементов управления и объектов в классических базах данных Microsoft Access налагаются указанные ниже ограничения.
- Их длина не может превышать 64 знака.
- Они могут содержать буквы, цифры, пробелы и специальные символы, кроме точки (.), восклицательного знака (!), символа ударения (`) и квадратных скобок ([ ]).
- Они не могут начинаться с пробелов.
- Они не должны содержать управляющие символы (значения ASCII от 0 до 31).
- Имена таблиц, представлений или хранимая процедура в Проект Microsoft Access, не могут содержать двойные кавычки («).
Имена полей, элементов управления и объектов могут содержать пробелы, но в примерах документации Microsoft Access они обычно не используются во избежание конфликтов имен в Microsoft Visual Basic для приложений.
Как ЛЕГКО и БЫСТРО изменить начальное значение поля счетчика Access
Называя поле, элемент управления или объект, необходимо убедиться, что не дублируется имя свойство или другого элемента, используемого приложением Microsoft Access — это может привести к непредвиденным последствия. Например, если требуется выбрать значение поля под названием «Имя» в таблице NameInfo с использованием синтаксиса NameInfo.Name, приложение Microsoft Access отобразит значение свойства таблицы Имя, а не значение поля «Имя».
Другой способ предотвратить неожиданные результаты — всегда использовать оператор ! вместо точки . при указании поля, элемента управления или объекта. Например, следующий идентификатор явно указывает на значение поля «Имя», а не на свойство Имя:
Источник: support.microsoft.com
Требования к базам данных¶
Не используйте в именах таблиц и полей зарезервированные слова MySQL.
Имена таблиц¶
- Таблицы, хранящие основные данные сущностей, именуются названием сущности в множественном числе. Для примера возьмём таблицу products , которая содержит основную информацию о товарах магазина.
- Таблицы, хранящие дополнительные данные сущностей или дочерние сущности, именуются по шаблону сущность_суффикс . Добавляемый суффикс именуется во множественном числе. Для примера, таблица, содержащая цены товаров, называется product_prices .
- Для понимания правил именования таблиц в более сложных случаях зависимостей таблиц друг от друга подойдёт такой пример:
- products — хранит основную информацию о товарах;
- product_features — хранит доступные для присвоения характеристики товаров;
- product_feature_variants — хранит доступные для присвоения варианты характеристик товаров;
- product_feature_variant_descriptions — хранит мультиязычные поля вариантов характеристик товаров для каждого языка.
C каждым следующем уровнем зависимостей таблиц во множественном числе именуется только последний суффикс.
Основные свойства полей таблицы Microsoft Access
Префикс таблиц¶
При установке системы администратор задаёт префикс, который будет использован при создании всех таблиц. Префикс по-умолчанию — cscart_ . В SQL-запросах, выполняемых из CS-Cart с помощью встроенных функций для работы с БД, выбранный префикс будет заменять собой плейсхолдер ?: . Таким образом, если вы упоминаете в SQL-запросе название таблицы, вы обязательно должны добавлять перед названием плейсхолдер ?: .
$products = db_get_array( ‘SELECT * FROM ?:products LEFT JOIN ?:product_popularity USING(product_id)’ );
Названия полей первичных ключей¶
Исторически так сложилось, что поля и первичных, и внешних ключей именуются с префиксом названия сущности. Это означает, что, например, в таблице products поле с уникальным первичным ключом будет называться product_id.
Cоветуем придерживаться этого правила при разработке модификаций CS-Cart. Даже если вы не согласны с таким правилом именования, это позволит всей кодовой базе выглядеть однотипно и однородно.
Интернационализация¶
Сущности, хранящиеся в БД, могут иметь поля, содержимое которых должно отличаться для разных языков. Например, у товаров как минимум название и описание может быть мультиязычным. Для хранения таких полей в CS-Cart используется следующий подход:
- Создаётся отдельная таблица с названием сущность_descriptions , в нашем примере это product_descriptions .
- Таблица должна содержать поле, которое будет содержать первичные ключи сущности, для которой добавляется мультиязычность. В нашем примере это поле product_id.
- Кроме того, таблица должна содержать поле, которое будет содержать код языка, для которого добавлена запись в таблицу. Обычно это поле называется lang_code и имеет тип CHAR(2) .
- Затем в таблицу добавляются поля, которые должны быть мультиязычными. В нашем примере это помимо прочих product — название товара, и full_description — подробное описание товара.
Необходимость реализации логики работы с такой таблицой ложится на PHP-код, в нашем примере она вкратце сводится к следующим пунктам:
- При создании нового товара учитывать, какой язык выбран в для редактирования в панели администратора (константа DESCR_SL ) — сохранять данные в таблицу product_descriptions со значением поля lang_code равным значению константы DESCR_SL .
- При выборке данных для отображения в клиентской части, нужно присоединять таблицу с мультиязычными данными по условию “lang_code равен выбранному пользователем языку в клиентской части (значение константы CART_LANGUAGE )”. Пример подобного SQL-запроса:
SELECT products.*, product_descriptions.* FROM products INNER JOIN product_descriptions ON product_descriptions.product_id = products.product_id AND product_descriptions.lang_code = ‘en’
Тип таблиц¶
Исторически сложилось, что для всех таблиц CS-Cart используется MyISAM. Однако ничто не мешает вам при необходимости сменить тип таблиц на InnoDB — система будет работать корректно в этом случае.
InnoDB имеет ряд преимуществ относительно MyISAM:
- внешние ограничения;
- продвинутое использование индексов в последних версиях MySQL;
- транзакции;
Из-за особенностей внутреннего устройства запросы на запись и удаление данных в InnoDB могут занимать больше времени, чем в MyISAM.
Важно: внешние ограничения, которые вы можете добавить к таблицам в случае миграции на InnoDB, могут некорректно работать с порядком выполнения запросов изменения/удаления данных в CS-Cart. Например, при удалении категории сначала удаляется запись в таблице categories , а затем все дочерние товары и подкатегории. Это может вызвать проблемы с каскадными ограничениями ссылочной целостности вида ON UPDATE CASCADE / ON DELETE CASCADE — CS-Cart на уровне PHP-кода реализует обновление и удаление связанных сущностей.
Настоятельно рекомендуем реализовывать логику каскадного обновления/удаления данных именно в PHP-коде.
Логика в СУБД¶
3.1 Имя поля
Имя для каждого из полей таблицы выбирается произвольно, но таким образом, чтобы отразить содержательную сторону информации, которая будет храниться в данном поле. Рекомендуется использовать аббревиатуры или условные обозначения.
При задании имен полей придерживаются следующих правил:
- имя поля не должно содержать более 64 символов;
- имя поля может включать буквы, цифры, пробелы и специальные символы, за исключением точки, восклицательного знака и прямых скобок;
- имя поля не может начинаться с пробела;
- имена полей в таблице должны быть уникальными.
3.2 Типы данных
Access допускает использование десяти типов данных (табл. 3.12). Для задания типа данных следует нажать кнопку раскрытия списка , расположенную в правой части поля, и выбрать из списка требуемый тип.
Текст (по умолчанию — 50 символов)
Текст произвольной длины
от 1 до 16 байт
Число, представляющее денежную сумму
Число, автоматически увеличиваемое на единицу для каждой новой записи
Логическое значение «True» или «False» (“Истина” или “Ложь”)
Поле объекта OLE
Объект OLE (рисунки и другие двоичные данные)
до 6144 символов
3.3 Свойства поля
Каждый тип данных наделен собственными свойствами, которые отображаются в разделе Свойства поля окна конструктора.
Размер поля — задает максимальный размер данных в поле;
Формат поля — задает формат отображения значений данного поля;
Число десятичных знаков — определяет для числового и денежного типов данных число знаков после запятой;
Маска ввода — задает трафарет, облегчающий ввод данных в поле;
Подпись — задает текст, который выводится в “шапках” таблиц, форм и отчетов;
Значение по умолчанию — позволяет указать значение, автоматически вводимое в поле при создании новой записи;
Условие на значение — задает ограничения на вводимые значения и позволяет осуществлять контроль ввода;
Сообщение об ошибке — задает текст сообщения, выводимый на экран при нарушении условия на значение;
Обязательное поле — указывает, требует ли поле обязательного ввода значения;
Пустые строки — определяет, допускается ли ввод в поле пустых строк (“ “);
Индексированное поле 1 — определяет индекс, создаваемый по этому полю.
Определение размера поля производится для текстовых и числовых полей. Максимально возможный размер текстового поля — 255 знаков. По умолчанию принимается 50 знаков. Свойство Размер поля для числовых полей связано с типом хранящихся числовых данных.
Можно задать использование целых чисел длиной 1, 2 и 4 байта или дробных чисел одинарной (4 байта) и двойной (8 байт) точности 2 (табл. 3.13).
Источник: studfile.net