MySQL: saklamak için nasıl / sanatçı bilgilerini almak?

2 Cevap php

Bu çok kafa karıştırıcı; Ben en az bir çok-çok ilişkisi olması gerekir gibi görünüyor.

  1. Bir parça 2 + sanatçı tarafından söylenen olabilir - nasıl saklayabilirsiniz ki veritabanında?
  2. Bu parçayı gösteren, kullanıcıların takip tıkladığınızda o sanatçının profil sayfası açılır, böylece ben her sanatçı link istiyorum.

Herkes bunu gerçekleştirmek için bir sınıf veya sınıfların tasarımında bazı yardımları ile bana sağlayabilir?

2 Cevap

Böyle bir şey deneyin

tblSongs
   SongId
   Title
   YearProduced
   etc.

tblArtist
   ArtistId
   Name
   ProfilePage
   etc..

tblSongArtists
    SongId
    ArtistId

Sonra sorgular gibi görünebilir

SELECT Title, YearProduced, Name, ProfilePage
FROM tblSongs  S
LEFT OUTER JOIN tblSongArtists SA ON SA.SongId = S.SongId
LEFT OUTER JOIN tblArtists A ON A.ArtistId = SA.ArtistId
WHERE Title = 'I got the blues'  -- ....
ORDER BY SongId  -- or Song Title  (*)

(*) order by clause is in case the search criteria produces more than one song, and if you wish to keep the artists for a given song in sequence.
Such a query produces multiple rows for a song with several artists, one row per artists, the values of the columns from tblSongs being repeated.

Herhangi bir çok-çok ilişkisi üç tablo gerektirir. Örnek için:

Song<br/> 
Name  SongID

Artist <br/>
Name  ArtistID

ArtistsInSongs <br/>
ArtistID SongID

Ben gerisini anlamaya izin vereceğim.