Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Update и реализация таблиц с наследванием / 5 сообщений из 5, страница 1 из 1
06.03.2009, 12:27
    #35855596
JackGamer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update и реализация таблиц с наследванием
Есть примерно такая структура таблиц:
Doc1: ID, Name
Doc2: ID,Name
Doc: ID, DocKind, DocID

Journal: DocID

Есть два вида документов Doc1 и Doc2, но мне нужно ссылаться на них из одного места, например, журнала документв. Я сделал промежуточную таблицу Doc, которая ссылается на Doc1 или на Doc2, в зависимости от DocKind. Ну, а из журанала я ужу могу спокойно ссылаться на Doc не думая о типе документов.

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

Но самая большая проблема для меня появилась при обновлении. ID у Doc1 и Doc2 - автоинкременты. Но как при обновлении сделать, чтобы у таблицы Doc появились нужные DocID, ведь ForeignKey я не могу сделать и они так и останутся отрицательные, а в Doc1 и Doc2 поменяются на новые значения? Может есть какой механизм в ADO.NET для этого?
...
Рейтинг: 0 / 0
06.03.2009, 12:53
    #35855706
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update и реализация таблиц с наследванием
У тебя все наоборот.Doc - супертип и у него ID должен быть PK, identity.Doc1,Doc2 - подтипы, у них ID - PK,FK на Doc
...
Рейтинг: 0 / 0
06.03.2009, 12:57
    #35855714
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update и реализация таблиц с наследванием
Выше вариант для общего случая.Если типов только два, то возможен и твой вариант,но ID у Doc1 - нечетные, а Doc2 - четные.В этом случае можно обойтись и без DocType или сделать его вычисляемым полем
...
Рейтинг: 0 / 0
06.03.2009, 13:12
    #35855787
JackGamer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update и реализация таблиц с наследванием
Спасибо. Идею понял.
...
Рейтинг: 0 / 0
06.03.2009, 13:20
    #35855812
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update и реализация таблиц с наследванием
Если вся эта петрушка из-за Name, то лучше наследования не делать совсем.Второй вариант + Name в каждой таблице + View.Не усложняй себе жизнь
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Update и реализация таблиц с наследванием / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]