Zend_Db. Нужно ли вручную устанавливать первичный и внешний ключ при создании таблицы БД? - PullRequest
0 голосов
/ 20 мая 2011

Когда я читаю книгу Дж. Гилмора Зенда (раздел Модели):

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 что-то вроде «PRIMARY KEY (id)», «FOREIGN KEY (post)» Ссылки на пользователей (id) НА УДАЛЕННОМ КАСКАДЕ ")?
  • Или я могу обрабатывать связи таблиц и природу полей, просто обращаясь к коду Zend, используя $ _primary, $ _ variableTable, $ _ referenceMap и т. Д.?

спасибо

Luca

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

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

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

1 голос
/ 20 мая 2011

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

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

...