2016-07-04 1 views
1

Я пытаюсь создать базовую базу данных Студента в доступе. Основные таблицы, которые я использую являются курсами, Студентами, Сотрудников и модулей.Новичок в доступе db. Отношения для отслеживания записей объектов

Просто чтобы прояснить немного о моей терминологии:

  • Мой курс на самом деле университет. (т. е. курс по экономике)
  • Мои модули - это настоящие курсы, относящиеся к каждому университету. (i, e, Economics Course включают такие модули, как математика, статистика, эконометрика и т. д.).
  • Мои сотрудники - учителя.
  • Модуль включает в себя ровно 12 лекций.
  • Модуль предлагается в определенном семестре (период 6 месяцев), A = сентябрь-февраль и B = март-август. Один модуль может предлагаться только в одном из двух семестров.

Отношения, которые я хочу использовать это:

  1. Курс имеет много студентов. (один-ко-многим)
  2. Курс имеет много модулей. (один-ко-многим)
  3. Максимальный 1 сотрудник может вести 1 курс. Мне нужно знать дату, когда он получил руководство этим курсом (mgrstartdate). (один-к-одному) персонала может иметь только 1 специализацию (т.е. Джон Смит Математик) персонала может иметь много квалификации (т.е. «10 лет предыдущего опыта» и «опубликовано статьи»)
  4. Штатные член учит много модулей. (one-to-many)
  5. Студент может зарегистрироваться (взять на себя) во многих модулях. (many-to-many) В этом случае мне нужно знать дату регистрации и окончательный класс (исполнение).
  6. Студент может посещать множество модулей. (many-to-many) В этом случае мне нужно получить дату посещения, посещение (да/нет) и время прибытия. (Время прибытия - причина, по которой я отслеживаю посещаемость, а не отсутствие)
  7. Модуль включает в себя 12 лекций. (one-to-many) Модуль предлагается в определенном семестре (период 6 месяцев), A = сентябрь-февраль и B = март-август. Один модуль может предлагаться только в одном из двух семестров.

Так вот следует мои таблицы и их отношения Предварительный просмотр: Access Relationships preview

Это выглядит как, как описано на указанных выше отношениях? Функционально ли записывать производительность, посещаемость и время прибытия учащихся? Я использовал таблицу лекций, чтобы отслеживать дату/время для каждого модуля. Это необходимо или я могу просто переместить все атрибуты таблицы лекций в таблицу модулей?

ответ

0

Выглядит в основном хорошо для меня.

  1. Сотрудник учит много модулей. (Один-ко-многим)

Это удивило бы меня, если каждый модуль может быть обучал только ровно один учитель. Разве это не должно быть много?

Я бы приложил Attends к Lecture вместо Module. Тогда вам не нужна дата еще раз, и вы можете сравнить время прибытия с l_time.
Хотя я сомневаюсь в практичности этой таблицы. Неужели кто-то собирается записывать все посещаемости в таких деталях?

Являются ли поля с отступом в Module и Staff многозначными полями? Большинство людей советуют не использовать их, например. Multivalued Fields a Good Idea?. Лучше поместите их в дополнительные таблицы с отношениями «один ко многим».

+0

Очевидно, что взаимоотношения персонала-модуля много-ко-многим. Тем не менее, я, вероятно, сделаю то, что вы сказали о прикреплении. Участвует в лекции. В лекции я уже поменял дату с указанием даты и времени с указанием всего 1 записи типа даты/времени и формального общего типа. Единственные многозначные поля - это специализации и квалификации, которые я уже отслеживаю в разделенных таблицах. Моя текущая проблема, когда я вводил данные с этой моделью, кажется, проблема целостности. –

+0

Моя текущая проблема, когда я вводил данные с этой моделью, кажется, проблема целостности. -Я зарегистрировал студентов на курсах. (Курс-студент: один-ко-многим) -I зарегистрированные модули в курсах (Module-Course: one-to-many) -Но когда я собираюсь регистрировать модули на ученике, он позволяет мне делать любые комбинации без ограничений от предыдущих отношений. (Студенческий модуль: многие-ко-многим) Любые подсказки, почему это происходит? Это должно быть против моих правил целостности, хотя я использую lookup для std_matericNo и m_code в таблице Undertakes. –

+0

В соответствии с действующими правилами для этой базы данных нет оснований. Если вы хотите применить его, вы должны добавить 'c_title' в Undertakes и оба соединения. Или сделайте это во внешнем интерфейсе, включив только модули с таким же 'c_title', что и текущий ученик. – Andre