Как создать базу данных с историей изменений?

Я являюсь частью команды по созданию новой системы управления контентом для нашего общедоступного сайта. Я пытаюсь найти самый простой и лучший способ встроить механизм управления редакциями. Объектная модель довольно базовая. У нас есть абстрактный класс «BaseArticle», который включает свойства для независимых от версии/метаданных, таких как «Heading» & «CreityBy». Некоторые классы наследуют от этого, например, DocumentArticle, который имеет свойство «URL», которое будет путем к файлу. «WebArticle» также наследует от «BaseArticle» и включает свойство «MureInfo» и коллекцию объектов «Tabs», которые включают в себя «Body», который будет содержать отображаемый HTML (объекты Tab не являются производными ни от чего). «NewsArticle» и «JobArticle» наследуют от «WebArticle». У нас есть другие производные классы, но они дают достаточно примера.

Мы придумали два подхода к сохранению контроля за редакцией. Я называю их «Approach1» и «Approach2.» Я использовал SQL Server, чтобы сделать базовую схему каждой из них: Database Diagram of Approach 1 Database Diagram of Approach 2

С помощью Approach1 план состоит в том, чтобы новые версии статей сохранялись через обновление базы данных. Будет установлен триггер для обновлений и будут вставлены старые данные в таблицу xxx_Versions. Я думаю, что триггер нужно настроить на каждом столе. Этот подход имеет то преимущество, что единственная «головная» версия каждой статьи хранится в основных таблицах, со старыми версиями.

При Approach2 план предусматривает включение в базу данных новых вариантов статей. Главный вариант статей будет определен на основе мнений. Это, по-видимому, имеет преимущество, заключающееся в меньшем количестве таблиц и меньшем количестве кода (например, без триггеров).

Обратите внимание, что при обоих подходах план будет заключаться в вызове хранимой процедуры Upsert для таблицы, сопоставленной с соответствующим объектом (мы должны помнить о необходимости обработки случая добавления новой статьи). Эта восходящая хранимая процедура вызовет это для класса, из которого она исходит, например, upsert_NewsArticle вызовет upsert_WebArticle и т.д.

Мы используем SQL Server 2005, хотя я думаю, что этот вопрос не зависит от аромата базы данных. Я проделал обширное траление интернета и нашел ссылки на оба подхода. Но я не нашел ничего, что бы сравнивало их и показывало, что они лучше. Я думаю, что со всеми книгами баз данных в мире этот выбор подходов, должно быть, возник раньше.

Мой вопрос: какой из этих подходов является лучшим и почему?

-121--897055- Devise - создать учетную запись пользователя с подтвержденным без отправки электронного письма? Я интегрировал разработку с Facebook.Теперь, когда я создаю учетную запись пользователя после того, как пользователь вошел в свою учетную запись Facebook, пользователь = User.create (: email = > data [«email»],:...

Я интегрировал разработку с Facebook. Теперь, когда я создаю учетную запись пользователя после того, как пользователь вошел в свою учетную запись Facebook,

  user = User.create(:email => data["email"], 
                     :password => Devise.friendly_token[0,20]) 
  user.confirmed_at = DateTime.now
  user.save!

даже несмотря на то, что учетная запись была подтверждена, электронное письмо с подтверждением все еще отправляется. Есть идеи, как я могу выключить электронную почту?

59
задан disappearedng 19 September 2011 в 00:47
поделиться