├── .gitignore ├── spotify.png └── spotify.puml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /spotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProgrammerZamanNow/studi-kasus-database-design-spotify-clone/1357c32371490ecb86a1d2254365869bb9ccaa20/spotify.png -------------------------------------------------------------------------------- /spotify.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | entity Artist { 3 | * id : VARCHAR 4 | -- 5 | * name : VARCHAR 6 | instagram : VARCHAR 7 | facebook : VARCHAR 8 | twitter : VARCHAR 9 | wikipedia : VARCHAR 10 | bio : TEXT 11 | } 12 | 13 | entity Album { 14 | * id : VARCHAR 15 | -- 16 | * title : VARCHAR 17 | * release : YEAR 18 | * image : VARCHAR 19 | } 20 | 21 | entity Song { 22 | * id : VARCHAR 23 | -- 24 | * album_id : VARCHAR 25 | * title : VARCHAR 26 | * duration : INT 27 | } 28 | 29 | entity PlaylistCategory { 30 | * id : VARCHAR 31 | -- 32 | * name : VARCHAR 33 | * image : VARCHAR 34 | * icon : VARCHAR 35 | } 36 | 37 | entity Playlist { 38 | * id : VARCHAR 39 | -- 40 | * name : VARCHAR 41 | description : TEXT 42 | image : VARCHAR 43 | category_id : VARCHAR 44 | * user_id : VARCHAR 45 | } 46 | 47 | entity PodcastCategory { 48 | * id : VARCHAR 49 | -- 50 | * name : VARCHAR 51 | * image : VARCHAR 52 | * icon : VARCHAR 53 | } 54 | 55 | entity Podcast { 56 | * id : VARCHAR 57 | -- 58 | * name : VARCHAR 59 | about : TEXT 60 | image : VARCHAR 61 | category_id : VARCHAR 62 | * user_id : VARCHAR 63 | } 64 | 65 | entity Episode { 66 | * id : VARCHAR 67 | -- 68 | * podcast_id : VARCHAR 69 | * title : VARCHAR 70 | description : TEXT 71 | published_at : DATE 72 | duration : INT 73 | } 74 | 75 | entity User { 76 | * id : VARCHAR 77 | -- 78 | * email : VARCHAR 79 | * name : VARCHAR 80 | birthday : DATE 81 | } 82 | 83 | entity Concert { 84 | * id : VARCHAR 85 | -- 86 | * event_at : DATETIME 87 | * url : VARCHAR 88 | * location : VARCHAR 89 | lon : DOUBLE 90 | lat : DOUBLE 91 | } 92 | 93 | Artist }|--|{ Album : Has 94 | Album ||--|{ Song : Contains 95 | Artist }|--|{ Song : Sing 96 | PlaylistCategory |o--|{ Playlist : Contains 97 | User ||--o{ Playlist : Create 98 | Playlist }o--o{ Song : Contains 99 | PodcastCategory |o--|{ Podcast : Contains 100 | User ||--o{ Podcast : Create 101 | Podcast ||--o{ Episode : Contains 102 | Artist }|--o{ Concert : Perform 103 | User }o--o{ Artist : Follow 104 | User }o--o{ Song : Liked Song 105 | User }o--o{ Playlist : Follow 106 | 107 | @enduml 108 | --------------------------------------------------------------------------------