У меня есть две таблицы:
create table [dbo].[Main]
(
[ID] [int] identity(1,1) primary key not null,
[No] [int] not null,
[Sign] [char](1) not null
)
create table [dbo].[Names]
(
[ID_Main][int] primary key not null,
[Name][nvarchar](128) not null,
constraint [FK_Main_Users] foreign key ([ID_Main]) references [dbo].[Main]([ID]),
constraint [CK_Name] unique ([Name], [Sign])
)
Проблема со вторым ограничением CK_Name
Есть ли способ сделать целевой столбец ограничения из внешней таблицы?
РЕДАКТИРОВАТЬ:
Объяснение. Я использую эти таблицы в приложении Silverlight с помощью EntityFramework. Сущности создаются таблицей для каждого типа наследования, поэтому код выглядит примерно так:
public abstract class Main
{
// main properties
}
public class Names : Main
{
// names properties
}
Это заставляет меня не использовать представления sql.
Пример данных.
--------------------------------------------- | Main | Names | --------------------------------------------- | ID | Sign | No | ID_Main | Name | --------------------------------------------- | 1 | A | 1 | 1 | 'qwe' | | 2 | B | 1 | 2 | 'qwe' | | 3 | B | 1 | 3 | 'qwe' | | 4 | C | 1 | 4 | 'qwe' | | 5 | A | 2 | 5 | 'asd' | | 6 | B | 2 | 6 | 'asd' | | 7 | B | 2 | 7 | 'asd' | | 8 | C | 2 | 8 | 'asd' |
Как видите, есть несколько строк с одинаковым именем, но с разным знаком. Не может быть неуникального Имени с одним и тем же Знаком.
Я хотел бы обеспечить, чтобы было только одно имя со знаком = A и только одно имя со знаком C, но много имен со знаком = B
[Name, ID_Main]
и дополнительные уникальные по[Sign]
в[Main]
таблице? - person LukLed   schedule 13.06.2010Main
иNames
? Учитывая образец вывода, таблицаNames
выглядит как средняя таблица, за исключением того, чтоID_Main
является PK, поэтому на самом деле она применяется как отношение 1: 1. По каким правилам определяется, что один знак может иметь только одно имя, а другой знак может иметь несколько имен? - person Thomas   schedule 13.06.2010