Sign up ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

This is a follow-up to a question I wrote a while ago, for reference, you can look it up here.

I've developed a curriculum based database scheme that looks like this(Thanks Joel Brown) enter image description here

Now that a new educational system is introduced(while the old one is still not "deprecated") I have been looking for a way to integrate both curriculum systems together without creating a whole new different system; As the two systems are fundamentally different, this have been quite a challenge for me.

Here's a picture describing the new system . . .

enter image description here

(English level 1, 2, and 3 are classified as courses)

See, the new system removes the whole grades system. A jr. high school student can enroll in the exact same course(English level 3, for example) as a sr. high school student.

Is there a way to make those two systems work with my current design scheme? Or should I create a whole new scheme for the new system?

share|improve this question
Can you add the results of SHOW CREATE TABLE table_name for each of the tables that currently exist (and that apply to this question)? – Willem Renzema Oct 1 '13 at 23:56

2 Answers 2

Would it not solve your problem to redefine the GRADE_LEVEL table such that it contains either the grade of a course or the level of the course (which ever applies)?

The rows in GRADE_LEVEL could contain values such as:


You might consider adding a partitioning attribute to the GRADE_LEVEL table that would indicate which educational system is being applied. This may be helpful for some of your application logic that might need to apply different processing depending on which system is in use for a given COURSE.

share|improve this answer

Pardon me if I have translated the question wrong. What I see here is the existing system is at a more granular level than the newer one. In the existing system GradeLevel and Course have a One-Many relation so courses can be retrieved by grade level and if I need to find all unique courses I will need to eliminate the grade level from my query. Yet Course table still holds unique list of courses available. Now in the new system there is no GradeLevel entity type. So the new system is less granular than older one.

enter image description here

I would translate above picture as new system. From the schema perspectve nothing is changed, it is just APIs accessing these tables. Creating a new set of APIs to use a new way to select/insert/update among these tables will require a good amount of code change as well to make sure code is calling the right set of APIs based on who the caller is and/or which API call is intended for which system, new or old.

Changing the existing APIs to select/update/insert based on data received by those APIs will not require much work on the code side. If GradeLevel information is requested or supplied then APIs will assume this is a request for/from old system otherwise it will behave for the new system.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.