@nekolov

Верно ли я понял суть внешних ключей на примере данной БД?

Добрый вечер,
Сразу скажу что в БД я новичек.
Пробую реализовать простую базу данных 'доски объявлений' для продажи авто, пытаюсь сделать ее привести к 3й форме(если не путаю).
Выделил в отдельные таблицы.
  • фирмы машин
  • продавцов(фио, тел, итд)
  • категории авто(4x4 итд)
  • объявления(с внешними ключами на данные таблицы каждый из которых ссылается на определенное поле в своей
таблице(на марку авто))

CREATE TABLE `bmw` (
 `id` int(12) NOT NULL AUTO_INCREMENT,
  `model` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `renault` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `model` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `peugeot` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `model` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `citroen` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `model` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `category` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `category` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `seller` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `name` varchar(24) NOT NULL,
  `localization` varchar(24) NOT NULL,
  `telephone number` int NOT NULL,
  `email` varchar(24) NOT NULL,
  PRIMARY KEY (`id`)
);
CREATE TABLE `announcement` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
   bmw_id  INT NOT NULL,
   renault_id  INT NOT NULL,
   peugeot_id  INT NOT NULL,
   citroen_id  INT NOT NULL,
   creation_date DATE NOT NULL,
   km INT(6),
   price INT(12),
   descr varchar(24),
   seller_id  INT NOT NULL,
   date_ann DATE NOT NULL, 
   FOREIGN KEY (bmw_id) REFERENCES bmw(id),
   FOREIGN KEY (renault_id) REFERENCES renault(id),
   FOREIGN KEY (peugeot_id) REFERENCES peugeot(id),
   FOREIGN KEY (citroen_id) REFERENCES citroen(id),
   FOREIGN KEY (seller_id) REFERENCES seller(id),
  PRIMARY KEY (`id`)
);
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
profesor08
@profesor08
Что случится, если надо будет добавить новую марку машин? Снова создавать таблицу в бд? А может лучше сделать таблицу cars, а там будут все марки и модели разных годов выпусков, прочие параметры, например продавец.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Я бы вместо создания отдельной таблицы для каждой марки машин (BMW, Renault и т.п.) сделал бы просто таблицу cars, где была бы сразу марка и модель.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы