I want to convert ERD schema to relational schema. I wrote some commands, but some of them do not work.
When I try to execute this command:
CREATE TABLE Egzemplarz_papierowy(
id_egzemplarza INTEGER NOT NULL,
id_autora INTEGER REFERENCES Autor(id_autora),
tytuł CHAR(20) NOT NULL REFERENCES Książka(tytuł),
PRIMARY KEY(id_egzemplarza, id_autora, tytuł),
nazwa_działu CHAR(20) REFERENCES Dział(nazwa_działu),
rok_wydania INTEGER NOT NULL,
status_wypożyczenia CHAR(20) NOT NULL,
okładka CHAR(20) NULL,
liczba_stron INTEGER NOT NULL);
an error occurs: ORA-02270. I understand that it is telling me that there is a mismatch in PRIMARY KEYS, but I don't understand why, because primary keys of entity Książka are matched and I am only adding id_egzemplarza here. What should I do?
Whole code:
CREATE TABLE Autor(id_autora INTEGER PRIMARY KEY, imię CHAR(20) NOT NULL, nazwisko CHAR(20) NOT NULL);
CREATE TABLE Dział(nazwa_działu CHAR(20) PRIMARY KEY, liczba_egzemplarzy INTEGER NOT NULL, liczba_egzemplarzy_wypożyczonych INTEGER NOT NULL);
CREATE TABLE Książka(tytuł CHAR(20) NOT NULL, id_autora INTEGER REFERENCES Autor(id_autora), nazwa_działu CHAR(20) REFERENCES Dział(nazwa_działu), PRIMARY KEY(tytuł, id_autora), liczba_egzemplarzy INTEGER NOT NULL, liczba_egzemplarzy_wypożyczonych INTEGER NOT NULL);
CREATE TABLE Egzemplarz_papierowy(id_egzemplarza INTEGER NOT NULL, id_autora INTEGER REFERENCES Autor(id_autora), tytuł CHAR(20) NOT NULL REFERENCES Książka(tytuł), PRIMARY KEY(id_egzemplarza, id_autora, tytuł), nazwa_działu CHAR(20) REFERENCES Dział(nazwa_działu), rok_wydania INTEGER NOT NULL, status_wypożyczenia CHAR(20) NOT NULL, okładka CHAR(20) NULL, liczba_stron INTEGER NOT NULL);
CREATE TABLE Egzemplarz_elektroniczny(id_egzemplarza INTEGER NOT NULL, id_autora INTEGER REFERENCES Autor(id_autora), tytuł CHAR(20) NOT NULL REFERENCES Książka(tytuł), PRIMARY KEY(id_egzemplarza, id_autora, tytuł), rok_wydania INTEGER NOT NULL, status_wypożyczenia CHAR(20) NOT NULL, okładka CHAR(20) NULL, format_pliku CHAR(20) NOT NULL);
CREATE TABLE Karta_użytkownika(PESEL VARCHAR(11) PRIMARY KEY, imię CHAR(20) NOT NULL, nazwisko CHAR(20) NOT NULL, balans_konta INTEGER NOT NULL);
CREATE TABLE Należy(id_autora INTEGER REFERENCES Autor(id_autora), nazwa_działu CHAR(20) REFERENCES Dział(nazwa_działu), PRIMARY KEY(id_autora, nazwa_działu));
CREATE TABLE Wypożyczenie_papierowy(data_wypożyczenia DATE NOT NULL, id_autora REFERENCES Autor(id_autora), tytuł REFERENCES Książka(tytuł), id_egzemplarza REFERENCES Egzemplarz_papierowy(id_egzemplarza), pesel REFERENCES Karta_użytkownika(PESEL), PRIMARY KEY(data_wypożyczenia, id_autora, tytuł, pesel), rzeczywista_data_zwrotu DATE, deadline_daty_zwrotu DATE, status_wypożyczenia CHAR(20));
CREATE TABLE Wypożyczenie_elektroniczny(data_wypożyczenia DATE NOT NULL, id_autora REFERENCES Autor(id_autora), tytuł REFERENCES Książka(tytuł), id_egzemplarza REFERENCES Egzemplarz_elektroniczny(id_egzemplarza), pesel REFERENCES Karta_użytkownika(PESEL), PRIMARY KEY(data_wypożyczenia, id_autora, tytuł, pesel), rzeczywista_data_zwrotu DATE, deadline_daty_zwrotu DATE, status_wypożyczenia CHAR(20));