Witam chciałem stworzyć skrypt listy przebojów pokazujący następujący następujące dane:
Numer notowania|data notowania|prowadzący|
aktualna pozycja|pozycja w poprzednim notowaniu|ile tygodni w notowaniu|utwór|trend|

Zastanawiam się jak powinna wyglądać struktura bazy danych dla takiego projektu, myślałem aby zrobić to tak:

  1. tabela 'wykonawcy':
  2. id_wykonawcy (INT(11) NOT NULL AUTO_INCREMENT)
  3. wykonawca (VARCHAR) 255 // Nazwa wykonawcy
  4.  
  5. tabela 'utwory':
  6. id_utworu (INT(11) NOT NULL AUTO_INCREMENT)
  7. tytul_utworu (VARCHAR(255) NOT NULL)
  8. wykonawca (INT(11) / NOT NULL)
  9.  
  10. tabela 'prowadzacy':
  11. id_prowadzacego (SMALLINT(3) NOT NULL AUTO_INCREMENT)
  12. nazwisko_imie (VARCHAR(255) NOT NULL)
  13.  
  14. tabela 'notowanie_info':
  15. nr_notowania (SMALLINT(5) NOT NULL AUTO_INCREMENT) // tu tylko numer notowania
  16. prowadzacy (SMALLINT(3) NOT NULL) // id prowadzącego z tabeli 'prowadzacy'
  17. data_notowania (TIMESTAMP NOT NULL)
  18.  
  19. tabela 'notowanie':
  20. nr_notowania (SMALLINT(5) NOT NULL) // tylko liczba dodatnia
  21. aktualna_pozycja (SMALLINT(3) NOT NULL) // tylko liczba dodatnia max '100'
  22. pozycja_poprzednio (VARCHAR(3) NOT NULL) // liczba albo literka N
  23. ile_tygodni (VARCHAR(3) NOT NULL) // liczba albo literka N
  24. trend (VARCHAR(5)) // liczba z plusem lub minusem, myślnik, albo literka N
  25. utwor (INT(11) NOT NULL) // id utworu z tabeli 'utwory'
  26. glosy (INT(11)) // liczba głosów


Co o takiej strukturze sądzicie? Jest dobra czy za bardzo przekombinowana, a może o czymś zapomniałem, albo można to zrobić inaczej? Macie jakieś inne propozycje?