При разработке структуры базы данных для программ на XPDK рекомендуется использовать следующую систему наименований: имя таблицы состоит из двух частей – префикса, который является одинаковым для всех таблиц, относящихся к одному и тому же экземпляру сайта, и названия сущности во множественном числе на английском языке. Использование префикса (по умолчанию он будет называться prefix_) позволяет избежать конфликта имен таблиц с другими программными продуктами, которые могут использовать ту же базу данных, а также создавать несколько экземпляров сайта с использованием одной и той же базы данных без возникновения конфликтов между ними (например, один экземпляр может работать в штатном режиме, а другой – использоваться для отладки новых функций).
Важно отметить, что в названии таблицы должны использоваться только строчные буквы, так как в Unix-подобных системах заглавные и строчные буквы различаются, а в Windows – нет. При несоблюдении этого правила при переносе БД портала из под Unix в Windows, а затем обратном переносе из Windows в Linux возникнет ситуация, когда все буквы будут принудительно заменены на строчные, что приведет к необходимости ручного переименования таблиц в БД для восстановления работоспособности сайта.
При создании столбцов рекомендуется пользоваться следующим правилом для формирования их имен: имя столбца состоит из двух частей – префикса и слова, соответствующего названию свойства на английском языке, разделенных символом _ (прочерк). Префикс является одинаковым для всех столбцов в таблице (поэтому указанный выше способ именования столбцов называется префиксным). Он необходим для того, чтобы обеспечить расширяемость при программной реализации сайта: при программном формировании SQL-запросов для сохранения данных из формы в таблицу без явного указания каждого столбца в отдельности (в XPDK это реализуется с помощью функций db_insert и db_update, а также build_sql). При этом наличие префикса позволяет распределить поля по таблицам в том случае, если данные из одной формы идут в несколько таблиц сразу (например, создание новой темы на форуме: название и описание темы идут в таблицу тем, а текст сообщения - в таблицу сообщений).
Кроме полей, хранящих информацию об определенных свойствах сущностей, также в каждой из таблиц предусмотрим столбцы – числовые идентификаторы записи, который будет использоваться при редактировании записей и связывании таблиц между собой. Эти столбцы будут иметь тип INT UNSIGNED NOT NULL со свойством AUTO_INCREMENT, что позволит переложить ответственность за выборку очередного номера для записи со скриптов портала на СУБД.
Для полей, которые используются для связывания двух таблиц, следует использовать следующий порядок порядок именования. Допустим, к таблице 1, имеющей префикс t1, необходимо привязать несколько записей из таблицы 2, имеющей префикс t2. В этом случае столбец в таблице t2 добавляется столбец с именем вида «префикс таблицы 2»_«префикс таблицы 1»id, то есть t2_t1id. Такая система именования позволяет сделать связи между таблицами более наглядными, не нарушая при этом от префиксного именования столбцов, а также не приводя к созданию столбцов с одинаковыми именами, что может приводить к ошибкам неоднозначности SQL-запросов.