Genel olarak bu şekilde yapmamalıyız. Sizin veritabanı normalized olmaz, ve o zor tarz alanında sorguları oluşturmak için yapmak istiyorum.
Bu artists
adında bir tablo olurdu daha iyi bir fikir olabilir, ve adında bir tablo genres
. Olur Sonra sadece bir artist_id
tutan hangi tablo, artists_genres
başka bir tabloda sanatçı ve türler arasındaki ilişkiyi tanımlamak ve bir genre_id
olur. Hala aynı sanatçının birden fazla türler olması mümkün olacaktır.
Aşağıda tanımlandığı gibi Örneğin, tablo yapısını göz önünde bulundurun:
TABLE artists
-------------
artist_id name surname
1 Alicia Keys
2 Mariah Carey
...
TABLE genres
------------
genre_id name
1 R&B
2 pop
3 hip hop
4 dance
...
TABLE artists_genres
--------------------
artist_id genre_id
1 1
1 2
1 3
2 1
2 2
2 4
...
Bu durumda, gibi basit sorguları oluşturmak mümkün olacaktır:
SELECT
artists.name, artists.surname
FROM
artists
INNER JOIN
artists_genres ON (artists_genres.artist_id = artists.artist_id)
INNER JOIN
genres ON (genres.genre_id = artists_genres.genre_id)
WHERE
genre.name = 'pop';
Yukarıdaki sanatçıların türler artists
tablodaki tek bir alanda depolanan durumunda elde etmek oldukça zor olacaktır. Ayrı zorluk, muhtemelen birçok kayıtları sahip olacak, özellikle, yavaş ve verimsiz olacaktır.