Здравствуйте.
Изучаю работу с БД, поэтому строго не судите ,если вопрос дилетантский :). В бд 3 таблицы:
1. id_url, external_url
2 id_url, short_url
3 (результирующая) id_shortener, dt, external_url, short_url
Столбцы external_url, short_url из 3 таблицы связаны(foreign keys) с соответствующими полями из таблиц 1,2.
Как правильно составить запрос на добавление данных в БД, чтобы введенный url (external_url) попадал в таблицу external, сокращенная ссылка в таблицу short, а также заполнялась таблица result.
Раньше все это находилось в одной таблице и запрос выглядел:
db_query('INSERT INTO short (url,short_key) VALUE (:original_link, :short_key)', [
'original_link' => $preparedLink,
'short_key' => $uniqueID
]);
Но в таком формате я ещё не писал запросы, поэтому буксую на этом моменте.
dump""-- phpMyAdmin SQL Dump
-- version 4.9.1
-- https://www.phpmyadmin.net/
--
-- Хост: localhost
-- Время создания: Окт 12 2019 г., 21:42
-- Версия сервера: 10.4.8-MariaDB
-- Версия PHP: 7.3.10
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `shortener`
--
-- --------------------------------------------------------
--
-- Структура таблицы `external`
--
CREATE TABLE `external` (
`id_external` int(11) NOT NULL,
`external` varchar(250) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `result`
--
CREATE TABLE `result` (
`id_url` int(11) NOT NULL,
`dt` timestamp NULL DEFAULT current_timestamp(),
`external` varchar(250) NOT NULL,
`short` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `short`
--
CREATE TABLE `short` (
`id_short` int(11) NOT NULL,
`short` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `external`
--
ALTER TABLE `external`
ADD PRIMARY KEY (`id_external`),
ADD UNIQUE KEY `external_external_uindex` (`external`);
--
-- Индексы таблицы `result`
--
ALTER TABLE `result`
ADD PRIMARY KEY (`id_url`),
ADD KEY `result___fk__short` (`short`),
ADD KEY `result_fk__external` (`external`);
--
-- Индексы таблицы `short`
--
ALTER TABLE `short`
ADD PRIMARY KEY (`id_short`),
ADD UNIQUE KEY `short_short_uindex` (`short`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `external`
--
ALTER TABLE `external`
MODIFY `id_external` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `result`
--
ALTER TABLE `result`
MODIFY `id_url` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `short`
--
ALTER TABLE `short`
MODIFY `id_short` int(11) NOT NULL AUTO_INCREMENT;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `result`
--
ALTER TABLE `result`
ADD CONSTRAINT `result___fk__short` FOREIGN KEY (`short`) REFERENCES `short` (`short`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `result_fk__external` FOREIGN KEY (`external`) REFERENCES `external` (`external`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;