Как избежать неоднозначного именования между моим PHP-кодом и таблицей соединений SQL? - PullRequest
0 голосов
/ 17 ноября 2018

Учитывая следующую схему базы данных (MySQL), я беспокоюсь о возможном введении неоднозначных имен в класс модели PHP 5.5, приведенный ниже (абстрагировано для простоты).

CREATE TABLE `catalog_item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `catalog_id` int(11) NOT NULL DEFAULT '0'
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `catalog_item_property` (
  `catalog_item_id` int(11) NOT NULL DEFAULT '0',
  `catalog_item_properties_id` int(11) NOT NULL DEFAULT '0'
  PRIMARY KEY (`catalog_item_id`,`catalog_item_properties_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `catalog_item_properties` (
  `id` int(11) NOT NULL AUTO_INCREMENT
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `catalog_item_properties_description` (
  `catalog_item_properties_id` int(11) NOT NULL DEFAULT '0',
  `language_id` int(11) NOT NULL DEFAULT '0'
  PRIMARY KEY (`catalog_item_properties_id`,`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Фон на схеме:

  • catalog_item содержит элементы из каталога.
  • catalog_item_property содержит все свойства, принадлежащие catalog_item.
  • catalog_item_properties содержит список всех возможных свойств элемента.
  • catalog_item_properties_description содержит многоязычное описание для всех catalog_item_properties.
  • Я следую единому соглашению об именах для всех своих таблиц.

Имена интерфейсных функций, в которых я не уверен:

public function getItemProperty($id)
{
    // Get all catalog item properties that belong to this catalog item?
}

public function getItemProperties()
{
    // Get list of all possible catalog item properties?
}

Как вы можете видеть, на моей текущей итерации getItemProperty может возвращать более одного свойства. Но так же getItemProperties. В идеале я хотел бы, чтобы функция именования говорила сама за себя, и чтобы не было никакой двусмысленности вообще. Я бы также хотел, чтобы между именами функций и именами таблиц схемы существовала тесная связь ради согласованности.

Некоторые вопросы, о которых я хотел бы услышать некоторые информированные мнения:

  • Могу ли я изменить либо имена таблиц, либо имена функций (или оба?) Для устранения этой потенциальной неоднозначности? Или не может быть никакой двусмысленности вообще?
  • Можно ли смешивать формы единственного и множественного числа в именах таблиц в этом сценарии?

Я довольно новичок в проектировании баз данных. Если я полностью пропустил лучший подход, пожалуйста, дайте мне знать. Заранее благодарю за то, что поделились своими мыслями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...