= Логички и физички дизајн - Креирање база податоци (со SQL DDL)
== Релациско мапирање
=== Ознаки
Примарните клучеви се означени со bold и underline '''__PK__'''
Надворешните клучеви се означени со '''FK*''' за кои во заграда '''()''' е напишана табелата која ја референцираат.
Задолжителните атрибути се '''болдирани.'''
=== Табели
1. Users ('''__user_id__, full_name, email, password, username, profile_photo''')
2. Non_Admin_Users ('''__user_id*(Users)__''')
3. Admins ('''__user_id*(Users)__''')
4. Listeners ('''__user_id*(Users)__''')
5. Musical_Entities ('''__id__, title , genre , release_date''')
6. Songs ('''__id*(!MusicalEntities)__, link''')
7. Artists ('''__user_id*(Users)__''')
8. Events ('''__event_id__, name, location, venue, date, time, user_id*(Users) ''')
9. Albums ('''__id*(!MusicalEntities)__''')
10. Playlists ('''__playlist_id__, name''')
11. Listens ('''__listener_id*(Listeners)__, __song_id*(Song)__, __timestamp__''')
12. Contributions('''__musical_entity_id__*(Musical_Entities), __artist_id__*(Artists), contribution_order''')
13. Roles('''__role_id__, name''')
=== DDL скрипта за бришење на табелите и креирање на табелите
[[html(schema_creation.sql)]]
=== DML скрипта за полнење на табелите со податоци
[[html(data_load.sql)]]
== Релациски дијаграм
[[Image(relational_schema_v4.png, 1400px)]]
== Историјат
[[html(Верзија 1)]] - Почетна верзија
[[html(Верзија 2)]]
- Додавање на атрибути за име, време и датум за секој настан, во табелата **events**
- Промена на полето `listen_count` во табелата **listens** со `timestamp`
[[html(Верзија 3)]]
- Замена на полето `creator_artist_id` и `creator_admin_id` со единствен `creator_id`
[[html(Верзија 4)]]
- Креирање на нова табели: `contributions`, `contribution_roles` и `roles` во замена за постоечката `artist_contributions`. Овозможено еден артист да има повеќе улоги во својот придонес за дадена песна, пр. да е и водечки вокал и гитарист.