|
|
|
Обеспечение целостности в нескольких таблицах
|
|||
|---|---|---|---|
|
#18+
Вот такая структура. DataType(ID, Name, BaseUnitID) Unit(ID, Value, BaseUnitID) BaseUnit(BaseUnitID) DataType, Unit связаны внешними ключами с BaseUnit. Между собой относятся как многие-ко-многим. Мы можем построить вьюху (DataTypeID, UnitID), которая определяет допустимые сочетания типов данных и единиц измерения. Очень бы хотелось построить внешний ключ на табличке Main(..., DataTypeID, UnitID), ссылающийся на такую вьюху, но нельзя. Или как-то все-таки можно? (SQL Server 2005). Или есть другой способ обеспечить подобную целостность без триггеров? ------------------------------------------------------- Отладка есть процесс избавления программы от лажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 09:06 |
|
||
|
Обеспечение целостности в нескольких таблицах
|
|||
|---|---|---|---|
|
#18+
Можно за счет избыточности в Main. Main(..., DataTypeID, UnitID, BaseUnitID) ФК1 (DataTypeID, BaseUnitID) ссылается на DataType ФК2 (UnitID, BaseUnitID) ссылается на Unit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 13:13 |
|
||
|
Обеспечение целостности в нескольких таблицах
|
|||
|---|---|---|---|
|
#18+
RealMaksimusОчень бы хотелось построить внешний ключ на табличке Main(..., DataTypeID, UnitID), ссылающийся на такую вьюху, но нельзя. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 13:15 |
|
||
|
Обеспечение целостности в нескольких таблицах
|
|||
|---|---|---|---|
|
#18+
Так-то да... Мысли определенно сходятся :) Спасибо. Но я уж лучше тригерров, поддерживающих целостность понавешу, чем избыточность вводить буду. Тем более, что это я про одну табличку MainData написал. На самом деле сладкая парочка DataTypeID, UnitID по всей базе расползлась. И во всех таблицах добавлять избыточное поле. (Почему не сделать тогда суррогатный ключ на пару DataTypeID, UnitID? Потому что это лишний join в паре самых узких мест). ------------------------------------------------------ Отладка есть процесс избавления программы от лажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2006, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=131&tid=1544978]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 342ms |

| 0 / 0 |
