Problem z budową Bazy Relacyjnej

0

Witam,
Proszę o podpowiedz dot. poniżej podanego kodu.
Mianowicie nie potrafię poradzić sobie z błędami:

  1. There are no primary or candidate keys in the referenced table 'Zamowienia' that match the referencing column list in the foreign key 'FK__Faktury__Ilosc_W__440B1D61'.

2.Could not create constraint or index. See previous errors.

3.Column name or number of supplied values does not match table definition.

Z góry dziękuję za wszelką pomoc

CREATE Database Piekarnia 

GO 

USE Piekarnia; 

GO 

CREATE TABLE Wyroby( 

Id_Wyrobu INT IDENTITY(1,1) PRIMARY KEY, 

Nazwa_Wyrobu VARCHAR(60) NOT NULL, 

Cena_Wyrobu smallmoney Not NULL, 

Waga_Wyrobu FLOAT Not NULL, 

); 

GO 

CREATE TABLE Pracownicy( 

Id_Pracownika INT IDENTITY(1,1)PRIMARY KEY, 

Imie VARCHAR(60) NOT NULL, 

Nazwisko VARCHAR(60) NOT NULL, 

Telefon CHAR(12) NOT NULL, 

Stanowisko Varchar(40) NOT NULL, 

) 

GO 

CREATE TABLE Klienci( 

Id_Klienta INT IDENTITY(1,1)PRIMARY KEY,  

Imie VARCHAR(60) NOT NULL, 

Nazwisko VARCHAR(60) NOT NULL, 

Adres VARCHAR(60) NOT NULL, 

); 

GO 

CREATE TABLE Zamowienia( 

Id_Zamówienia INT IDENTITY(1,1)PRIMARY KEY,  

Id_Wyrobu INT FOREIGN KEY REFERENCES Wyroby(Id_Wyrobu) ON DELETE CASCADE ON UPDATE CASCADE,  

Id_Klienta INT FOREIGN KEY REFERENCES Klienci(Id_Klienta) ON DELETE CASCADE ON UPDATE CASCADE,  

Ilosc_Wyrobu INT, 

Data_zamowienia DATETIME Not Null default getdate(), 

);  

GO  

CREATE TABLE Faktury( 

Id_Faktury INT IDENTITY(1,1)PRIMARY KEY,  

Id_Wyrobu INT FOREIGN KEY REFERENCES Wyroby(Id_Wyrobu) ON DELETE CASCADE ON UPDATE CASCADE,

Id_Klienta INT FOREIGN KEY REFERENCES Klienci(Id_Klienta) ON DELETE CASCADE ON UPDATE CASCADE,  

Ilosc_Wyrobu INT FOREIGN KEY REFERENCES Zamowienia(Ilosc_Wyrobu) ON DELETE CASCADE ON UPDATE CASCADE,  

Cena_Wyrobu smallmoney FOREIGN KEY REFERENCES Wyroby(Cena_Wyrobu) ON DELETE CASCADE ON UPDATE CASCADE,   

); 

GO 

INSERT INTO Wyroby  VALUES ('Chleb Pszenny',1.99,1.2),   

('Chleb Wiejski',2.99,0.7),    

('Chleb Pasterski',1.49,0.8),    

('Kajzerka',0.99,0.05);   

GO    

INSERT INTO  Pracownicy VALUES ('Grzegorz','Kowalski',111222333,'Piecowy'),  

('Andrzej','Piekarski',444555666,'Pomocnik'),  

('Sylwester','Przybyła',777888999,'Kierownik');   

GO   

INSERT INTO Klienci VALUES ('Stanisław', 'Lem', 'Warszawa Kolorowa 10'), 

('Bogumił', 'Wawrzyszew', 'Warszawa Dębowa 5'), 

('Czesław', 'Mozil', 'Warszawa Klonowa 11'); 

GO 

Insert Into Zamowienia VALUES (100), 

(200), 

(300); 

 GO 
0

Dlaczego próbujesz zakładać klucz obcy na ilość wyrobu oraz jego cenę?

0

Ponieważ chce 'przepisywać' dane z tabeli.
Po wpisaniu w tabeli Zamowienia ilości wyrobu chce otrzymać tą ilość w Tabeli Faktury
Po wpisaniu w tabeli Wyroby ceny danego wyrobu chce otrzymać tą liczbę w Tabeli Faktury

0

Bo to jest głupie co chcesz zrobić....
FV może być do kilku zamówień, a ty chcesz kluczem obcym połączyć FV z zamówieniem poprzez ILOŚĆ??
Logicznie to nie ma sensu... A baza z zupełnie innego powodu się buzy... że nie ma indeksu na tym polu (być może MS SQL do klucza obcego wymaga nawet UNIQUE/PRIMARY KEY)

0

Czyli w Tabelach 1.Zamowienia 2.Faktury nie będzie żadnego FK?
Wydaję mi się, że już rozumiem..

0

Ponieważ chce 'przepisywać' dane z tabeli.

Gdzie przeczytałeś, że klucze obce służą do 'przepisywania' danych z tabel?

0

Pierwsze trzy tabele nie stanowiły jakiegoś problemu, ale Zamowienia i Faktury są już trudniejsze. Czy mogę liczyć na pomoc jak rozwiązać ten problem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0