2016-08-16 2 views
-2

У меня есть база данных, изображение ниже, и я чувствую, что должен быть эффективный способ добавления отдельных книг для каждого ребенка. Например ... в базе данных может быть 50 клабберов. Каждый клаббер будет в своей книге и сделать его простым, каждая книга имеет 10 секций, которые должен заполнить клаббер. Я подумывал создать таблицу для каждого ребенка с 10 разделами, но в моей базе данных было бы более 50 таблиц. Я также думал о создании таблицы, называемой книгой, и просто наличие этой таблицы содержит 10 разделов, но проблема с этим - каждый ребенок может быть в одной из 8 разных книг. Так что одна таблица, называемая книгой, тоже не сработает.Каков наилучший/правильный способ настройки моей базы данных

Есть ли у кого-нибудь хорошее предложение о том, как установить это в базе данных? Моя конечная цель - связать каждого ребенка с одной из 8 доступных книг. Затем база данных будет отслеживать, в какой секции находится каждый ребенок для своей определенной книги. Итак ... сегодня клуббер А мог закончить секцию 1 и 2 в книге 1, но клуббер B мог только закончить раздел 1 в книге 2. Я хочу извлечь эту информацию из базы данных, чтобы увидеть, где каждый клаббер находится в своих книгах. .. но ... Сначала мне нужно правильно настроить базу данных.

Должен ли я создавать 8 отдельных таблиц для каждой из книг и иметь данные таблицы в разделе 1 ... раздел 2 ...? Или я должен создать одну таблицу и перечислить 8 книг в ней, а затем связать ее с другой таблицей, в которой есть информация раздела? Или есть еще лучший способ?

Спасибо за любую помощь ![mydatabase

+0

Лучше всего прочитать [кучу статей] (http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561) об этой теме , и изучать процессы и то, для чего каждый используется, а не просто получать ответ от того, что кто-то другой считает лучшим для вашего сайта. Проведите некоторое исследование различных структур таблиц и отношений и посмотрите, какие имена выделяются как полезные структуры, а затем исследуйте эти имена, чтобы получить руководства о том, как их реализовать и поддерживать. – Martin

+0

Clubber: Тот, кто [часто посещает ночные клубы] (http: // www .thefreedictionary.com/клаббер). Книжный ночной клуб. 'Bangin''. Буквально. – Martin

ответ

1

Вам нужен стол для книг и стол для разделов. разделы будут содержать book_id, чтобы он знал, в какой книге он входит. Затем вы связываете своих детей с разделами, где section_id показывает, в каком разделе они находятся. Запрос, присоединяющийся к книгам, покажет вам, в какой книге был частью.

Если дети могут одновременно читать несколько книг, вам понадобится промежуточная таблица, которая логически находится между ними, содержащими как идентификатор ребенка, так и идентификатор раздела, поэтому несколько книг могут быть связаны с тем же ребенок.

+0

Это именно то, о чем я просил! Спасибо! Я искал много форумов и изображений в Интернете в течение недели, прежде чем задавать этот глупый вопрос. Я слишком зациклился на идее увязывания детей с книгами, но привязка их к разделам работает отлично! Это даже решение других проблем, с которыми я сталкивался! Еще раз спасибо! –

+0

Нет проблем. Это довольно стандартный дизайн, основанный на принципах «нормализации» в реляционных базах данных - вероятно, хорошая тема для изучения, если вы застряли с такими вещами в будущем :-) – ADyson

0

Вы можете добавить промежуточную таблицу child_parent, который id_child и id_parent из таблицы ребенка и таблицы родителя в каждой строке, так что вы в конечном итоге с п-п отношения между ребенком и родителем.

+0

дают, что у детей часто есть несколько родителей (!), Это полезное предложение само по себе, но ОП спрашивал о том, как представлять, какую книгу читал ребенок, и в каком разделе они были. – ADyson

Смежные вопросы