Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
В SQL Server Management Studio создаю две таблицы - А и Б. В А делаю ПК "Аа", в Б - внешний ключ "Ба". В Б создаю соответствующее отношение. Ещё в Б для ВК "Ба" делаю ограничение на уникальность через диалоговое окно "Indexes/Keys" (Type = Unique Key). Всё. Теперь отображаю на классы СиШарп с помощью Entity Data Model, а мне генератор в картинке показывает, что отношение "один ко многим" (единичка и звёздочка), где "много" - со стороны ВК.

Что я делаю не так?
10 авг 11, 13:01    [11097099]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Уникальный ключ на форинкей повесьте.
10 авг 11, 13:01    [11097105]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
А то, что вам Entity Data Model рисует - так это проблема Entity Data Model.
10 авг 11, 13:02    [11097114]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
Гавриленко Сергей Алексеевич
Уникальный ключ на форинкей повесьте.

Я так и сделал. Точнее, уникальность устанавливается, когда ставишь тип Unique Key. Ещё поигрался с галочкой "Include Foreign Key Columns In the Model" при выборе объектов БД, которые хочу отобразить - результат тот же.

Не может же Entity Data Model иметь такой позорный баг при отрисовке? А как ещё тогда проверить, что правильно установилось отношение, в тех же классах Entity Data Model?
10 авг 11, 13:15    [11097246]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
user7320
Не может же Entity Data Model иметь такой позорный баг при отрисовке? А как ещё тогда проверить, что правильно установилось отношение, в тех же классах Entity Data Model?
Про Entity Data Model надо в форуме по C# спрашивать.
10 авг 11, 13:17    [11097263]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
А, ещё вот что, в А первичный ключ - RowGUID типа uniqueidentifier. Т. е. внешний ключ в таблице Б - того же типа.

У меня тут получилось (подсказали), как сделать, чтобы отображалось "1 к 1", но для этого пришлось убрать RowGUID из первичного ключа таблицы А и в отношении в таблице Б указать внешним ключём её первичный ключ... Чушь какая-то, однако с такими установками всё получилось. Но где логика?
10 авг 11, 14:01    [11097732]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
А щас вроде сделал так, как в первом посте, и тоже получилось 1 к 1.

...Блин, все эти глючные GUI! Нахрен - лучше криптами на Transact-SQL всё делать!.. Только я его не знаю (
10 авг 11, 14:07    [11097807]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
О, новая хрень - когда диаграмму создаёшь в SSMS, то показывает 1 к 1, а когда в Entities, то 1 ко многим.

О_о
10 авг 11, 14:15    [11097906]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
Не буду начинать новую тему. Вобщем, я создал отношение 1:1 (именно так, а не 1:0..1) - в таблице-потомке создал FK, ссылающийся на PK в таблице-предке. Добавил уникальность для FK. Однако, что теперь меня остановит от того, чтобы при вставке в потомка в его FK вставить не значение PK предка, а любое значение вообще, лишь бы оно было уникальным? Насколько я понял, все эти PK-FK работает при операциях обновления-удаления (чтобы задавать правила каскадности и пр.), а при вставках никаких гарантий равенства значений этих ключей СУБД не даёт, если ограничиться только средствами, что я описал. Нужно что-то ещё?
29 авг 13, 15:04    [14771342]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
user7320,

попробовать вставть уникальное значение в FK которого нет в PK
29 авг 13, 15:06    [14771358]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
user7320
Насколько я понял, все эти PK-FK работает при операциях обновления-удаления (чтобы задавать правила каскадности и пр.), а при вставках никаких гарантий равенства значений этих ключей СУБД не даёт, если ограничиться только средствами, что я описал

Вы укажит истчоник информации, из которого вы это поняли ?

Сообщение было отредактировано: 29 авг 13, 15:12
29 авг 13, 15:12    [14771395]     Ответить | Цитировать Сообщить модератору
 Re: Как создать отношение один к одному через GUI SSMS - MS SQL Server 2008  [new]
user7320
Member

Откуда:
Сообщений: 3543
Всё понял, я ошибся - надо было просто попробовать. Для несуществующего PK записи не ставляются. )))
2 сен 13, 11:17    [14783049]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить