|
|
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
Добрый день. Извините за возможно вопрос "для чайников". Ситуация такая должна встречатся очень часто у людей. Пишу под ADO.NET 2.0 (SQL Server 2005) Есть таблица сотрудников, в которой они все перечислены. Есть таблица приказов, в которой говорится "кто, кому и что приказывает". Таблица Coworkers id (primary key), name, ... Таблица Orders. id (primary key), idPersonOrderGiver (foreign key to People[id]), idPersonOrderTaker (foreign key to People[id]), orderText. Т.е. у нас два foreign key на одну и ту же таблицу и в ней на один и тот же столбик. Почему-то дизайнер DataSet в Visual Studio 2005 не поддерживает такой расклад (пишет что на один и тот же столбец ссылаться нельзя) + сам SQL Server не дает сделать два таких "заграничных" ключа, если используется какскадное удаление и обновление. Подскажите, пожалуйста, возможно ли иметь два foreign key на один и тот же столбик из одной и той же таблицы или это в принцыпе невозможно. И второе -- можно ли добавить к этим ключам каскадное удаление/обновление? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 18:34 |
|
||
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
В принципе эта ситуация возможна. В оракле поддерживается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 18:57 |
|
||
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
Snaky MafiaПодскажите, пожалуйста, возможно ли иметь два foreign key на один и тот же столбик из одной и той же таблицы или это в принцыпе невозможно. Это совершенно нормальная, рядовая ситуация. Рекорд, который был у меня - кажется, четыре таких вот "параллельных" ссылки. Snaky MafiaИ второе -- можно ли добавить к этим ключам каскадное удаление/обновление? Каких-то теоретических ограничений на этот счет не существует. Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 19:30 |
|
||
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
Snaky MafiaПодскажите, пожалуйста, возможно ли иметь два foreign key на один и тот же столбик из одной и той же таблицы или это в принцыпе невозможно. И второе -- можно ли добавить к этим ключам каскадное удаление/обновление? Спасибо два ключа иметь можно, добавить к ним обоим каскадное удаление(обновление) не получится. Тригером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 20:20 |
|
||
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
Теоретических ограничений нет. Но есть конкретные реализации. У меня была спецификация сборочных единиц на MSDE2000ReleaseA и я ссылался на справочник номенклатуры из поля СборочнаяЕдиница и ВходящаяВСборочнуюЕдиницу. Все казалось простым. И что же? Оказывается нельзя давать две ссылки на одну таблицу CASCADE UPDATE. По каким-то прчинам MSDE200ReleaseA считал этот вариант слишком сложным. Но можно было задать одно и только одно каскадное INTERGITY и любое количество STRICT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 20:21 |
|
||
|
Два foreign key на одну и ту же таблицу
|
|||
|---|---|---|---|
|
#18+
здесь посмотрите и в BOL все однозначно описано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2007, 20:23 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34995173&tid=1544147]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 479ms |

| 0 / 0 |
