Учитывая следующую схему базы данных (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
. В идеале я хотел бы, чтобы функция именования говорила сама за себя, и чтобы не было никакой двусмысленности вообще. Я бы также хотел, чтобы между именами функций и именами таблиц схемы существовала тесная связь ради согласованности.
Некоторые вопросы, о которых я хотел бы услышать некоторые информированные мнения:
- Могу ли я изменить либо имена таблиц, либо имена функций (или оба?) Для устранения этой потенциальной неоднозначности? Или не может быть никакой двусмысленности вообще?
- Можно ли смешивать формы единственного и множественного числа в именах таблиц в этом сценарии?
Я довольно новичок в проектировании баз данных. Если я полностью пропустил лучший подход, пожалуйста, дайте мне знать. Заранее благодарю за то, что поделились своими мыслями!