Я новичок в Oracle Data Modeler и пытаюсь создать диаграмму ER для гипотетической компании, в которой может быть много торговых точек (Outlet), много отделов (Department) и много сотрудников (Staff).
Я выбрал отношение 1:N
Идентификация отношения, чтобы создать составной ключ как для отдела, так и для персонала.Я решил сделать это, потому что каждый идентификатор отдела связан с идентификатором торговой точки, а сотрудники связаны с торговой точкой.
Возможно, это неправильные отношения, потому что, когда я проектирую диаграмму, а затем извлекаю код из редактора файлов DDL и запускаю его, я получаю несколько таких ошибок:
ALTER TABLE stock
ADD CONSTRAINT stock_products_fk
FOREIGN KEY ( products_product_id )
REFERENCES products ( product_id )
Ошибкаотчет
ORA-02275: such a referential constraint already exists in the table
02275.00000 - «такое ссылочное ограничение уже существует в таблице» * Причина: Самоочевидно.* Действие: удалите дополнительное ограничение.
Действие довольно простое - я должен удалить дополнительное ограничение, но это заставляет меня задаться вопросом, почему оно существует, и указывает ли это, что мой метод неверен?
Код для создания таблиц приведен ниже вместе с моей диаграммой ER.Я думаю, что отношения между таблицами вызывают проблему.Любая помощь очень ценится.Спасибо
CREATE TABLE department (
department_id VARCHAR2(20) NOT NULL,
outlet_outlet_id VARCHAR2(20) NOT NULL,
department_name VARCHAR2(30),
department_floor_area INTEGER
);
ALTER TABLE department ADD CONSTRAINT department_pk PRIMARY KEY ( outlet_outlet_id,
department_id );
CREATE TABLE outlet (
outlet_id VARCHAR2(20) NOT NULL,
outlet_address VARCHAR2(40),
outlet_phone_no INTEGER,
outlet_size INTEGER,
outlet_floor_size INTEGER
);
ALTER TABLE outlet ADD CONSTRAINT outlet_pk PRIMARY KEY ( outlet_id );
CREATE TABLE products (
product_id VARCHAR2(20) NOT NULL,
product_description VARCHAR2(30),
currently_supplied BLOB,
sales_category_sales_cat_id VARCHAR2(20) NOT NULL,
supplier_supplier_id VARCHAR2(20) NOT NULL
);
ALTER TABLE products ADD CONSTRAINT products_pk PRIMARY KEY ( product_id );
CREATE TABLE sales_category (
sales_cat_id VARCHAR2(20) NOT NULL,
sales_category_description VARCHAR2(30)
);
ALTER TABLE sales_category ADD CONSTRAINT sales_category_pk PRIMARY KEY ( sales_cat_id );
CREATE TABLE staff (
staff_id VARCHAR2(20) NOT NULL,
outlet_outlet_id VARCHAR2(20) NOT NULL,
staff_name VARCHAR2(30),
staff_phone_no INTEGER,
staff_mgmt_status BLOB
);
ALTER TABLE staff ADD CONSTRAINT staff_pk PRIMARY KEY ( outlet_outlet_id,
staff_id );
CREATE TABLE stock (
products_product_id VARCHAR2(20) NOT NULL,
stock_id VARCHAR2(20) NOT NULL,
number_of_products INTEGER,
outlet_outlet_id VARCHAR2(20) NOT NULL
);
ALTER TABLE stock ADD CONSTRAINT stock_pk PRIMARY KEY ( products_product_id,
stock_id );
CREATE TABLE supplier (
supplier_id VARCHAR2(20) NOT NULL,
supplier_name VARCHAR2(40),
supplier_address VARCHAR2(40)
);
ALTER TABLE supplier ADD CONSTRAINT supplier_pk PRIMARY KEY ( supplier_id );
ALTER TABLE department
ADD CONSTRAINT department_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE products
ADD CONSTRAINT products_sales_category_fk FOREIGN KEY ( sales_category_sales_cat_id )
REFERENCES sales_category ( sales_cat_id );
ALTER TABLE products
ADD CONSTRAINT products_supplier_fk FOREIGN KEY ( supplier_supplier_id )
REFERENCES supplier ( supplier_id );
ALTER TABLE staff
ADD CONSTRAINT staff_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE stock
ADD CONSTRAINT stock_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE stock
ADD CONSTRAINT stock_products_fk FOREIGN KEY ( products_product_id )
REFERENCES products ( product_id );
ALTER TABLE department
ADD CONSTRAINT department_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE products
ADD CONSTRAINT products_sales_category_fk FOREIGN KEY ( sales_category_sales_cat_id )
REFERENCES sales_category ( sales_cat_id );
ALTER TABLE products
ADD CONSTRAINT products_supplier_fk FOREIGN KEY ( supplier_supplier_id )
REFERENCES supplier ( supplier_id );
ALTER TABLE staff
ADD CONSTRAINT staff_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE stock
ADD CONSTRAINT stock_outlet_fk FOREIGN KEY ( outlet_outlet_id )
REFERENCES outlet ( outlet_id );
ALTER TABLE stock
ADD CONSTRAINT stock_products_fk FOREIGN KEY ( products_product_id )
REFERENCES products ( product_id );