2008-11-27 11 views
10

Çalışma grubumuzdaki geliştirme ekibindeki tablolar, sütunlar, yordamlar vb. Adlandırma kurallarına karar veriyoruz. Tekil çoğul tablo zaten karar verildi, tekil kullanıyoruz. Her bir tablo adı için bir önek kullanılıp kullanılmayacağını tartışıyoruz. Bir önek kullanmayla ilgili önerileri okumak istiyorum ve neden.Veritabanı tablo adlandırma kurallarımızda önekler kullanmalı mıyız?

Hiçbir güvenlik sağlamaz (olası bir davetsiz misafir için en az bir engel daha)? Bence bunları bir önek ile isimlendirmek genellikle daha rahat olur, kodda bir tablo adı kullanıyorsak, onları değişkenler, öznitelikler vb. Ile karıştırmamak için. Ama daha deneyimli geliştiricilerin fikirlerini okumak isterim.

cevap

8

Uygulamaların veya çözümün kısa adıyla tabloları ve diğer veritabanı nesnelerini önek kullanmayı tercih ederim.

Bu akla bahar iki potansiyel durumlarda yardımcı olur: Eğer uygulama veritabanında tabloları gerektiren herhangi bir üçüncü taraf çerçeve bileşenlerini kullanmayı tercih eğer çatışmaları adlandırma almak için daha az olasıdır

  1. (örn asp net üyelik sağlayıcısı).

  2. Müşteriler için çözümler geliştiriyorsanız, tek bir veritabanında birden çok uygulama için veritabanı nesnelerinin saklanmasını gerektiren tek bir veritabanıyla sınırlı olabilir (özellikle dış barındırma için ödeme yapıyorlarsa).

+1

tablo adlarını önek hakkında bilmeniz gereken tek bazı tablolar bu durumda, orijinal önek yanıltıcı olur, birden çok uygulama tarafından kullanılıyor sona olabilmesidir. En kötü durumda, App1 kendisi dodo yolunda gitmişti sonra App1 öneki uzun süre hayatta kalır. –

+6

Uygulama adlarını önek, değer eklemiyor. 1. 3. parti bileşenleri, uygulama tablolarınızla aynı şema/sahip altından başlamamalı ve adlandırma çakışmaları ilk sırada yer almalıdır. 2. Tek bir veritabanına sınırlı olmak, tek bir şema ile sınırlı değildir. –

+1

@AmitNaidu Katılıyorum. Bu soruyu yayınladığımdan beri beş yıl içinde fikrimi tamamen değiştirdim. Yapabilseydim, cevabı silerdim. –

2

SqlServer kullanıyorsanız, iyi bir başlangıç, bazı yönlendirme için sağlanan örnek veritabanlarına bakmak olacaktır.

-4

Tablo adlarınızı karıştırmayla ilgili endişeleriniz varsa, kodunuzda bir macun notasyonu stil sistemi kullanın. Belki tablo adı için dize + "tn" için "s":

Elbette
stnUsers = 'users'; 
stnPosts = 'posts'; 

, önek, size kalmış kodunuzu gibi komutunu girin ... strtblUsers, strtblnmeUsers, thisisthenameofatableyouguysUsers...

bir önek ekleme tablo isimlerine bazı avantajları vardır, özellikle bu öneki sisteme sabitlemezseniz ve kurulum başına değişmesine izin verirseniz. Birincisi, Ian'ın dediği gibi, diğer bileşenlerle daha az çatışma riski taşıyorsunuz ve ikincisi, dilerseniz programınızın iki veya daha fazla örneğini aynı veritabanından çalıştırabilirsiniz. Onlar masa adlarını listelemek ve görmeyi seçmek için izinleri kesinlikle olacak

8

herhangi adlandırma kuralı güvenliğini artırmak nasıl görmüyorum ...

bir yabancının (zararlı izinlerle) veritabanına erişimi varsa Ne için kullanılıyorlar.

Ancak, gerçekten kafa karıştırıcı tablo adlarının güvenliği dolaylı olarak kötüleştirebileceğini düşünüyorum. Bu giderilecektir böylece şans güvenlik sorunları azaltarak, sert daha da geliştirilmesi yapacak, ya da daha olası sorunları gizlemek olabilir: 'sro235onsg43oij5' (örneğin) adında bir tablo rastgele dizeleri ile rastgele adlandırılmış sütunlu dolu ise

ve rakamlar, yeni bir geliştirici sadece rastgele test verilerini (onunla etkileşime giren kodu dokunmadığı sürece) düşünebilir, fakat eğer 'userpasswords' veya benzeri bir geliştiriciye isimlendirilmişse, masaya bakan herhangi bir geliştirici parolaların muhtemelen düz metin içinde saklanır.

+0

Davetsiz misafir sadece sınırlı bir SQL Enjeksiyon saldırısı yapabilirse, o zaman masa isimlerini listeleyebileceklerinden emin olamaz. Bunu söyledikten sonra - bu oldukça zayıf ek güvenlik önlemi olacaktır (ve güvenlik için asla kullanılmamalıdır). – niico

24

Doğrusu can sıkıcı onların türlerini belirtmek için Macar DB nesne önekleri bulabilirsiniz.

Her tablo adı "tbl" ile başlamak zorunda yerlerde çalıştık. Her durumda, adlandırma kuralı, sonunda, bir başkasının küçük bir değişiklik yapması gerektiğinde çok fazla acıya neden oldu.

Örneğin, eğer toplantınız "tbl" ile başlıyorsa ve görünümler "v" ile başlıyorsa, bir tabloyu arka plandaki diğer şeylerle değiştirmeye karar verdiğinizde yapmanız gereken en doğru şey nedir? uyumluluk için veya hatta tercih edilen arayüz olarak görüntüle? "Tbl" ile başlayan görüşlere sahip olduk.

+7

Zaten bugün eskimiş olan bütün macarca kavramı buluyorum. Sanırım bir şeyleri organize etmenin zor olduğu günlerden sadece birkaçıydı ve bazen bir nesnenin adı tek ayırt edici işaretti. – Chris

+0

Varsayılan şema ya kullanılmadığı ya da ayarlanmadığı sürece size katılıyorum düşünüyorum. 'MyTable', '[dbo] .MyTable', 'dbo.MyTable', 'MyDatabase..MyTable', 'MyDatabase .. [MyTable]', vb. Olduğunda kullanımları aramak çok daha zor. Aynı veritabanı içindeki diğer şemalardaki diğer nesneler aynı ada sahip olduğunda bu durum giderek daha da zorlaşır. – tuespetre

2

Neden kodlama için yerinde var yönergelere göre tablo adı değil? Tablo adını bir "sınıf" ve sütunları "özellik" veya "alan" olarak kabul edin. Bu, sınıf/üye adlandırmadan tablo/sütun adlandırma otomatik olarak çıkaran bir ORM kullanırken yardımcı olur. Örneğin

, Castle ActiveRecord, aşağıda assumes the names are the same onlar üzerinde üyesi olarak böyle ilan etti.

[ActiveRecord] 
public class Person 
{ 
    [PrimaryKey] 
    public Int32 Id { get; set; } 

    [Property] 
    public String Name { get; set; } 
} 
0

Geçmişte, tablo adlarındaki ve sütun adlarındaki önekleri kullanmaya karşıyım. Bununla birlikte, bir sistemi yeniden tasarlama göreviyle karşı karşıya kaldığında, öneklerin bulunması arama yapmak ve değiştirmek için çok değerlidir. Örneğin, "tbl_product" için grepping muhtemelen "ürün" için greppingten çok daha alakalı sonuçlar verecektir.