Bir CMS için Veritabanı Tasarım hakkında düşünceler / Girdi

2 Cevap php

Ben kendi CMS işlevselliğini genişletmek için üzereyim ama o basit / düzenlemek veri türlerini ve değerlerini eklemek yapmak için veritabanını yeniden düşünüyordum.

Şu anda, CMS oldukça düz - CMS (elle oluşturulan) depolanan değeri her türü için veritabanında bir alan gerektirir.

(: Adres 1, Semt, E-posta Adresi vs yani) ve bu veri türlerinin her biri için değerleri tutan başka bir tablo akla gelen ilk seçenek, sadece veri türlerini tutan bir tablodur. Sadece Wordpress 'seçenekleri' tablosundaki değerler tutar nasıl severim, PHP serialize değerler dizisini saklamak için kullanılan olurdu.

İkinci seçenek CMS her veri türü için tablolar oluşturur, Drupal nasıl işliyor. Sipariş ve belirli bir değere göre gruplandırma zaman Wordpress aksine, bu bir bir overkill biraz ama SQL sorguları için gerçekten yararlı olabilir.

Herkesin düşünceleri nedir?

2 Cevap

Mümkünse Benim düşünceme göre, serileştirme kaçınmalısınız. Ilişkisel veritabanı ilişkisel olmalı ve böylece gibi yapılandırılmalıdır. Bu 'Drupal Yöntemi', örneğin içerir veri türü başına bir tablo. Bu da kolayca üzerine sorgulanan tr endeksli edilebilir bir anlamda veritabanı sağlıklı tutar.

Şimdi bilinmeyen gelecekte eklenecek farklı veri tiplerinin çok sayıda düşünmüyorsanız, bu gerçekten sana yardım edecek değildir ve abartılı olur. Eğer veri çok geniş tablolar ve delik bir sürü (rasgele NULL gibi görünüyor sütunlar yani çok) varsa, o belki de sadece belirli girdileri ait veriler için ayrı bir tablo var çığlık bir kalıptır.

Basit ve mantıklı tutun. Soyutlama uğruna soyut yok. Nitekim, tamsayıları saklamak depolama alanı ile ilgili olarak daha ucuz ama bu bir sorun olmadığı sürece bu durumda bunu yapmayın.