SQL

o++oPS

two representations of one table:

M( STID, NAME, LOC?, SAL, DEPT,L( COURSE, MARK),M( PROJ, HOURS))
  1234 Ernst Oehna 500 Maths Algebra 1 Fritz 4
Logic 2 Otto 2
            History 1    
  1245 Sophia Berlin 400 CS Algebra 3 Mao 5
            Database 1 Ming 4
            Otto 1 Otto 6
2456 Clara Oehna 450 CS Database 1
            OCaml 2    
  4567 Ulrike   400 Art     Monet 10
  5678 Kaethe Gerwisch 0 Art Repin 1 Monet 20
            Apel    
                  (students.tab)

    M(STID,NAME,LOC?,SAL,DEPT,L(COURSE,MARK),M(PROJ,HOURS))
  1234  Ernst  Oehna  500  Maths  
    Algebra  1   
    Logic  2   
    History  1   
    Fritz  4 
      Otto  2   
  1245  Sophia  Berlin  400  CS  
    Algebra  3   
    Database  1   
    Otto  1   
      Mao  5   
      Ming  4   
      Otto  6   
  3456  Clara  Oehna  450  CS  
    Database  1   
    OCaml  2   
  4567  Ulrike  empty  400  Art  
    Monet  10 
  5678  Kaethe  Gerwisch  0  Art  
    Repin  1   
    Apel  1   
      Monet  20   
(students.hsq)

         SQL requires to store the above table students in three files:

  M( STID, NAME, LOC?, SAL, DEPT)
  1234 Ernst Oehna 500 Maths
    1245 Sophia Berlin 400 CS
    3456 Clara Oehna 450 CS
    4567 Ulrike   400 Arts
    5678 Kaethe Gerwisch 0 Arts
            (students1.tab)

         

  M( STID, COURSE, MARK)
    1234 Algebra 1
  1234 History 1
  1234 Logic 2
    1245 Algebra 3
    1245 Database 1
    1245 Otto 1
    3456 Database 1
    3456 OCaml 2
    5678 Apel 1
5678 Repin 1
     (exams1.tab) 

      

M( STID, PROJ, HOURS)
1234 Fritz 4
    1234 Otto 2  
1245 Mao 5
    1245 Ming 4  
    1245 Otto 6  
    4567 Monet 10  
    5678 Monet 20  
            (projects1.tab)