Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связывание таблиц в базе данных Access 
:(
    Опции темы
Letion
  Дата 3.1.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



 Здравствуйте, профессионалы! У меня такая проблема - пишу программу, в которой БД создана в формате Access. В этой базе данных три таблицы - список фамилий (dannue), предметы (dizsiplina) и оценки (ozenka). Цель программы - чтобы для каждой фамилии можно было вводить свой список предметов, а по каждому предмету - свой список оценок. Подскажите, пожалуйста! Как между собой связать эти таблицы? Бьюсь уже который день! У меня получается, что список предметов и оценок одинаков для любой фамилии! Но так ведь не должно быть smile Наведите на путь истинный!
PM MAIL WWW   Вверх
chip_and_dayl
Дата 4.1.2010, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Вот такого плана

Таблица предмет содержит собственно код предмета и название.

Таблица Фамилий, содержит идентификатор фамилии и собственно фамилию.

Таблица Sv содержит связи между таблицей фамилий и названий предметов: Первое поле идентификатор  с таблицы Фамилий, второе идентификатор с таблицы предметов, третье поле служит для идентификации оценок (тип счетчик) 

Таблица Sv2 содержит связь между предметами и оценками. Первое поле это идентификатор Предмета Студента, второе поле собственно оценка по предмету

Добавлено через 11 минут и 28 секунд
Хотя если оценка по предмету будет одна, то таблицу Sv2 можно убрать,  а поле ssID в таблице Sv нужно заменить на sBal

Это сообщение отредактировал(а) chip_and_dayl - 4.1.2010, 00:22

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  1.jpg 52,03 Kb


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Letion
Дата 4.1.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



chip_and_dayl! Это нужно делать программно (программу создаю на Делфи) или в приложении Access?

Это сообщение отредактировал(а) Letion - 4.1.2010, 12:26
PM MAIL WWW   Вверх
Данкинг
Дата 4.1.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Letion, судя по скрину chip_and_dayl'а, там определённо Access. smile Правая кнопка на форме со списком таблиц -> "Схема данных".


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Letion
Дата 4.1.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



Цитата(Данкинг @ 4.1.2010,  12:45)
Letion, судя по скрину chip_and_dayl'а, там определённо Access. smile Правая кнопка на форме со списком таблиц -> "Схема данных".

Дайте, пожалуйста, ссылки на литературу или страницы по связыванию таблиц Access! Просто никогда этим не занимался! Спасибо!
PM MAIL WWW   Вверх
Данкинг
Дата 4.1.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Letion, какую литературу по связыванию? smile Ключевые поля в таблице есть? Тогда заходишь в "схему данных", выбираешь нужные таблицы и тянешь мышкой связь между полями таблиц, по которым связываешь.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 4.1.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Таблицу лучше создать в Accesse, зачем мучатся или извращаться!?! А саму логику работы, создание записей, редактирование и т.д., писать в Делфи.

По поводу связей, я любитель все сам контролировать, поэтому на уровне СУБД (Аксесс) не связываю таблицы. Уже на программном уровне пытаюсь писать так, чтобы целостность связей была собственно целая.

Ну, я так понял, что под связыванием таблиц, ты имел ввиду как все три таблицы вывести как одну без всяких ключевых полей!?!

Добавлено через 3 минуты и 26 секунд
Данкинг
Я б не удивился, если бы еще версию Аксеса назвал:)

Это сообщение отредактировал(а) chip_and_dayl - 4.1.2010, 17:05


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Letion
Дата 5.1.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



Извините за задержку ответа - инет барахлил. Вот что у меня получилось:
user posted image Не знаю, правильно ли соединил. Все равно что-то не то. Вот ссылка на саму мою базу данных: база данных В этой базе данных три таблицы - список фамилий (dannue), предметы (dizsiplina) и оценки (ozenka). Цель программы - чтобы для каждой фамилии можно было вводить свой список предметов, а по каждому предмету - свой список оценок. То есть, к примеру, для Ивановой - свои предметы: математика, английский, история. По математике чтобы стояли свои оценки, к примеру: 33333. Для английского свои:4455. Для истории, к примеру: 5555.
 Для Примова, к примеру, свои предметы: алгебра, геометрия, рус.язык. По алгебре: 3344, по геометрии: 4444, по рус. языку: 5554. И так далее по всем фамилиям. У меня же получается, что добавляемые предметы высвечиваются не по одной фамилии, а по всем фамилиям, т. е. становятся общими. То же самое и с оценками. Добавляю, к примеру 445533 - эти же оценки высвечиваются по всем предметам. как быть? Что не так делаю? Спасибо!
PM MAIL WWW   Вверх
chip_and_dayl
Дата 5.1.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Глядя на связи, можно сказать, что там все не так:)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Letion
Дата 5.1.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



Цитата(chip_and_dayl @ 5.1.2010,  15:45)
Глядя на связи, можно сказать, что там все не такsmile

Что именно?
PM MAIL WWW   Вверх
chip_and_dayl
Дата 5.1.2010, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Таблица Данные и Дисциплина должны быть связаны по ключевому полю (кеу1 в таблице Данные и кеу1 в таблице Дисциплина), а что мы видим?

А мы видим... даже не знаю как это назвать.

Добавлено через 57 секунд
Тоже касается таблица Оценки и Дисциплина

Добавлено через 4 минуты и 9 секунд
И при той структуре, что ты сделал, выходит избыточность, то есть предмет "Математика" будет создан столько раз, у скольких студентов этот предмет есть, вместо того, чтобы предмет и связи держать в отдельной таблице

Добавлено через 5 минут и 19 секунд
В этом случае, ты раз занес предметы в базу, и уже при создание нового студента ты ему выбираешь предметы, которые у него есть, а не создаешь новый предмет с тем же название для каждого студента


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Letion
Дата 5.1.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



Цитата(chip_and_dayl @ 5.1.2010,  15:49)
Таблица Данные и Дисциплина должны быть связаны по ключевому полю (кеу1 в таблице Данные и кеу1 в таблице Дисциплина), а что мы видим?

Спасибо за подсказку! Сейчас попробую.

Добавлено через 5 минут и 47 секунд
То есть обязательно добавить промежуточные таблицы?

Добавлено через 6 минут и 44 секунды
Как на том рисунке, что Вы мне давали?
PM MAIL WWW   Вверх
chip_and_dayl
Дата 5.1.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Цитата(Letion @  5.1.2010,  16:17 Найти цитируемый пост)
То есть обязательно добавить промежуточные таблицы?

Ну, если хотим предмет, например, "Математика" вводить 200 раз, вместо одного, то дополнительная таблица не нужна. Иначе ее нужно создать. Лучше все создать как я показал. В этом случае база хранит то что нужно и ничего лишнего (хотя таблицу с именем Sv2 можно и убрать, только в этом случае в таблицу Sv нужно перенести поле ОЦЕНКА)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Letion
Дата 5.1.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 19.8.2009

Репутация: нет
Всего: 0



Вот что у меня получилось:
user posted image 
По ходу также, как и на Вашем рисунке?
PM MAIL WWW   Вверх
chip_and_dayl
Дата 5.1.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 1
Всего: 9



Letion
Не походу, а точно как на моем скрине :)

Добавлено через 2 минуты и 24 секунды
Теперь нужно писать логику работы программы на Делфи. Связывание таблиц, точнее вывод всего этого добра в единой таблице делается через запрос на обьединение

Добавлено через 11 минут и 25 секунд
Да,  наверно все-таки поле ozenka  стаблицы Оценка перенести  в таблицу Пр, и тогда таблицу Оценка можно удалить


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1907 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.