![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Здравствуйте, профессионалы! У меня такая проблема - пишу программу, в которой БД создана в формате Access. В этой базе данных три таблицы - список фамилий (dannue), предметы (dizsiplina) и оценки (ozenka). Цель программы - чтобы для каждой фамилии можно было вводить свой список предметов, а по каждому предмету - свой список оценок. Подскажите, пожалуйста! Как между собой связать эти таблицы? Бьюсь уже который день! У меня получается, что список предметов и оценок одинаков для любой фамилии! Но так ведь не должно быть
![]() |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Вот такого плана
Таблица предмет содержит собственно код предмета и название. Таблица Фамилий, содержит идентификатор фамилии и собственно фамилию. Таблица Sv содержит связи между таблицей фамилий и названий предметов: Первое поле идентификатор с таблицы Фамилий, второе идентификатор с таблицы предметов, третье поле служит для идентификации оценок (тип счетчик) Таблица Sv2 содержит связь между предметами и оценками. Первое поле это идентификатор Предмета Студента, второе поле собственно оценка по предмету Добавлено через 11 минут и 28 секунд Хотя если оценка по предмету будет одна, то таблицу Sv2 можно убрать, а поле ssID в таблице Sv нужно заменить на sBal Это сообщение отредактировал(а) chip_and_dayl - 4.1.2010, 00:22 Присоединённый файл ( Кол-во скачиваний: 18 ) ![]() -------------------- Фсё будет хорошо!!! |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
chip_and_dayl! Это нужно делать программно (программу создаю на Делфи) или в приложении Access?
Это сообщение отредактировал(а) Letion - 4.1.2010, 12:26 |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Letion, судя по скрину chip_and_dayl'а, там определённо Access.
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Дайте, пожалуйста, ссылки на литературу или страницы по связыванию таблиц Access! Просто никогда этим не занимался! Спасибо! |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Letion, какую литературу по связыванию?
![]() -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Таблицу лучше создать в Accesse, зачем мучатся или извращаться!?! А саму логику работы, создание записей, редактирование и т.д., писать в Делфи.
По поводу связей, я любитель все сам контролировать, поэтому на уровне СУБД (Аксесс) не связываю таблицы. Уже на программном уровне пытаюсь писать так, чтобы целостность связей была собственно целая. Ну, я так понял, что под связыванием таблиц, ты имел ввиду как все три таблицы вывести как одну без всяких ключевых полей!?! Добавлено через 3 минуты и 26 секунд Данкинг Я б не удивился, если бы еще версию Аксеса назвал:) Это сообщение отредактировал(а) chip_and_dayl - 4.1.2010, 17:05 -------------------- Фсё будет хорошо!!! |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Извините за задержку ответа - инет барахлил. Вот что у меня получилось:
![]() Для Примова, к примеру, свои предметы: алгебра, геометрия, рус.язык. По алгебре: 3344, по геометрии: 4444, по рус. языку: 5554. И так далее по всем фамилиям. У меня же получается, что добавляемые предметы высвечиваются не по одной фамилии, а по всем фамилиям, т. е. становятся общими. То же самое и с оценками. Добавляю, к примеру 445533 - эти же оценки высвечиваются по всем предметам. как быть? Что не так делаю? Спасибо! |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Глядя на связи, можно сказать, что там все не так:)
-------------------- Фсё будет хорошо!!! |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Что именно? |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Таблица Данные и Дисциплина должны быть связаны по ключевому полю (кеу1 в таблице Данные и кеу1 в таблице Дисциплина), а что мы видим?
А мы видим... даже не знаю как это назвать. Добавлено через 57 секунд Тоже касается таблица Оценки и Дисциплина Добавлено через 4 минуты и 9 секунд И при той структуре, что ты сделал, выходит избыточность, то есть предмет "Математика" будет создан столько раз, у скольких студентов этот предмет есть, вместо того, чтобы предмет и связи держать в отдельной таблице Добавлено через 5 минут и 19 секунд В этом случае, ты раз занес предметы в базу, и уже при создание нового студента ты ему выбираешь предметы, которые у него есть, а не создаешь новый предмет с тем же название для каждого студента -------------------- Фсё будет хорошо!!! |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Спасибо за подсказку! Сейчас попробую. Добавлено через 5 минут и 47 секунд То есть обязательно добавить промежуточные таблицы? Добавлено через 6 минут и 44 секунды Как на том рисунке, что Вы мне давали? |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Ну, если хотим предмет, например, "Математика" вводить 200 раз, вместо одного, то дополнительная таблица не нужна. Иначе ее нужно создать. Лучше все создать как я показал. В этом случае база хранит то что нужно и ничего лишнего (хотя таблицу с именем Sv2 можно и убрать, только в этом случае в таблицу Sv нужно перенести поле ОЦЕНКА) -------------------- Фсё будет хорошо!!! |
|||
|
||||
Letion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 19.8.2009 Репутация: нет Всего: 0 |
Вот что у меня получилось:
![]() По ходу также, как и на Вашем рисунке? |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 1 Всего: 9 |
Letion
Не походу, а точно как на моем скрине :) Добавлено через 2 минуты и 24 секунды Теперь нужно писать логику работы программы на Делфи. Связывание таблиц, точнее вывод всего этого добра в единой таблице делается через запрос на обьединение Добавлено через 11 минут и 25 секунд Да, наверно все-таки поле ozenka стаблицы Оценка перенести в таблицу Пр, и тогда таблицу Оценка можно удалить -------------------- Фсё будет хорошо!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |