id_dog
, name_dog
вместо объединённого поля.
cost
, status_order
зависят от id_ord
.
poroda
зависит от id_por
, а не от category
.
Пример:
Категория | Порода | Кличка | Окрас | Возраст | Стоимость | Дата продажи | Статус доставки | Клиент
Проблемы:
CREATE TABLE category (
id_cat INT PRIMARY KEY,
category VARCHAR(80) NOT NULL
);
CREATE TABLE poroda (
id_por INT PRIMARY KEY,
poroda VARCHAR(80) NOT NULL,
id_cat INT NOT NULL,
FOREIGN KEY (id_cat) REFERENCES category(id_cat)
);
-- Категории
CREATE TABLE category (
id_cat INT PRIMARY KEY,
category VARCHAR(80) NOT NULL
);
-- Породы
CREATE TABLE poroda (
id_por INT PRIMARY KEY,
poroda VARCHAR(80) NOT NULL,
id_cat INT NOT NULL,
FOREIGN KEY (id_cat) REFERENCES category(id_cat)
);
-- Категории
INSERT INTO category (id_cat, category) VALUES
(1, 'Собака'),
(2, 'Кошка'),
(3, 'Птица');
-- Породы
INSERT INTO poroda (id_por, poroda, id_cat) VALUES
(1, 'Лабрадор', 1),
(2, 'Овчарка', 1),
(3, 'Такса', 1),
(4, 'Персидская', 2),
(5, 'Британская', 2),
(6, 'Попугай', 3),
(7, 'Канарейка', 3);
Ошибка | Решение |
---|---|
Отсутствие первичного ключа | Добавьте PRIMARY KEY |
Несовпадение типов в связях | Проверьте типы данных (например, id_por должен быть INT везде) |
Транзитивная зависимость | Разделите таблицы (category , poroda , dog ) |