Я создаю новую таблицу, чтобы определить новые отношения между классами и блоками классов, которые являются ничем иным, как группами классов.
Вот рабочий процесс:
Пользователь имеет систему обучения и должен иметь возможность создавать блоки классов.Эти занятия происходят из списка курсов, и занятия проводятся в разное время года в разных местах.Некоторые классы могут быть индивидуальными, другие находятся в том, что мы называем блоками классов или блоками курсов.
Система нуждается в перепроектировании, потому что старая схема, в которой они не учитывали дубликаты, содержала много неверных данных.
Итак, вот что я сейчас разрабатываю -
ClassBlocks - Справочная таблица с тремя полями: ClassBlockID, Имя блока и поле isActive.Это небольшая таблица с именами ClassBlock, так как эти имена должны использоваться многократно.
Классы - таблица со всеми классами, которые либо произошли, либо произойдут.У него есть собственный ClassID, имя класса, идентификатор, соответствующий курсу, на котором основан класс, а также дата начала и окончания курса
Курсы - Справочная таблица, в которой есть все доступные курсы.
ClassBlockAssociation - новая таблица. Я разрабатываю, чтобы лучше определить отношения между классами и блоками классов.Некоторые классы индивидуальны, другие в блоках.Эта таблица обрабатывает случай, когда они находятся в блоках.Его поля будут иметь идентификатор BlockAssociation в качестве первичного ключа, classID и ClassBlockID.
В базе данных sql-сервера у меня есть эта таблица, которую я буду называть блоками со следующими полями:
BlockID (PK)
ClassID (FK with class table)
CourseID (FK with Course Table)
CourseBlockID (FK with CourseBlock Table, table which has course block names)
BlockAssociationID (Field that serve as an identifier for class blocks)
В Coldfusion у меня есть cfquery, который создает новый ClassBlock, подобный этому,
Для списка классов у меня будет такой код:
<cfloop index="i" list="#ClassesList#">
<cfquery name="insertClassBlocks">
INSERT INTO ClassBlocks(CourseBlockID, ClassID, CourseID)
VALUES(CourseBlockID, #i#, CourseID)
</cfquery>
</cfloop>
Вот что я сейчас делаю, чтобы взять созданный блок и добавить их в эту таблицу.Блоки классов могут иметь одно и то же имя, но они будут отличаться датами начала и окончания.Когда эти блоки созданы, мне нужно дать им идентификатор, который позволяет мне легко получить все классы в блоке.
Так что в настоящее время, когда я тестирую это и создаю блоки, я получаю таблицу, которая выглядит следующим образом.
BlockID | ClassID | CourseID | CourseBlockID
1 | 356 | 208 | 1
2 | 357 | 294 | 1
3 | 294 | 256 | 3
4 | 308 | 206 | 3
Это работает для большинства из того, что мне нужно сделать, проблема в том, что эта таблица может иметь несколько блоков с одним и тем же CourseBlockID.У меня может быть два блока с разными классами одновременно или в разное время, и им нужен другой уникальный идентификатор.
В приведенном выше примере мне понадобится некоторый уникальный идентификатор блока, который отображается на строки 1 и 2, и еще один, который отображается на строки 3 и 4. Этот уникальный идентификатор необходимо создать и вставить для записей вили после времени вставки в эту таблицу блоков.Я называю это BlockAssociationID, так как это ключ, используемый для связи классов с блоками.
Я не уверен в лучшем методе создания этого уникального идентификатора для блоков курса.