Я думаю, вы хотите что-то вроде этого
create table dbo.[Credit Card] (
CreditCardNumber varchar(50) not null,
other columns ...
constraint PK_CreditCardNumber primary key (CreditCardNumber),
constraint FK_CreditCard_Card foreign key (CreditCardNumber) references Card(CardID)
)
Это будет работать, только если столбец CardID
в таблице Card
имеет то же определение, что и столбец CreditCardNumber
в таблице Credit Card
Просто глядя на имена, это может быть не так?
В большинстве случаев лучше использовать поле дискриминатора и только одну таблицу.
Например
create table dbo.Card (
CardNumber varchar(50) not null,
CardType char(1) not null check (CardType in ('C', 'D')),
CreditCardColumn1 varchar(50) null,
CreditCardColumn2 varchar(50) null,
DebitCardColumn1 varchar(50) null,
constraint PK_CardNumber primary key (CardNumber),
)
Проверочное ограничение обеспечит сохранение в этом столбце только C
или D
.
Обе колонки для кредитной карты и дебетовой карты должны быть помещены в эту таблицу.
Запрашиваемый вами запрос должен быть разным для каждого типа, таблица всегда будет одинаковой
Теперь, когда вам нужны все кредитные карты, просто наберите
select c.CardNumber,
c.CardType,
c.CreditCardColumn1,
c.CreditCardColumn2
from dbo.Card c
where CardType = 'C'
и для всех дебетовых карт просто сделайте
select c.CardNumber,
c.CardType,
c.DebitCardColumn1
from dbo.Card c
where CardType = 'D'