Data normalization

I have a question
I am currently a reporting system, the function of this system is to control the printing of certificates, that is, if you print one or more times, I need to get that control.
To make this system need two tables: The table has 40 field course and the student table has 30 fields. To print the certificate from the table need 12 field course and the student table 13 fields. I create my own tables, but I want to know whether it is necessary to bring those 25 fields to my tables, for example: One thing that I bring to my system tables is: names, but that figure is a master table, my question is if I should bring me to my system
1. code and the names (with this option I am repeating data)
or only
2. code and then refer to the master table (with this option do not repeat)
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Use a view that references the master tables producing a data set that has just the fields you need for your report but does not duplicate data. The view only exists while you run your report and is regenerated each time you need it. You can independantly write back any tracking data to the main tables if you need to.
enrique_aeoAuthor Commented:
The relationship between the course and students is one to many. The process is as follows
1. Enter the course code
2. It shows the course details
3. Data are samples of students
4. Press a button to print the certificates for all students
My question is whether the steps 1,2 and 3 can be made with a view?
In the table tblStudents, you need a unique StudentID for each student named in the table.  Thereafter, throughtout all other tables and queries in your application, you need only refer to the StudentID in tblStudents to fetch any other paramteter about that student you have recorded in tblStudents.
Is it really a straight one:many between course and students? Or can a student also take many courses? If the latter you actually need an extra table to break the many:many and that complicates the view slightly but a view is still the solution. Your design would have:
tblCourse(CourseID, CourseName, CourseField1, CourseField2...)
tblStudent(StudentID, FamilyName, FirstName, DoB, StudentField1, StudentField2...)
tblCourseStudent(CourseID, StudentID, PerformanceMetric1, PerformanceMetric2...)
You would use the data in tblCourse for the selection dropdown and to populate course information on a form.
You would use a view on tblCourseStudent with WHERE CourseID=SelectedCourseID and JOINed to tblStudent to retrieve the student/performance data needed for each certificate.
You don't mention how you are creating the actual certificates; sql reporting services, or a custom front end. I often use MS Access for reporting front-ends via a linked tables - great reporting tools and easy to output things as PDF.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Access

From novice to tech pro — start learning today.