Как мне организовать такую ​​базу данных в SQLite? - PullRequest
1 голос
/ 05 октября 2011

люди!Мне нужна помощь в организации базы данных для приложения, и я не знаю, как это сделать.Предположим следующее: Есть список академических предметов.Для каждого предмета нам нужен список академических групп, которые посещают этот предмет.Затем для каждой группы нам нужен список дат.И на каждую дату у нас должен быть список учеников, и присутствовал ли этот ученик в тот день или нет.Я имею в виду уродливые структуры данных, буду признателен за любую помощь.

ОБНОВЛЕНИЕ

Как мне это увидеть:

Таблица1 (первый столбец - это дата, а второй - это список учеников, которые присутствовали)1009 *

10/10/11 | id1, id2, id3

10/11/11 | id1, 1d3, id5

Таблица 2:

subject1 | id1 id2 id3

subject2 | id3 id2

И снова, идентификаторы - это идентификаторы групп.Не знаю, как соединить эти таблицы.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

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

enter image description here

В этой модели ER используется множество идентифицирующих отношений (то есть "перенос" первичного ключа родителя в PK ребенка), что приводит к естественным первичным ключам, в отличие от неидентифицирующих отношений, которые потребует использования суррогатных ключей. В наши дни многим нравятся суррогатные ключи, но правда в том, что обе стратегии дизайна имеют свои плюсы и минусы. В частности:

  • Естественные ключи больше (они «накапливают» поля на нескольких уровнях родительско-дочерних отношений).
  • Но также натуральные ключи требуют меньше СОЕДИНЕНИЯ.
  • Естественные ключи могут лучше применять ограничения в некоторых особых случаях (например, в виде ромбовидных зависимостей).
1 голос
/ 05 октября 2011

Вы создадите одну таблицу для каждого вида «вещей» (предметы, группы, студенты, встречи) в вашей базе данных. В каждой таблице будет один столбец для каждого элемента данных (части информации), который вам нужно хранить о предмете. Кроме того, должен быть один столбец или предсказуемая комбинация столбцов, которые позволят вам однозначно идентифицировать каждую вещь (строку), которую вы храните в таблице.

Затем вы решите, как вещи (предметы, группы, студенты, встречи) связаны друг с другом, и убедитесь, что у вас есть правильные столбцы в каждой таблице для хранения этих отношений. Вы обнаружите, что в некоторых случаях это можно сделать, добавив один или несколько столбцов к таблицам, которые вы уже определили. В других случаях вам нужно будет добавить совершенно новую таблицу, в которой не хранится «вещь», как таковая , а скорее взаимосвязь между двумя вещами.

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

Ответ на ваше обновление:

Вы на неправильном пути. Это плохая идея (и вопреки правильному дизайну реляционной базы данных) хранить два значения в одном поле. Таким образом, каждая из таблиц, о которых вы написали, должна иметь два столбца (как вы сказали), но второй столбец должен хранить один и только один идентификатор. Вместо одной строки в таблице 1 для 10/10/11 у вас будет три отдельные строки в таблице.

Но прежде чем вы начнете беспокоиться об «отношениях», создайте таблицы для хранения «вещей».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...