Здравствуйте, Ocenochka, Вы писали:
O> А в базе тоже хранить в одной таблице?
А почему нет.
O> Если да, то я вижу несколько проблем:
Пока я вижу такую проблему, что ты ТЗ знаешь, но мне его не говоришь.

Поэтому в ответах мне придётся прибегать к боевой телепатии.
O> 1. Для получения всех "утвержденных документов" нужно проверять что документ не был исключен после включения, при этом запрос к БД усложняется до хранимой процедуры либо если хотим логику в коде, то придется доставать всю таблицу и на клиенте с ней работать.
По мне это всего-лишь поле типа один бит, т.е.
SELECT * FROM document WHERE approved = true
O> 2. Если в "утвержденном документе" есть ссылки и свойства, которых нет в "проекте документа", то сущности уже не так похожи. А если 30% свойств будет отличаться? А если 50%? Тут вроде как здравый смысл рулит, но он у каждого свой. Вот интересно кто что по этому поводу думает.
Здравый смысл говорит, что сначала появляется проект, потом он обрастает свойствами, потом его обсуждают и в конце концов утверждают, а когда утвердили, то уже добавлять/убирать нельзя, только исполнять. Не может проект документа отличаться от самого себя, но наполнение его в моменты времени между началом проекта и утверждением может быть разным.
O> 3. В одной таблице не получится поставить констрейнты на данные (не критично, но все же)
Это замечание моя боевая телепатия не осилила.

... << RSDN@Home 1.2.0 alpha 5 rev. 1536>> SQL Express 2008 R2