Реляционная Active Record (перевод)

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Реляционная Active Record (перевод)

Сообщение andy_s »

Начну сразу с цитаты:
Отношение между двумя AR-классами напрямую зависит от отношений между соответствующими таблицами базы данных. С точки зрения БД, отношение между таблицами A и В может быть трех типов: один-ко-многим (например, tbl_user и tbl_post), один-к-одному (например, tbl_user и tbl_profile) и многие-ко-многим (например, tbl_category и tbl_post). В AR существует четыре типа отношений:
Называть связи между таблицами "отношениями" неправильно, т.к. сама таблица и есть отношение: Отношение_(реляционная_модель)

В оригинальной документации употребляется термин "relationship", но не "relation", хотя наличие в ActiveRecord метода relations() несколько сбивает с толку.

Я знаю, что есть много людей, которые привыкли в своей речи использовать понятия "отношение" и "связь" (говоря о реляционных БД) как синонимы, однако в официальной документации подобных вольностей допускать всё-таки не следует.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение samdark »

Ох уж эти ранние укрепившиеся переводы… Можно, конечно, заменить везде не связи. Ничего особо не потеряется.


Если уж совсем академически писать документацию, можно ещё кортежи и атрибуты всегда использовать вместо строк и полей, хотя это, по-моему, слишком.
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Реляционная Active Record (перевод)

Сообщение andy_s »

Может быть на меня сильно повлияли преподаватели моего университета несколько лет назад, которые за выражения "отношения между таблицами" (особенно если ранее в тексте отношениями таблицы и называли), "данная база данных" и т.п. чуть ли не палками били (хотя я их в этом полностью поддерживаю), но я за то, чтобы люди, которые только начинают изучать фреймворк на примере Yii, умели грамотно выражаться :)

Я не настаиваю на немедленном переписывании гайда, по большому счету мне уже всё равно, что там написано, мой друг теперь API, но раз уж я завёл эту тему, то вот еще одна фраза с этой же страницы: "Реляционный запрос без получения связанных моделей". Если модели связаны, значит логичнее говорить, что между ними установлены связи, а не отношения, и это уже не "академическая" придирка :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение samdark »

Поправлю вечерком. Аргументы весомые.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение Ekstazi »

Ого! Во как, интересно.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение Ekstazi »

Почитал википедию, в данном контексте логичней звучит Таблица-отношение блаблабла связана с таблицой трулала посредством правила .... .
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Реляционная Active Record (перевод)

Сообщение esche »

По этой причине модель и называется реляционной (от лат. relatio — отношение, связь).
:mrgreen:
Да и по-русски отношение ближе к связи [родственные связи, отношения между родственниками], чем к таблице.. Ох и путаница начнётся..
...
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Реляционная Active Record (перевод)

Сообщение andy_s »

esche писал(а):
По этой причине модель и называется реляционной (от лат. relatio — отношение, связь).
:mrgreen:
Да и по-русски отношение ближе к связи [родственные связи, отношения между родственниками], чем к таблице.. Ох и путаница начнётся..
Никто никого не заставляет называть таблицы отношениями, ибо в этом случае путаница действительно начнётся :) "Установить связи между отношениями" для рядового форумчанина будет звучать по меньшей мере непривычно :D
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Реляционная Active Record (перевод)

Сообщение esche »

Быть может, всех устроит "компромиссный" вариант - добавление примечания вроде "Строго говоря, в реляционной алгебре термин отношение определяется как множество кортежей... соответствует набору данных, т.е. таблице. Однако, {в силу ранних укрепившихся переводов|во избежание путаницы при использовании метода relations и советов-рекомендаций на форуме|для большего сходства с ненаучными понятиями}..."
...
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение samdark »

Поправил во всей документации отношения на связи. Вроде получилось лучше, чем было. Спасибо. Если есть время, прошу проверить:

http://code.google.com/p/yiidoc/source/detail?r=2328
Аватара пользователя
andy_s
Сообщения: 127
Зарегистрирован: 2012.01.22, 13:15

Re: Реляционная Active Record (перевод)

Сообщение andy_s »

Некоторые замечания и комментарии (не в том порядке, в котором выстроены файлы в списке):

start.design.txt
Диаграмма сущность-связь (ER) звучит теперь намного лучше, именно так она и называется в русском варианте.

prototype.summary.txt
"определяются [связи]" лучше заменить на "устанавливаются связи"

changes.txt
"Теперь возможно передать параметры именованной группе условий связи" - вообще не понятно, что имеется в виду. Но это не очень важно, до этого было еще хуже :D

post.display.txt
"необходимость получения связи `commentCount`, описанного в `Post::relations()`"

post.model.txt
"метод `relations()`: задаёт связи со другими объектами." => "метод `relations()`: устанавливает связи между классами."
"Связь `commentCount` является особенным, так как возвращает результат"

database.arr.txt
"Для использования реляционной AR рекомендуется, чтобы все ограничения связи ..." - полностью непонятное предложение. Лучше заменить на "... рекомендуется установить ограничения внешних ключей в БД ..." (справочное руководство MySQL).

"Связи для данного случая определяются следующим образом:" => "Связи в данном случае определяются следующим образом:"

Замечания в целом:
- Мне не очень нравится употребление выражений "Объявление связи/связей". По-моему, лучше звучит "Установка связей [между AR классами]".
- Во многих местах не хватает запятых, а где-то наоборот лишние. Я думаю, что многие не обращают на это внимания, но я мог бы найти в будущем время, чтобы исправить ситуацию (если это кому-нибудь нужно :D).
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение samdark »

Могу добавить в проект yiidoc. Так проще будет… без посредников.
Jampire
Сообщения: 207
Зарегистрирован: 2011.01.28, 11:45
Откуда: Гомель
Контактная информация:

Re: Реляционная Active Record (перевод)

Сообщение Jampire »

Правильно ли определена связь для примера "HAS_ONE through":

Код: Выделить всё

'address'=>array(self::HAS_ONE,'Address',array('id'=>'profile_id'),'through'=>'profile'),
В руководстве сказано, что первый ключ, определённый в связи, на которую указывает through. На картинке это user_id, но не id.
Изображение
Человек, говорящий, что это невозможно сделать, не должен мешать тому, кто это делает.
Ответить