Sütun adı adlandırma kuralları ve en iyi uygulamalar


19

Sütun adlandırma söz konusu olduğunda en iyi uygulamalar hakkında uzman görüşü almak istiyorum .

Arka plan Wikipedia'ya göre , aşağıdaki sözdizimi,

SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID);

daha verimli

SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID);

Ancak, JOIN ... USINGsözdizimi yalnızca tüm birincil anahtar sütunlarının işlerinde genel olarak benzersiz adlara sahiptir . Bu yüzden bunun doğru şey olarak kabul edilip edilmediğini merak ediyorum.

Şahsen, her zaman PK sütunu idve yabancı anahtar sütunu ile tablolar oluşturdum othertable_id. Ancak bu şekilde USINGveya kullanmak mümkün değildir NATURAL JOIN.

Masa tasarımına yönelik tasarım stillerine veya en iyi uygulama kılavuzlarına herhangi bir bağlantı da takdir edilecektir!


3
Wikipedia yanlış. İlk versiyon hiçbir şekilde ikincisinden daha verimli değildir. Başlık altında veritabanı mutlak özdeş sorgular oluşturur
a_horse_with_no_name

Yanıtlar:


13

Bu SO üzerinde daha önce sorulmuştur.

Yaygın ve çok belirsiz isimleriniz varsa tablo adının önüne ön ek uygulayın. Yani, neredeyse her sorguda takma ad yapmak zorunda olduğunuz her şey.

Yani bir Çalışan masası için

EmployeeID
EmployeeName
Comment
Salary
StartDate
EndDate
InsertedDateTime
...

Ve Wikipedia aslında şöyle diyor:

Bununla birlikte, USING yapısı sadece sözdizimsel şekerden daha fazlasıdır, çünkü sonuç kümesi, açık yüklemli sürümün sonuç kümesinden farklıdır. Özellikle, KULLANIM listesinde belirtilen sütunlar, birleştirmedeki her tablo için bir kez değil, yalnızca bir kez, niteliksiz bir adla görünür.

Bu daha az sütun. Asla kullanmazsın, SELECT *bu yüzden nokta tartışmalı ...


SO - aptalca beni aramayı düşünmemiştim. Özellikle iyi SO sorularına bağlantılarınız var mı? Her neyse, teşekkürler, bundan böyle "benzersiz kimlik" ismine bağlı kalacağım!
Kerrek SB

@Kerrk SB: aslında bilmiyorum. Onları görmezden gelme eğilimindeyim çünkü her biri hızlı bir şekilde cevaplanıyor veya kapanıyor :-) Üzgünüz
gbn

Birisi bir bağlantı kazabilir eğer SO, benzer soruları görmek istiyorum. Buraya geldim çünkü orada bir soru bulamadım ve zaten sorulmuş olduğundan emindim. Bu soruyu hemen buldum.
Nicholas Shanks

Programcılardaydı. Sizin için güzel bir büyük topuz savaşı ... programmers.stackexchange.com/questions/114728/…
gbn

6

Kitabın ardından kimliği bir SQL antipattern olarak kullanma hakkında konuşuyor ve ben onun yazarı ile gree. http://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557/ref=sr_1_1?s=books&ie=UTF8&qid=1330025134&sr=1-1

Bu, karmaşık raporlama yaparken belirli bir sorundur ve daha sonra diğer adınız olması gerektiğinden birden fazla kimliğe ihtiyaç duyarsınız. Tablename ID kullanmak, katılmak için doğru FK'nin tanımlanmasını kolaylaştırır (aynı ada sahip oldukları için) ve hataların yanlış şeye katılma olasılığını azaltır.

Bununla birlikte, birçok veritabanı, bu veritabanları için bir sorun yaratmadığınız sorunu kullanan KULLANIM sözdizimini desteklemez.Not, katılmalarına rağmen herhangi bir şekilde kullanmayı önermediğim doğal bir birleşimi kullanarak pek çok veritabanı desteği yapmaz. tablo yapıları değişirse. Her iki tabloya, modifiyedate adında bir alan eklediğinizi varsayalım, buna katılmak istemezsiniz, ancak doğal birleştirme bunu yapar.


4

Çalışanlar gibi tablo adını ve sütun adını açıkça belirtmek daha iyidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.