Hi,
I know I should, but want to continue format that was being used in the Delphi system which uses the same MySQL tables, and, the user wants to be able for both systems to co-exist, at least for the next year,
+-----------+ +-----------------+
|StudentTbl | | StudentAwardTbl |
|-----------| |-----------------|
| person_id |------------| person_id |
| forename | +--------| award_id |
| surname | | | skills |
| (etc,) | | | date_passed |
+-----------+ | +-----------------+
|
+-----------+ | +--------------+
| AwardsTbl | | |AwardSkillsTbl|
|-----------| | |--------------|
| award_id |---+---------| award_id |
|award_name | | skill_desc |
|passes_rqd | | display_ord |
|award_body | +--------------+
+-----------+
There are other tables (e.g. a PersonSessionTbl which is also used but not shown here)
Basically there are several awards, each award has several skills, some of which follow a natural order, and, for some awards the student only needs to complete, say, 8 out of the 10 (passes_rqd column) and it is this that is used to determine "date_passed" .
Each HTML table will show all the students for a single session, and for a single award (AwardTbl)
The AwardSkillsTbl is used to build the headings for the table rows, in the order determined by display_ord. The skills "array" follows the same display order.
Hope this explains why not using completely normalised tables.