Member 10192073 Ответов: 1

Как я могу дать внешний ключ для нескольких столбцов


Привет, мне нужна помощь,на этот раз я только учусь
У меня есть столик Счет-фактура
который имеет поля
InvoiceNo
Сумма счета
Invoice_Date
обменный курс

а второй стол-это Чек
который имеет поля
ReceiptNo
ReceiptAmount
Receipt_Date
InvoiceNo
InvoiceDate
обменный курс

Теперь то, что мне нужно сделать, вот предположим, что я создал Счет-фактура стол

create table Invoice
(
InvoiceNo varchar(15) not null,
InvoiceAmount money not null,
invoiceDate date not null,
ExchangeRate Money not null,
constraint pk_invoice primary key(InvoiceNo),
constraint uk_inv unique (InvoiceNo, InvoiceAmount)
)


Что я уже пробовал:

Я просто пытаюсь создать две таблицы счет и квитанция
Я создал таблицу счетов-фактур, но в таблице квитанций мне нужны ссылки на
InvoiceNo, InvoiceDate так как я могу давать ссылки, когда нам нужно давать ссылки на несколько столбцов.

пожалуйста, помогите мне
мне нужна помощь в том, как я могу дать ссылки на внешние ключи для нескольких столбцов.

Herman<T>.Instance

Чем отличается счет-фактура->Invoice_date от квитанции - >InvoiceDate. Мне это кажется излишним.

Member 10192073

как же, сэр,
в квитанции должна быть ссылка из таблицы счетов-фактур.
вот почему у меня возникли трудности

0x01AA

И зачем вам нужен внешний ключ (InvoiceNo, InvoiceDate)для получения?
InvoiceNo должно быть достаточно.

BTW: уникальное ограничение в счете-фактуре "ограничение uk_inv unique (InvoiceNo, InvoiceAmount)" не имеет смысла, потому что InvoiceNo вы определили как первичный и поэтому у вас может быть только один InvoiceNo, независимый от InvoiceAmount

Member 10192073

не могли бы вы дать мне идею для моего следующего вопроса(следующий пост), пожалуйста

Member 10192073

это задача, поставленная моим старшим, теперь мне нужно ее спроектировать.хорошо, предположим, что вы правы для уникального ограничения в счете-фактуре "ограничение uk_inv unique (InvoiceNo, InvoiceAmount)" не имеет смысла.
но invoiceNo и invoicedate он хочет видеть в таблице квитанций также в качестве ссылок.нужно ли для этого проектировать более двух таблиц

0x01AA

Также InvoiceNo и InvoiceDate не имеют смысла.

Но чтобы дать ответ/идею на ваш вопрос "Как я могу дать внешний ключ на нескольких столбцах":
Внешний ключ для нескольких столбцов также нуждается в первичном ключе с одинаковым количеством и типом столбцов.

Напр.

Создать таблицу сведения калорифер tbla(
А1,
А2,
Ограничение PK_TBLA первичный ключ (A1, A2),
)

Создать таблицу TblB(
А1,
А2,
КАССОВЫЙ ТЕРМИНАЛ,
Ограничение PK_TBLB первичный ключ (A1, A2, POS),
Внешний ключ FK_TblB_TblA ограничения (А1, А2) список литературы сведения калорифер tbla (А1, А2)
)


Я надеюсь, что в нем не будет много опечаток :)

W∴ Balboos, GHB

Я не хочу быть грубым, но после проверки вашей истории вопросов и ответов может показаться, что вы почти ничего не знаете о SQL.

1. Почему ваш "старший" дает вам работу, для которой у вас нет опыта? Если этот проект для клиента, я очень рад, что я не их.

2-Если ваш "старший" является инструктором, вы должны копаться в интернете в поисках учебников по использованию SQL. Вы не научитесь, если мы дадим вам ответы. Обучение очень сильно связано с борьбой.

1 Ответов

Рейтинг:
11

Vignesh Mani

CREATE TABLE MyReferencingTable AS (
   [COLUMN DEFINITIONS]
   refcol1 INT NOT NULL,
   rofcol2 INT NOT NULL,
   CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES OtherTable(col1, col2)
)