Mysql
 sql >> база данни >  >> RDS >> Mysql

Проучване на моделиране на данни (как да хвърлите една разумна база данни заедно)

Изненадан, повечето отговори изглежда са пропуснали въпроса, но ще опитам това;

Това се нарича моделиране на данни (как обединявате куп таблици в база данни, за да изразите това, което искате по най-добрия възможен начин), и не се чувствайте глупаво да питате; има хора, които прекарват всичките си будни часове в настройване и проектиране на модели на данни. Те са изключително важни за благосъстоянието на всяка система и всъщност са много по-важни, за които повечето хора им приписват.

Изглежда, че сте на прав път. Винаги е добър съвет да дефинирате вашите обекти и да създадете таблица за всеки, така че в този случай имате потребители и плейлисти и песни (например). Определете таблиците си по този начин; ПОТРЕБИТЕЛ, ПЕСЕН, ПЛЕЙЛИСТ.

Следващото нещо е дефиниране на имената на полета и таблици (и може би опростените имена, предложени по-горе, са опростени). Някои въвеждат фалшиви пространства от имена (т.е. 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). Ще има много мнения, особено за това, което съм написал тук. Успех.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySqlException:Времето за изчакване е изтекло - Увеличаването на времето за изчакване на връзката няма ефект

  2. MySQL 8 вложен избор с брой

  3. MySQL INSERT else, ако съществува UPDATE

  4. Вложени коментари в PHP и MySQL

  5. Пряк път за актуализиране на ред на таблица в базата данни?