MySQL tablo veya birçok MySQL veritabanı prefixing?

3 Cevap php

Yani, ilk şeylerden ilk, ben bir öğrenciyim. Ben diğer öğrencilere bir MySQL veritabanı erişimi olabilecek bir uygulama geliştiriyorum. Temelde, öğrencilere ev sahipliği hatta kendi bilgisayarlarında MySQL kurulumu için arama ihtiyacını yedek istedim. Başka bir artı onlar sadece bir web sitesinde gezinirken tarafından sınıfa çalışmalarını sunabileceği gerçektir. Yani, benim fikrim herkes için aynı veritabanını kullanır, ve öğrenciler için bir giriş sistemi eklemek oldu. Bu şekilde, her öğrenci için bir önek ilişkilendirmek olabilir ve sistem otomatik olarak sorguları tablo öneki çünkü onlar, o kişinin bir tablo ile çarpışacak olursa endişesi olmadan sorgu her türlü yürütebilirsiniz. Benim fikrim bir çözümleyici sert olmamalı ki, her kullanıcı ne kadar tablo ve satırları sınırlamak oldu. Mutlaka PHP bir ayrıştırıcı olması gerekmez, perl veya Python olabilir. PHP sadece daha uygundur. . NET çünkü Windows'un daha zahmetli olacaktır

Bu arada, "veritabanı sistemlerine giriş" her sınıf 50 civarında öğrencisi vardır ve 3. sınıflar vardır, bu yüzden yaklaşık 150 öğrenciye ulaşabilir ...

For example, SELECT * FROM employees has to become SELECT * FROM prefix_employees I do not know how the query will look like, it could get fairly complex so I'd probably need a well written parser, which I haven't found yet for PHP.

Teşekkürler çocuklar, ben kendimi açıkça umut

3 Cevap

Ne yazık ki, MySQL (AFAIK) değil schemas bazı diğer veritabanları (örneğin, PostgreSQL) (bir veritabanı içinde mantıksal içeriği (tablo, vs ..) ayrılarak için) onlara sahibiz.

Ama ben definitely ayrı veritabanları-senaryo için giderdim.

Bu işi yaparken içine bir zaman aşırı miktarda koymak için istekli olmadıkça ('önek Şeması' ile) ayrıştırıcı (istemeyerek ve de muhtemelen isteyerek) kırılmış olacak.

Ben doğrusu "bir veritabanı kullanıcı başına" yaklaşımı ile gitmek istiyorum. Bu çözüm (elle phpMyAdmin gibi bir araç kullanarak kullanıcılar / veritabanları oluşturmak, ya da sadece öğrencilerin kayıt olanak sağlayan kendi küçük yönetim paneli oluşturmak ya) bazı yönetim gerektirir, ama çok daha az gerektirir Tüm istekleri filtreleme daha sizden iş miktarı.

Bu şekilde, her öğrenci (bu phpMyAdmin ile otomatik olarak yapılabilir) tüm haklarına sahip olduğu aynı isimde tercihen bir veritabanı ile, onun giriş / parola vardır, ve diğer öğrencilerle birlikte takılmadan çalışabiliyor. Bazı olursa olsun ne kadar zor denemek ve ne kadar iyi niyetli, güvenliğinizi kırmaya çalışacağız sure olabilir. Farklı veritabanlarında kümeleme bir güncel sunucu ve karmaşık yeterli şifreleri korumak (ve bir "açık saklayın yoksa oldukça zor olacak, DB admin erişmek için çalışırken daha onlara hiçbir seçim bırakacaktır üniversite sunucu üzerinde "herkes tarafından okunabilir. txt dosyası.

Ayrıca, ayrı ayrı masalarda bakmak zorunda daha kolay tek tek her veritabanı disk alanı, kullanım, vs .. izlemek mümkün olacak.

Tam gereksinimlerine bağlı olarak, table permissions başka bir öğrencinin (veya inceleyen) verileri değiştirerek bir öğrenci önlemek için kullanmak mümkün olabilir. Hala öğrencilerin atanan öneki ile yeni bir tablo oluşturmak (ve uygun izinleri girişi oluşturmak) için izin vermek için bir süreç gerekir, ama sen (değil sadece yapmak zorunda değildir bu yüzden bir kez oluşturulur, DB tüm sorguları aracılığıyla erişimini denetleyecek ) Öğrenci hesapları doğrudan tabloları değiştirmek / oluşturmak için izin.

Kota gelince, ben MySQL doğrudan bir kota sistemini destekleyen farkında değilim ama ayrı bir dizinde her kullanıcı için tabloları geri ve disk alanı kullanımını sınırlamak için OS seviyesi kota sistemleri kullanan dosyaları oluşturabilirsiniz.