|
|
|
Update и реализация таблиц с наследванием
|
|||
|---|---|---|---|
|
#18+
Есть примерно такая структура таблиц: 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 для этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2009, 12:27 |
|
||
|
Update и реализация таблиц с наследванием
|
|||
|---|---|---|---|
|
#18+
У тебя все наоборот.Doc - супертип и у него ID должен быть PK, identity.Doc1,Doc2 - подтипы, у них ID - PK,FK на Doc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2009, 12:53 |
|
||
|
Update и реализация таблиц с наследванием
|
|||
|---|---|---|---|
|
#18+
Выше вариант для общего случая.Если типов только два, то возможен и твой вариант,но ID у Doc1 - нечетные, а Doc2 - четные.В этом случае можно обойтись и без DocType или сделать его вычисляемым полем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2009, 12:57 |
|
||
|
Update и реализация таблиц с наследванием
|
|||
|---|---|---|---|
|
#18+
Спасибо. Идею понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2009, 13:12 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=73&tid=1351914]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 381ms |

| 0 / 0 |
