SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE izdatelstvo( id NUMBER PRIMARY KEY NOT NULL, -- добавлено поле id для уникальности nazvaniye_izd VARCHAR2(255) NOT NULL, pochta VARCHAR2(255) NOT NULL, nomer_telefona VARCHAR2(16) NOT NULL, sayt VARCHAR2(255), adres VARCHAR2(255) ); CREATE TABLE avtor( id NUMBER PRIMARY KEY NOT NULL, -- добавлено поле id для уникальности last_name VARCHAR2(255), first_name VARCHAR2(255), data_rozhdeniya DATE NOT NULL, zhanry VARCHAR2(255) NOT NULL, yazyk_proizvedeniy VARCHAR2(255) NULL, izdatelstvo_id NUMBER, -- добавлено поле для связи с таблицей izdatelstvo CONSTRAINT izdatelstvo_fk FOREIGN KEY (izdatelstvo_id) REFERENCES izdatelstvo(id) -- изменена ссылка на id из таблицы izdatelstvo ); CREATE TABLE kniga( kod_knigi NUMBER PRIMARY KEY NOT NULL, nazvaniye VARCHAR2(255) NOT NULL, zhanr VARCHAR2(255), data_izdaniya DATE, kolichestvo_stranits NUMBER, izdatelstvo_id NUMBER, -- добавлено поле для связи с таблицей izdatelstvo avtor_id NUMBER, -- добавлено поле для связи с таблицей avtor CONSTRAINT nazvaniye_fk FOREIGN KEY (izdatelstvo_id) REFERENCES izdatelstvo(id), -- изменена ссылка на id из таблицы izdatelstvo CONSTRAINT avtor_fk FOREIGN KEY (avtor_id) REFERENCES avtor(id) -- ссылка на id из таблицы avtor ); CREATE TABLE chitatel( nomer_chitatelsogo_bileta NUMBER PRIMARY KEY NOT NULL, last_name VARCHAR2(255) NOT NULL, first_name VARCHAR2(255) NOT NULL, data_rozhdeniya DATE NOT NULL, nomer_telefona VARCHAR2(16), -- исправлено на varchar2 adres VARCHAR2(255), -- исправлено на varchar2 kniga NUMBER NOT NULL, CONSTRAINT kniga_fk FOREIGN KEY (kniga) REFERENCES kniga(kod_knigi) ); CREATE TABLE vydacha_knigi( nomer_chitatelskogo_bileta NUMBER PRIMARY KEY NOT NULL, kod_knigi NUMBER NOT NULL, data_vydachi DATE, data_sdachi DATE, CONSTRAINT kod_knigi_fk FOREIGN KEY (kod_knigi) REFERENCES kniga(kod_knigi) ); CREATE TABLE abonement ( id NUMBER PRIMARY KEY NOT NULL, -- уникальный идентификатор абонемента nomer_chitatelsogo_bileta NUMBER NOT NULL, -- ссылка на читателя data_start DATE NOT NULL, -- дата начала абонемента data_end DATE NOT NULL, -- дата окончания абонемента tip_abonementa VARCHAR2(255) NOT NULL, -- тип абонемента (например, месячный, годовой) status VARCHAR2(50) CHECK (status IN ('активен', 'неактивен')), -- статус абонемента CONSTRAINT chitatel_fk FOREIGN KEY (nomer_chitatelsogo_bileta) REFERENCES chitatel(nomer_chitatelsogo_bileta), -- связь с таблицей chitatel CONSTRAINT valid_dates CHECK (data_end > data_start), -- проверка, что дата окончания позже даты начала CONSTRAINT unique_abonement UNIQUE (nomer_chitatelsogo_bileta, data_start) -- уникальность абонемента для одного читателя на одну дату начала ); -- 1. Удаляем внешний ключ из таблицы abonement ALTER TABLE abonement DROP CONSTRAINT chitatel_fk; -- 2. Изменяем тип данных первичного ключа в таблице chitatel ALTER TABLE chitatel MODIFY (nomer_chitatelsogo_bileta VARCHAR2(50)); -- изменяем на VARCHAR2 -- 3. Изменяем тип данных в таблице abonement, чтобы он совпадал ALTER TABLE abonement MODIFY (nomer_chitatelsogo_bileta VARCHAR2(50)); -- изменяем на VARCHAR2 -- 4. Восстанавливаем внешний ключ в таблице abonement ALTER TABLE abonement ADD CONSTRAINT chitatel_fk FOREIGN KEY (nomer_chitatelsogo_bileta) REFERENCES chitatel(nomer_chitatelsogo_bileta);

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear