Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Using Hibernate with a link table

Posted on 2004-09-29
2
Medium Priority
?
755 Views
Last Modified: 2008-01-09
Hi.
I have a pretty complex problem and i'm not sure how to map it.

I have a standard tomcat User & UserRoles tables setup.
I also have what's going to be an event/class scheduler with the tables Event & EventInstructor

the schema looks like this:

 ----------       -------------------
|   User   |     |   User_Role    |
 ----------       -------------------
| ID (int) |     | ID (int)           |
| Name   |     | user_id (int)   |
| ...        |     | role (varchar) |
 ----------       -------------------
 

 ----------       -----------------------
|   Event  |     |  Event_Instructor |
 ----------       -----------------------
| ID (int) |     | instructor_id (int) |
| Name   |     | event_id (int)       |
| ...        |      -----------------------
 ----------


Problem #1:
How do i map the Event & User using the Event_Instrucotr table?
I've looked at some posts about many-to-many, but my problem is that and event may or may not have an instructor, but if it does it can only have 1.

Problem #2:
An instructor is a User who has the role "instructor" in the User_Role table.
Not sure how to get only these Users to map to the Event_Instructor table.

Again, and event may or may not have up to 1 instructor, but and instructor can have many events.

Can anyone help me map this?

Thanks!

- Jonathan
0
Comment
Question by:jdoklovic
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 12199371
Problem #1:
How do i map the Event & User using the Event_Instrucotr table?
I've looked at some posts about many-to-many, but my problem is that and event may or may not have an instructor, but if it does it can only have 1.

I assume that INSTRUCTORID should have the value of USER id, which shall be implemented by defining INSTRUCTORID being a foreign key to userid (in table user). The value can be null, which indicates no instructor.

Problem #2:
An instructor is a User who has the role "instructor" in the User_Role table.
Not sure how to get only these Users to map to the Event_Instructor table.

IN RDBMS like SQL Server and Oracle, I would use contraints or triggers to validate this requirements. In MySQL, there are no triggers unless you use MaxDB by MySQL...

So unless you have a DBMS Version that allows triggers, you need to solve this on application level.

CHeers
0
 
LVL 7

Accepted Solution

by:
petoskey-001 earned 1500 total points
ID: 12199891
----------              -------------------
|   User   |           |   User_Role    |
 ----------             -------------------
| ID (int) | <---    | ID (int)           |
| Name   |       |--| user_id (int)   |
| ...        |           | role (varchar) |
 ----------             -------------------
 

 ----------       -----------------------
|   Event  |     |  Event_Instructor |
 ----------       -----------------------
| ID (int) |     | instructor_id (int) |
| Name   |     | event_id (int)       |
| ...        |      -----------------------



Problem #1:
How do i map the Event & User using the Event_Instrucotr table?
I've looked at some posts about many-to-many, but my problem is that and event may or may not have an instructor, but if it does it can only have 1.

Problem #2:
An instructor is a User who has the role "instructor" in the User_Role table.
Not sure how to get only these Users to map to the Event_Instructor table.

Again, and event may or may not have up to 1 instructor, but and instructor can have many events.
-----------------------------------------------------------------
As stated you can't enforce specific links based on data without triggers to check things.  You can't force Event_Instroctor to link to User_Role with a value of Instructor.  You'll have to put that logic in your middleware or application.

BUT it appears to me that you don't really need the Event_Instructor table.  Each event would point to the User_Role table for their instructor.  Again you would have to check that they were an instructor if code elsewhere, but you don't really need a separate table.  Just put any extra fields from the event_instructor table into the event.

So the linking would look like this...  

  USERS <--- USER_ROLES <--- EVENT

That sounds like it would work based on what you've mentioned so far.  
 
0

Featured Post

NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows the steps required to install WordPress on Azure. Web Apps, Mobile Apps, API Apps, or Functions, in Azure all these run in an App Service plan. WordPress is no exception and requires an App Service Plan and Database to install
By, Vadim Tkachenko. In this article we’ll look at ClickHouse on its one year anniversary.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question