структура таблицы для поддержки нескольких попыток ввода в один столбец

#mysql #sql #database-design #foreign-keys #create-table

#mysql #sql #database-design #внешние ключи #создать таблицу

Вопрос:

Я создаю базу данных для отслеживания фотосессий для компании, занимающейся фотографией домашних животных.

Я построил три таблицы: клиентскую таблицу со всей связанной информацией о клиенте, таблицу домашних животных для отслеживания нескольких домашних животных для каждого клиента.

Последняя таблица — это то, где у меня возникают проблемы. В нем будет запись для каждой фотосессии. У фотосессии будет один клиент, но может быть несколько домашних животных, и не все домашние животные могут принадлежать клиенту.

Как я могу структурировать таблицу, чтобы учесть это?

Комментарии:

1. Имейте 4-ю таблицу, которая представляет собой сопоставление «многие ко многим» между pet и photo_session .

2. Спасибо, Рик. Это именно то, что я сделаю.

Ответ №1:

Я бы рекомендовал две таблицы: одну для хранения фотографий, а другую для отношений «многие ко многим» между домашними животными и фотографиями.

 -- you already have these two tables
create table clients (
    id int primary key,
    ...
);
create table pets (
    id int primary key,
    client_id int references clients(id),
    ...
);

-- create those
create table photo_sessions (
    id int primary key,
    client_id int references clients(id),
    ...
);
create table photo_sessions_pets (
    id int primary key,
    photo_session_id int references photo_session(id),
    pet_id int references pet(id)
);