Şık veritabanı tasarımı yardım ...

3 Cevap php

Ben bir film sitesi inşa ediyorum ... Ben türler de dahil olmak üzere her film hakkında bilgi, aktörler, ve (IMDB.com gibi) bir sürü bilgi görüntülemek gerekir ...

I created a 'movies' table including an ID and some basic information. For the genres I created a 'genres' table including 2 columns: ID and genre. Then I use a 'genres2movies' table with two columns:movieID and the genreID, to connect between the genres and the movies tables...

Bir film 5 farklı türler varsa, bu şekilde, örneğin, ben the'genres2movies 'tablosunun 5 farklı satırlara MovieID olsun. Onun türün her bir film için her zaman dahil ama daha ...

Bunu yapmak için daha iyi bir yolu var mı??

Performans ve veritabanı boyutu gerçekten önemli olduğunu bu yüzden aktörler, dillerde ve ülkelerde de bunu yapmak gerekir.

Teşekkürler!

3 Cevap

Sen doğru yolda bulunmaktadır. Bu çok-çok ilişkileri yapmak yoludur. Tamsayılar kullanmak ve hız için bu kimlikleri için doğru dizin kurmak gerekir, çünkü veritabanı boyutu çok büyümek olmaz. Yaparken Select sorguları EXPLAIN check out - bu hız darboğazları bulmak için yardımcı olur.

Eğer şu anda uygun normalleştirme kurallarını aşağıdaki gibi, istediğiniz tam olarak ne olduğu, sesler.

Tablolar arasında JOIN beri Ancak, nispeten pahalı işlemler, performans önemli bir faktör olup olmadığını verilerin bazı bölümlerini de-normalize etmek isteyebilirsiniz bulabilirsiniz.

Genellikle doğru / tam normalleşme ve performans arasında bir trade-off

Tam olarak doğru yoldayız - Bu doğru, normalize, yaklaşımdır.

- Yani ben eklemek istiyorum tek şey birleştirme tablosunda (genres2movies) üzerinde indeks türü ve film id hem de içerir ve her iki yönde dizinleri tanımlamak için (kullanılan seçer bağlı olarak), genellikle değerli olduğundan emin olmaktır. İki endeksleri, sipariş tarz-id, film-id ve film-id, tarz-id. Bu da türe veya film seçin herhangi bir aralık ihtiyacı olan tüm verileri almak ve tam bir tablo taraması başvurmak zorunda, hatta tablo satırları kendilerini erişmek zorunda bir dizin kullanmak mümkün olacak sağlar.