Зенд_Дб. Должен ли я вручную устанавливать первичный и внешний ключ при построении таблицы БД?

Когда я читал J.Gilmore Zend Book (раздел «Модели»):

class Game extends Zend_Db_Table_Abstract
{
 protected $_primary='id'; //line 4
}

[..]Line 4 identifies the table's primary key.By default the framework will 
presume the primary key is an automatically incrementing integer named id,so 
this line is not necessary [..]

У меня есть вопрос:

  • Нужно ли мне вручную устанавливать первичный и внешний ключ при создании таблицы (например, в phpmyadmin с чем-то вроде «ПЕРВИЧНЫЙ КЛЮЧ (id), FOREIGN KEY (post) REFERENCES users (id) ON DELETE CASCADE»)?
  • Или я могу обрабатывать отношения между таблицами и природу полей, просто обращаясь к коду Zend, используя $_primary, $_dependentTable, $_referenceMap и так далее?

Благодарность

Лука


person luca    schedule 20.05.2011    source источник


Ответы (2)


Оба. Хотя вам может сойти с рук ORM, работающая с отношениями, база данных обеспечивает соблюдение этих отношений на низком уровне. Всегда позволяйте базе данных выполнять свою работу в максимально возможной степени, она создана для обработки отношений и предотвращения повреждения данных. Что делать, если в вашей ORM есть ошибка?

В качестве связанного примера, скажем, у вас есть поле, объявленное как int в базе данных, вы как разработчик несете ответственность за использование int в своих запросах, но база данных применяет это правило на более низком уровне, защищая ваши данные в случае, если вы не.

person stefgosselin    schedule 20.05.2011
comment
+1 за оба. Если возможно, используйте оба для безопасности и целостности. - person emeraldhieu; 20.05.2011

Вы должны правильно определить первичные/уникальные ключи и любые другие индексы при создании таблицы.

После того, как вы это сделаете, в 99% случаев Zend_Db поймет, что происходит, поскольку сможет прочитать метаданные таблицы и получить из них первичный ключ.

person James C    schedule 20.05.2011