|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
|
|
Как правильно построить таблицы преподаватель-труд26.04.2010, 22:57. Показов 2124. Ответов 4
Метки нет (Все метки)
Стоит следующая задача: нужно создать часть базы данных в которой будет храниться информация по преподавателям, что работают на кафедре и их трудам. Труды у преподавателя могут быть как выданные на кафедре так и вне ее, но должны быть все в базе. Кроме того, труд могут писать несколько преподавателей, которые как работают на кафедре, так и левые совсем. Информацию про левых хранить не надо. Сразу думал делать это все через 3 таблицы, типа как связь многое ко многим, но как сказали, что не должна хранится информация о левых преподах - все обламалось. Остается создавать поле в таблице с трудами, и туда через запятую вводить преподов. Будет ли это рационально и как потом мне делать выборки по трудам на преподов, что на кафедре работают? Подскажите пожалуйста как правильно поступить в данной ситуации.
0
|
|
| 26.04.2010, 22:57 | |
|
Ответы с готовыми решениями:
4
Как правильно построить связанные таблицы SQLite в C#? Как правильно построить ИНЕР, где данные в одну таблицу берутся из одной таблицы? Капитал воспроизводит труд или труд воспроизводит капитал, то есть во что выгодно инвестировать в капитал или в труд? |
|
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
|
|
| 27.04.2010, 00:54 | |
|
Таблица преподаватели
Таблица труды и таблица связка преподаватели к трудам. И не важно хранятся там левые преподаватели или нет. А "создавать поле в таблице с трудами, и туда через запятую вводить преподов" - это нарушение первой нормальной формы, потом проблем будет выше крыши. Просто пример: "Вывести все труды Иванова". Когда три таблицы - один запрос со связкой по внешнему ключу, когда поля через запятую - LIKE '%Иванов%' по полю, что приводит к полному сканированию таблицы (тут индексы работать не будут)
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
|
|
| 28.04.2010, 21:58 [ТС] | |
|
Понятно что будет нарушение 1НФ, но вопрос в том, что работ впринцыпе немного, до 1000 где-то в будущем, сейчас и того меньше, а проблем с наполнением гораздо меньше, потому что просят чтоб процес заполнения таблицы трудом произошел как можно проще, то есть вставил туда строку и оно давай разбивать, а если придерживатсся 1НФ, то прийдется потом както для каждого вводимого труда выбирать с списка преподов и тд..
0
|
|
|
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
|
|||||||||||||
| 29.04.2010, 01:28 | |||||||||||||
|
Типичная задача: удалить Иванова со всех трудов. Или удалить Иванова с определенных трудов. Или Петрова сменила фамилию на Иванова и.т.д. Тут нужно шерстить всю таблицу и простыми запросами это сделать или сложно или нереально, придется программно что-то менять. Тут я просто дал очень простые задачи, которые уже вызывают проблемы, а могут быть куда более сложные, например, вывести все труды, в которых участвовали преподаватели, которые написали труд №2 и труд №3. Или, что хуже, вывести 3 труда, у которых максимально совпадает количество преподавателей с указанным списком (Иванов, Петрова, Сидоров, ... и.т.д.) - это типичная задача при поиске релевантного соответствия. Вывод: я не просто рекомендую, я настоятельно рекомендую сделать все правильно в рамках 1, 2 и 3-ей нормальной формы. Добавлено через 8 минут
Нужны другие разделители? Нивапрос:
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 8
|
|
| 29.04.2010, 13:11 [ТС] | |
|
Спасибо большое, будем пробовать
0
|
|
| 29.04.2010, 13:11 | |
|
Помогаю со студенческими работами здесь
5
Построить иерархию классов: студент, преподаватель, персона, заведующий кафедрой Построить иерархию классов: студент, преподаватель, персона, заведующий кафедрой
Как правильно построить DLL? Как правильно построить выражение? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|