【发布时间】:2021-09-15 16:33:13
【问题描述】:
我想将 ERD 模式转换为关系模式。我写了一些命令,但其中一些不起作用。
当我尝试执行这个命令时:
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);
发生错误:ORA-02270。我知道它告诉我主键不匹配,但我不明白为什么,因为实体 Książka 的主键是匹配的,我只在此处添加 id_egzemplarza。我该怎么办?
完整代码:
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));
【问题讨论】:
标签: sql oracle schema erd relational