Изненадан, повечето отговори изглежда са пропуснали въпроса, но ще опитам това;
Това се нарича моделиране на данни (как обединявате куп таблици в база данни, за да изразите това, което искате по най-добрия възможен начин), и не се чувствайте глупаво да питате; има хора, които прекарват всичките си будни часове в настройване и проектиране на модели на данни. Те са изключително важни за благосъстоянието на всяка система и всъщност са много по-важни, за които повечето хора им приписват.
Изглежда, че сте на прав път. Винаги е добър съвет да дефинирате вашите обекти и да създадете таблица за всеки, така че в този случай имате потребители и плейлисти и песни (например). Определете таблиците си по този начин; ПОТРЕБИТЕЛ, ПЕСЕН, ПЛЕЙЛИСТ.
Следващото нещо е дефиниране на имената на полета и таблици (и може би опростените имена, предложени по-горе, са опростени). Някои въвеждат фалшиви пространства от имена (т.е. MYAPP_USER вместо само USER), особено ако знаят, че моделът на данни ще се разшири и разшири в същата база данни в бъдеще (или някои, защото знаят, че това е неизбежно), докато други просто ще пробиват каквото им трябва.
Големият въпрос винаги ще бъде за нормализиране и различни проблеми около това, балансиране между производителността и приложимостта, и има тонове и тонове книги, написани по тази тема, така че няма начин да ви дам някакъв смислен отговор, но същността на това за мен е;
В кой момент полето с данни в таблица ще бъде достойно за собствената си таблица? Пример е, че бихте могли да създадете своето приложение само с една таблица, две или 6 в зависимост от това как искате да разделите данните си. Тук мисля, че въпросът ви наистина идва.
Бих казал, че сте почти прав в предположенията си, нещото, което трябва да имате предвид, е последователните конвенции за именуване (и има много мнения за това как да наименувате идентификатори). За вашето приложение (с таблиците, споменати по-горе), бих направил;
USER { id, username, password, name, coffee_preference }
SONG { id, artist, album, title, genre }
PLAYLIST { id, userid }
PLAYLIST_ITEM { id, songid, playlistid, songorder }
Сега можете да използвате SQL, получавате всички плейлисти за потребител;
SELECT * FROM PLAYLIST WHERE userid=$userid
Или вземете всички песни в плейлист;
SELECT * FROM SONG,PLAYLIST_ITEM WHERE playlist_item.playlistid=$playlist.id AND song.id=playlist_item.songid ORDER BY playlist_item.songorder
И така нататък. Отново по тази тема са написани томове. Всичко е за мислене ясно и семантично, докато записвате техническо решение за него. И някои хора имат само това като кариера (като DBA). Ще има много мнения, особено за това, което съм написал тук. Успех.