Php dizi olarak kaydetme?
Arkadaşlar php ile tek sutuna nasıl dizi olarak kaydedebilirim.
Örneğin;
likes adına bir sutunum var.
Beğeni yaptıkça 1,4,5,3,7,4,6 beğenen kişilerin id'lerini kaydettireceğim.
Cevap ile değil de yapmaya çalıştığın şeyle ilgili araştırmalarım olmuştu ve benimsediğiniz yaklaşımdan ziyade beğenilerin farklı bir tabloda saklanmasını daha uygun olduğu kanısına varmıştık.
Birden çok yorumu beğendiği bir sistemde, her kullanıcının beğendiği soruların ID'sini nasıl saklayacağınız, uygulamanın ihtiyaçlarına ve performans gereksinimlerine bağlıdır. Ancak, genellikle iki farklı yaklaşım kullanılır:
İlişkisel tablo kullanımı:
Bu yaklaşımda, her kullanıcının beğendiği her soru için bir satır saklandığı ayrı bir ilişkisel tablo oluşturulur. Bu tabloda, her satırda kullanıcının ID'si ve beğendiği sorunun ID'si yer alır. Bu yaklaşım, verilerin bütünlüğünü korur ve daha iyi performans sunar.
Örneğin, aşağıdaki gibi bir tablo yapısı kullanılabilir:
user_id question_id
1 | 10
1 | 15
2 | 10
2 | 20
Bu şekilde, kullanıcının beğendiği sorulara erişmek için basit bir SQL sorgusu kullanılabilir:
SELECT question_id FROM user_questions WHERE user_id = 1;
Bu sorgu, kullanıcının ID'si 1 olan soruların tüm ID'lerini döndürür.
Virgülle ayrılmış sütun kullanımı:
Bu yaklaşımda, sorular tablosuna bir sütun eklenir ve bu sütunda kullanıcının beğendiği tüm soruların ID'leri virgülle ayrılmış olarak saklanır. Bu yaklaşım daha basit bir tablo yapısı sunar, ancak verilerin bütünlüğü korunmaz ve performans sorunları ortaya çıkabilir.
Örneğin, aşağıdaki gibi bir tablo yapısı kullanılabilir:
id title liked_by
1 | Example question 1 | 1,2
2 | Example question 2 | 1
3 | Example question 3 | 2
Bu şekilde, kullanıcının beğendiği sorulara erişmek için bir SQL sorgusu kullanılabilir:
SELECT id, title FROM questions WHERE liked_by LIKE '%1%';
Bu sorgu, sorular tablosundaki tüm soruları tarayarak, "liked_by" sütununda kullanıcının ID'sinin geçtiği tüm kayıtları döndürür.
Sonuç olarak, veritabanı yapısının seçimi, uygulamanın özelliklerine ve performans gereksinimlerine bağlıdır. Ancak, genellikle ilişkisel tabloların kullanılması daha iyi bir seçim olacaktır, çünkü bu yöntem veri bütünlüğünü korur ve performans açısından daha iyidir.
Tabii örnekteki gibi LIKE değil de FIND_IN_SET() ile sorgulanıyor.