473,397 Members | 2,056 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,397 software developers and data experts.

Implementing A Junction Table

I am trying to build a database to keep track of training topics completed by
people in my department. Our department has a set of 37 training topics. There
are 7 job classifications in the department. Each job classification has a group
of required training topics. Some of the training topics are required by more
than one job classification. I have the following tables:
TblJob
JobID
JobDescription

TblTopic
TopicID
Subject

TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID

TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID

I want to use a continuous form to add the records to TblTrainingCompleted. I'm
stuck on how to enter the RequiredJobTopicID field. It seems to me that I need
two comboboxes, one to define JobID and the other to define TopicID, so as to
define RequiredJobTopicID from the junction table, TblRequiredJobTopic. In a
continuous form they both need to be bound to hold their value and I can't
figure out how to implement them. I appreciate any help anyone can give me.

Marcy
Nov 12 '05 #1
8 5845
Marcy, the first 3 tables you have a great, but there seems to be something
missing.

Presumably you also have an Employee table. What is the relationship between
Employee and Job? Does an employee only hold one job at a time? Or can an
employee have multiple jobs (e.g. part time in different jobs, or holding
multiple responsibilties at once). If multiple, you have a many-to-many
relationship between Employee and Job, so you need another junction table:
TblEmployeeJob
EmployeeID
JobID
StartDate

The TblTrainingCompleted table would have these fields:
TrainingCompletedID
EmployeeID
DateCompleted
TopicID

Now you can create a query into TblEmployeeID, TlJob, TblRequiredJobTopic,
to get a list of the topics an employee should have done. Use DISTINCT to
get only one listing of a topic where duplicated. Save this query. Use the
Unmatched query wizard to get records in TblTrainingCompleted that are not
in this query.

--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

"Marcy" <mt*****@earthlink.net> wrote in message
news:e0******************@newsread3.news.atl.earth link.net...
I am trying to build a database to keep track of training topics completed by people in my department. Our department has a set of 37 training topics. There are 7 job classifications in the department. Each job classification has a group of required training topics. Some of the training topics are required by more than one job classification. I have the following tables:
TblJob
JobID
JobDescription

TblTopic
TopicID
Subject

TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID

TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID

I want to use a continuous form to add the records to TblTrainingCompleted. I'm stuck on how to enter the RequiredJobTopicID field. It seems to me that I need two comboboxes, one to define JobID and the other to define TopicID, so as to define RequiredJobTopicID from the junction table, TblRequiredJobTopic. In a continuous form they both need to be bound to hold their value and I can't
figure out how to implement them. I appreciate any help anyone can give me.
Marcy

Nov 12 '05 #2
Marcy wrote:
TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID
Unless you can have a combination of jobID and topicID more than once, I
advise *against* the use of a separate key for this table. jobID and
topicID together seem a perfect primary key for this table. That solves
your subform problem in one step, too.
TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID
that will become jobID+topicID;
I want to use a continuous form to add the records to TblTrainingCompleted. I'm
stuck on how to enter the RequiredJobTopicID field. It seems to me that I need
two comboboxes, one to define JobID and the other to define TopicID, so as to
define RequiredJobTopicID from the junction table, TblRequiredJobTopic.


These comboboxes will now simply 'sit' on their respective fields. You
can draw from the job and topic tables for their rowsource as usual.
--
Bas Cost Budde
http://www.heuveltop.org/BasCB
but the domain is nl

Nov 12 '05 #3
I'm sorry but I don't follow whay you are saying. Are you suggesting replacing
RequiredJobTopicID in TblTrainingCompleted with two fields, JobID and TopicID
and then using independent comboboxes to fill these fields? The topics required
for a specific job would be lost.

Marcy
"Bas Cost Budde" <ba*@heuveltop.org> wrote in message
news:c1**********@news2.solcon.nl...
Marcy wrote:
TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID


Unless you can have a combination of jobID and topicID more than once, I
advise *against* the use of a separate key for this table. jobID and
topicID together seem a perfect primary key for this table. That solves
your subform problem in one step, too.

TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID


that will become jobID+topicID;
I want to use a continuous form to add the records to TblTrainingCompleted. I'm stuck on how to enter the RequiredJobTopicID field. It seems to me that I need two comboboxes, one to define JobID and the other to define TopicID, so as to define RequiredJobTopicID from the junction table, TblRequiredJobTopic.


These comboboxes will now simply 'sit' on their respective fields. You
can draw from the job and topic tables for their rowsource as usual.
--
Bas Cost Budde
http://www.heuveltop.org/BasCB
but the domain is nl

Nov 12 '05 #4
rkc

"Allen Browne" <Al*********@SeeSig.Invalid> wrote in message
news:40***********************@freenews.iinet.net. au...
Marcy, the first 3 tables you have a great, but there seems to be something missing.

Presumably you also have an Employee table. What is the relationship between Employee and Job? Does an employee only hold one job at a time? Or can an
employee have multiple jobs (e.g. part time in different jobs, or holding
multiple responsibilties at once). If multiple, you have a many-to-many
relationship between Employee and Job, so you need another junction table:
TblEmployeeJob
EmployeeID
JobID
StartDate

The TblTrainingCompleted table would have these fields:
TrainingCompletedID
EmployeeID
DateCompleted
TopicID


Seems to me that someone should explain what it is that makes a row
in a table like the ones above unique. How is the uniqueness of the row
enforced by the database system. You can't duplicate the artificial
primary key, but you sure can duplicate everything else.

INSERT INTO TblTrainingCompleted VALUES (1, 2, "6/23/2003", 5)
INSERT INTO TblTrainingCompleted VALUES (2, 2, "6/23/2003", 5)






Nov 12 '05 #5
Allen,

This seems fine for the required topics but there's no way to record
crosstraining, ie, an employee receives training in a topic that is not required
by his jib classification.

Marcy
"Allen Browne" <Al*********@SeeSig.Invalid> wrote in message
news:40***********************@freenews.iinet.net. au...
Marcy, the first 3 tables you have a great, but there seems to be something
missing.

Presumably you also have an Employee table. What is the relationship between
Employee and Job? Does an employee only hold one job at a time? Or can an
employee have multiple jobs (e.g. part time in different jobs, or holding
multiple responsibilties at once). If multiple, you have a many-to-many
relationship between Employee and Job, so you need another junction table:
TblEmployeeJob
EmployeeID
JobID
StartDate

The TblTrainingCompleted table would have these fields:
TrainingCompletedID
EmployeeID
DateCompleted
TopicID

Now you can create a query into TblEmployeeID, TlJob, TblRequiredJobTopic,
to get a list of the topics an employee should have done. Use DISTINCT to
get only one listing of a topic where duplicated. Save this query. Use the
Unmatched query wizard to get records in TblTrainingCompleted that are not
in this query.

--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

"Marcy" <mt*****@earthlink.net> wrote in message
news:e0******************@newsread3.news.atl.earth link.net...
I am trying to build a database to keep track of training topics completed

by
people in my department. Our department has a set of 37 training topics.

There
are 7 job classifications in the department. Each job classification has a

group
of required training topics. Some of the training topics are required by

more
than one job classification. I have the following tables:
TblJob
JobID
JobDescription

TblTopic
TopicID
Subject

TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID

TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID

I want to use a continuous form to add the records to

TblTrainingCompleted. I'm
stuck on how to enter the RequiredJobTopicID field. It seems to me that I

need
two comboboxes, one to define JobID and the other to define TopicID, so as

to
define RequiredJobTopicID from the junction table, TblRequiredJobTopic. In

a
continuous form they both need to be bound to hold their value and I can't
figure out how to implement them. I appreciate any help anyone can give

me.

Marcy


Nov 12 '05 #6
If you have a many-many relationship between employees and topics you need
to add tblEmployee-Topic to resolve the ambiguity.

Plse post to 1 group at a time.
Nov 12 '05 #7
Marcy wrote:
I'm sorry but I don't follow whay you are saying. Are you suggesting replacing
RequiredJobTopicID in TblTrainingCompleted with two fields, JobID and TopicID
and then using independent comboboxes to fill these fields? The topics required
for a specific job would be lost.


That is indeed what I am saying. But you will create relationships
between those tables, effectively requiring any combination of jobID and
topicID to be inserted into tblTrainingCompleted to exist in
tblRequiredJobTopic.

--
Bas Cost Budde
http://www.heuveltop.org/BasCB
but the domain is nl

Nov 12 '05 #8
If TblTrainingCompleted has a foreign key to TopicID, what is to stop you
recording *any* topic an employee has taken?

Are you saying the proposed interface will not provide for the user to do
that? So you need another form to do that as well?

--
Allen Browne - Microsoft MVP. Perth, Western Australia.
Tips for Access users - http://allenbrowne.com/tips.html
Reply to group, rather than allenbrowne at mvps dot org.

"Marcy" <mt*****@earthlink.net> wrote in message
news:9u******************@newsread3.news.atl.earth link.net...
Allen,

This seems fine for the required topics but there's no way to record
crosstraining, ie, an employee receives training in a topic that is not required by his jib classification.

Marcy
"Allen Browne" <Al*********@SeeSig.Invalid> wrote in message
news:40***********************@freenews.iinet.net. au...
Marcy, the first 3 tables you have a great, but there seems to be something missing.

Presumably you also have an Employee table. What is the relationship between Employee and Job? Does an employee only hold one job at a time? Or can an employee have multiple jobs (e.g. part time in different jobs, or holding multiple responsibilties at once). If multiple, you have a many-to-many
relationship between Employee and Job, so you need another junction table: TblEmployeeJob
EmployeeID
JobID
StartDate

The TblTrainingCompleted table would have these fields:
TrainingCompletedID
EmployeeID
DateCompleted
TopicID

Now you can create a query into TblEmployeeID, TlJob, TblRequiredJobTopic, to get a list of the topics an employee should have done. Use DISTINCT to get only one listing of a topic where duplicated. Save this query. Use the Unmatched query wizard to get records in TblTrainingCompleted that are not in this query.
"Marcy" <mt*****@earthlink.net> wrote in message
news:e0******************@newsread3.news.atl.earth link.net...
I am trying to build a database to keep track of training topics completed
by
people in my department. Our department has a set of 37 training
topics. There
are 7 job classifications in the department. Each job classification
has a group
of required training topics. Some of the training topics are required
by more
than one job classification. I have the following tables:
TblJob
JobID
JobDescription

TblTopic
TopicID
Subject

TblRequiredJobTopic
RequiredJobTopicID
JobID
TopicID

TblTrainingCompleted
TrainingCompletedID
EmployeeID
DateCompleted
RequiredJobTopicID

I want to use a continuous form to add the records to

TblTrainingCompleted. I'm
stuck on how to enter the RequiredJobTopicID field. It seems to me
that I need
two comboboxes, one to define JobID and the other to define TopicID,
so as to
define RequiredJobTopicID from the junction table,
TblRequiredJobTopic. In a
continuous form they both need to be bound to hold their value and I
can't figure out how to implement them. I appreciate any help anyone can

give me.

Marcy

Nov 12 '05 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: mksql | last post by:
As an example, I am building an authentication mechanisim that will use data in the 3 left tables to determine rights to objects in a destination table, diagrammed below. In this structure,...
1
by: Riley DeWiley | last post by:
I have an application with two tables, A and B. Each has an autonumber unique ID field, plus other data. I have a junction table, AB, containing fields AID, BID, and Count (a number). AB has...
1
by: LurfysMa | last post by:
I am working on an electronic flashcard program. Most of the subjects are simple lists of questions and answers. Those seem to be working. Some of the "subjects" have "categories" of questions. ...
3
by: inthemix | last post by:
My goal is to have a sub-form located on the main form which containts a listbox. The user will be able to select anany number of offices (by officeName) from this listbox. IMO the design is very...
1
by: que576 | last post by:
I have created a junction table so that I can relate data from 2 other tables. Table 1 - Category Table (has the following fields with data) CatID (primary key) CategoryName CategoryStatus ...
2
by: Henry Stockbridge | last post by:
Hi, I need a recommendation when to add a record to a junction table that complements a many to many relationship. There will be a Contacts form, and an Interests subform with the parent/child...
1
by: bg_ie | last post by:
I'm designing a database with 3 tables called Function, Test and Scene. A Function has multiple Tests, but a Test has only one Function. A many to many relationship exists between Test and Scene...
3
by: dbertanjoli | last post by:
Hello, I have a questinarrie webform I use INSERT statement(s) to insert a new record in the User and Questions tables and then (HERE IS MY PROBLEM) I need to update my junction table...
1
by: pwebbie | last post by:
In an MS Access Project tied to SQL Server, I am trying to create a data entry form that allows the user to enter info about a law, and then (in a datasheet) edit/insert related web site records...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.