1

Я ищу некоторые рекомендации относительно того, как создать базу данных, которую я создаю. Я думаю, что лучший способ задать вопрос - описать конкретный сценарий:Таблица базы данных, ссылающаяся на несколько записей

У меня есть база данных, в которой будет храниться информация о студенческих сотрудниках в школе.

У меня есть одна таблица под названием «Семестры», которая содержит информацию о конкретном семестре (например, «Осень/Весна/Лето», год и т. Д.).

У меня есть другая таблица под названием «Сотрудники», которая содержит информацию о конкретном ученике-сотруднике (например, имя, jobTitle, startDate, endDate). Я также хотел бы иметь ссылку на таблицу «Семестры», в которой указывается, какой семестр (ы) был нанят работником. Так, например, один столбец в таблице «Сотрудники» скажет мне, что этот конкретный сотрудник работал во время семестров «Fall2010, Spring2011 и Fall2011».

Проблема в том, что я не знаю, как ссылаться на несколько записей в одном поле.

Я уверен, что это довольно распространенный сценарий, я просто не уверен, как это сделать. Ответы, на которые ссылается MS Access или SqlServer, будут отличными.

Спасибо.

+0

Это звучит как домашнее задание. Если это так, вы можете добавить этот тег. Обычно для создания отношения «многие-многие» используется таблица ссылок между двумя объектами. – Suirtimed

+0

Не домашнее задание, просто проект, над которым я работаю - создание простого приложения для моей школьной газеты. – Eric

ответ

2

Это звучит как отношение многих к многим. В таком случае вы, скорее всего, используете junction table.

Сотрудники (EmpId, имя)

1 bob 
2 moe 
3 george 

семестры (Идентификатор множества семафоров, имя)

1 fall 2010 
2 spring 2010 

EmploymentHistory (EmpId & Идентификатор множества семафоров)

1 1 (bob was employed fall 2010) 
1 2 (bob was employed spring 2010) 
2 2 (moe was employed fall 2010) 
+0

Я получаю это сейчас. Никогда не слышал о соединительной таблице, но я должен был подумать об этом. Благодарю. – Eric

+0

Несомненно, удачи в вашем проекте! –

+0

Вики, очевидно, написаны неквалифицированными и неопытными людьми, которые учатся, когда они идут; они используют все виды восхитительных имен для технических элементов, имеющих одно имя. Термин Relational для таблицы, в которой содержится только отношение «многие ко многим» (только два FK), является ** Ассоциативная ** Таблица. Если он содержит данные, это просто таблица; в условиях IDEF1X, таблица ** Dependent **. – PerformanceDBA

1

Вы можете выполнить это с помощью нескольких внешних ключей к таблице семестров (не семестров) из таблицы Employee (not Employees).

Если вы хотите отслеживать семестры, с которыми работал Сотрудник, я бы нормализовал это в таблице WorkHistory, которая является «один ко многим» с Employee и многими-ко-многим с Semester.

Смежные вопросы