Deneyin!
Veritabanları ve web uygulamaları, işinizle ilgili önemli avantajlar sağlayabilir. Çalışan bilgilerini yönetme, veriler için haftalık raporlar sağlama veya müşteri siparişlerini takip etme gibi hedeflerinize ulaşmak için veritabanı tasarımı önemli bir aşamadır. Veritabanı tasarımını anlamak için zaman ayırmak, ilk andan itibaren doğru çalışan ve değişen ihtiyaçlara ayak uydurabilen veritabanları oluşturmanıza yardımcı olur.
Önemli
Access web uygulamaları, masaüstü veritabanlarından farklıdır. Bu makalede web uygulaması tasarımı ele alınmamıştır.
Kavramlar ve terimler
Bazı temel terimleri ve kavramları öğrenerek başlayalım. Kullanışlı veritabanları tasarlamak için, tek bir konuya odaklanan tablolar oluşturmanız gerekir. İlgili konu için gerekli olan tüm verileri tablolarınızda, mümkün olan en küçük veri birimini barındıran alanlar halinde tutarsınız.
| İlişkisel veritabanları | Verilerin, elektronik tablolar gibi tablolara bölündüğü bir veritabanı. Her tablonun tek bir konusu vardır. Örneğin, müşteriler için bir tablo veya ürünler için bir tablo. |
|---|---|
| Kayıtlar ve alanlar | Tablodaki ayrık veriler için depolama. Satırlar (veya kayıtlar), müşteri adı gibi her benzersiz veri noktasını depolar. Sütunlar (veya alanlar) her veri noktası hakkında tutulan bilgiyi mümkün olan en küçük birimlere ayırır; ad bir sütun, soyadı ise başka bir sütun olabilir. |
| Birincil anahtar | Her kaydın benzersiz olmasını sağlayan bir değerdir. Örneğin, adı Elif Yıldız olan iki müşteriniz olabilir. Ancak birinin kaydının birincil anahtarı 12 iken, diğerininki 58 olabilir. |
| Üst-alt ilişkileri | Tablolar arasında genel ilişkiler. Örneğin, tek bir müşterinin birden fazla siparişi olabilir. Ana tabloların birincil anahtarları vardır. Alt tabloların ise alt tablo kayıtlarının ana tabloya nasıl bağlı olduğunu gösteren, birincil anahtardan gelen değerlerden oluşan yabancı anahtarları vardır. Bu anahtarlar bir ilişki ile birbirlerine bağlıdır. |
İyi veritabanı tasarımı nedir?
İyi veritabanı tasarımı için temel iki ilke şunlardır:
- Yinelenen bilgilerden kaçının Gereksiz veriler olarak da bilinen bu tür bilgiler, alanı boşa harcar ve hata olasılığını artırır.
- Verilerin doğruluğundan ve tam olduğundan emin olmak. Eksik veya hatalı bilgiler; sorgu ve raporlarda yer alabilir ve hatalı kararlar verilmesine neden olabilir.
Bu sorunları çözmek için:
- Veritabanı bilgilerini konuya göre dar odaklı tablolara bölün. Bilgileri birden fazla tabloda çoğaltmaktan kaçının. (Örneğin, müşteri isimleri yalnızca bir tabloda bulunmalıdır.)
- Verileri çoğaltmak yerine anahtarları kullanarak tabloları birleştirin.
- Veritabanındaki bilgilerin doğruluğunu ve bütünlüğünü destekleyip sağlayan işlemleri ekleyin.
- Veritabanınızı veri işleme ve raporlama gereksinimlerinize uygun olarak tasarlayın.
Veritabanlarınızın daha uzun bir süre boyunca kullanılmasını sağlamak için bu beş tasarım adımını uygulayın:
1. Adım: Veritabanınızın amacını belirleme
Başlamadan önce veritabanınız için bir hedef belirleyin.
Daha fazla ayrıntı
Tasarımınızın odaklanmış olmasını sağlamak için veritabanının amacını özetleyin ve bu özete sık sık başvurun. Örneğin ev ofis biçimindeki işletmeniz için küçük bir veritabanı istiyorsanız, şöyle bir şey yazabilirsiniz: “Müşteri veritabanında posta ve rapor oluşturma amaçlı müşteri bilgileri listesi bulunuyor.” Kurumsal bir veritabanı için farklı rollere sahip kişilerin veritabanını ve veritabanındaki verileri ne zaman ve nasıl kullanacağını açıklayan birden fazla paragrafa ihtiyacınız olabilir. Tasarım işlemi sırasında başvurmak için net ve ayrıntılı bir hedef tanımı oluşturun.
2. Adım: Gerekli bilgileri bulma ve düzenleme
Kaydetmek istediğiniz ürün adı ve sipariş numaraları gibi tüm bilgi türlerini toplayın.
Daha fazla ayrıntı
Mevcut bilgilerinizi ve izleme yöntemlerinizi kullanarak başlayın. Örneğin, şu anda satın alma siparişlerini bir deftere kaydediyor veya müşteri bilgilerini kağıt formlarda tutuyor olabilirsiniz. Bu kaynakları kullanarak şu anda topladığınız bilgileri listeleyin (örneğin formlarınızdaki bütün kutular). Şu anda toplamadığınız önemli bilgiler konusunda, hangi ayrık bilgilere ihtiyacınız olduğunu düşünün. Her veri türü veritabanınızda bir alan olur.
İlk listenizi mükemmel yapmaya çalışmayın. Zamanla ayrıntılı düzeltmeler uygulayabilirsiniz. Ancak bu bilgileri kullanan tüm kişileri göz önünde bulundurun ve fikirlerini isteyin.
Sonra, veritabanından ne istediğinizi, hangi tür rapor veya postalar üretmek istediğinizi düşünün. Ardından, bu amaçları karşılayan bilgileri topladığınızdan emin olun. Örneğin, bölgeye göre satışları gösteren bir rapor oluşturmak istiyorsanız, satış verilerini bölge düzeyinde toplamalısınız. Gerçek bilgiler kullanarak raporun görmek istediğiniz şekildeki bir taslağını oluşturmaya çalışın. Ardından, raporu oluşturmak için ihtiyacınız olan verileri listeleyin. Veritabanından istediğiniz posta veya diğer çıktılar için de aynı işlemi yapın.
Örnek
Müşterilere düzenli e-posta güncelleştirmelerini kabul etme (veya geri çevirme) izni verdiğinizi ve kabul eden kişilerin bir listesini yazdırmak istediğinizi varsayalım. Müşteri tablosunda Evet ve Hayır değerleri bulunan bir E-posta Gönder sütunu olması gerekir.
E-posta almak isteyen kişiler için bir e-posta adresine ihtiyacınız vardır, bu da bir alan gerektirir. Uygun bir selamlama eklemek isterseniz (örn. Sayın, Bay veya Bayan) Selamlama alanı ekleyin. Müşterilerinize e-postalarda adlarıyla hitap etmek isterseniz Ad alanı ekleyin.
İpucu
Her bilgi parçasını, bir müşteri tablosundaki ad ve soyadı gibi küçük bölümlere ayırmayı unutmayın. Genel olarak, bir bilgi öğesine (örn. müşterinin soyadına) göre sıralamak, aramak, hesaplamak veya raporlamak isterseniz bu öğeyi kendi alanına koymalısınız.
3. Adım: Bilgileri tablolara bölme
Bilgi öğelerinizi ürünler, müşteriler ve siparişler gibi ana varlıklara veya konulara ayırın. Her konu bir tablo olur.
Daha fazla ayrıntı
Gerekli bilgilerin listesini oluşturduktan sonra verilerinizi düzenlemeniz gereken ana varlıkları (veya konuları) belirleyin. Varlıklar arasında verileri çoğaltmaktan kaçının. Örneğin, bir ürün satış veritabanının listesi başlangıçta şöyle görünebilir:
Ana varlıklar şunlardır: müşteriler, tedarikçiler, ürünler ve siparişler. Bu nedenle ilk önce bu dört tabloyla çalışmaya başlayın: müşterilerle ilgili bilgiler için bir tablo, tedarikçilerle ilgili bilgiler için bir tablo daha ve diğerleri. Bu tasarımınızın son hali olmayabilir, ancak iyi bir başlangıçtır.
Not
En iyi veritabanları birden fazla tablo içerir. Tüm bilgilerinizi tek bir tabloya koymaktan kaçının. Bu, yinelenen bilgilere, büyük veritabanı boyutlarına ve çok sayıda hataya yol açar. Her bilgiyi bir kez kaydedecek şekilde tasarlayın. Tedarikçi adresi gibi bir bilginin tekrarlandığını görürseniz, bu bilgiyi ayrı bir tabloya koymak için veritabanınızı yeniden yapılandırın.
Birden çok tablo kullanmanın az sayıda tablo kullanmaktan daha iyi olmasının nedenini anlamak için şu tabloyu inceleyin:
Her satırda hem ürün hem de tedarikçisi hakkında bilgi bulunuyor. Aynı tedarikçinin birçok ürünü olabileceğinden, tedarikçi ad ve adres bilgilerinin birkaç kez tekrarlanması gerekir. Bu işlem gereksiz yer kullanır. Bunun yerine, tedarikçi bilgisini ayrı bir Tedarikçiler tablosuna yalnızca bir kez kaydedin ve bu tabloyla Ürünler tablosu arasında bir bağlantı oluşturun.
Bu tasarımla ilgili diğer bir sorun ise tedarikçiyle ilgili bilgileri değiştirmeniz gerektiğinde ortaya çıkar. Bir tedarikçinin adresini değiştirmeniz gerektiğini varsayalım. Bu bilgi birçok yerde bulunduğundan, adresi bir yerde değiştirip diğer yerlerde değiştirmeyi unutabilirsiniz. Tedarikçinin adres bilgisini tek bir yerde kaydetmek bu sorunu çözer.
Son olarak, Coho Winery tarafından sağlanan tek bir ürün olduğunu ve ürünü silmek, ancak sağlayıcının ad ve adres bilgilerini saklamak istediğinizi varsayalım. Bu tasarımla, sağlayıcının bilgilerini kaybetmeden ürün kaydını nasıl silersiniz? Silemezsiniz. Çünkü her kayıtta hem ürünle ilgili hem de sağlayıcıyla ilgili birçok bilgi bulunduğundan, birini silmek yerine diğerini silmek mümkün değildir. Bu bilgileri ayrı tutmak için, bu tabloyu ikiye bölün: birincisi ürün bilgileri ve ikincisi de sağlayıcı bilgileri için. Ardından, bir ürün kaydını sildiğinizde, yalnızca ürünle ilgili bilgileri silersiniz; sağlayıcıyla ilgili bilgileri silmezsiniz.
4. Adım: Bilgi öğelerini sütunlara dönüştürme
Her tabloda hangi bilgileri depolamanız gerektiğine karar verin. Bu ayrık veri parçaları, tabloda alanlar haline gelir. Örneğin, bir Çalışanlar tablosu Soyadı, Ad ve İşe Giriş Tarihi gibi alanlar içerebilir.
Daha fazla ayrıntı
Veritabanı tablosu için bir konu seçildikten sonra, tablodaki sütunlar yalnızca o konu hakkında bilgi depolamalıdır. Örneğin, bir ürün tablosunda tedarikçi bilgileri değil, yalnızca ürün bilgileri bulunmalıdır.
Tabloda hangi bilgiyi izleyeceğinize karar vermek için önceden oluşturduğunuz listeyi kullanın. Örneğin, Müşteriler tablosunda şunlar bulunabilir: Ad, Soyadı, Adres, E-posta Gönder, Selamlama ve E-posta Adresi. Tablodaki her kayıt (müşteri) aynı sütun kümesine sahiptir, böylece her müşteri için aynı türden bilgiyi depolarsınız.
İlk listenizi oluşturun, ardından gözden geçirin ve düzeltin. Bilgileri mümkün olan en küçük alanlara bölmeyi unutmayın. Örneğin, ilk listenizin alanı Adres ise, bu listeyi Sokak Adresi, Şehir, İlçe, Posta Kodu olarak bölün. Dünya çapında müşterileriniz varsa alan sayınızı artırabilirsiniz. Bu şekilde, örneğin, postaları uygun formatta yapabilir veya siparişleri eyalete göre raporlayabilirsiniz.
Her tablodaki sütunları iyileştirdikten sonra, tabloların birincil anahtarlarını seçebilirsiniz.
5. Adım: Birincil anahtarları belirtme
Her tablonun birincil anahtarını seçin. Birincil anahtar, Ürün Kimliği veya Sipariş Kimliği gibi her kaydı benzersiz bir şekilde tanımlar. Belirgin ve benzersiz bir tanımlayıcınız yoksa, Access’in sizin yerinize bir anahtar oluşturmasını sağlayın.
Daha fazla ayrıntı
Her tablodaki her satırı benzersiz bir şekilde tanımlamak için bir yol bulmalısınız. İki müşterinin de aynı ada sahip olduğu örneği hatırlıyor musunuz? Adları aynı olduğundan ikisini ayırt etmek için bir yol bulmanız gerekiyordu.
Bu yüzden her tablo, her satırı benzersiz bir şekilde tanımlayan sütun (veya sütunlar kümesi) içermelidir. Bu birincil anahtar olarak adlandırılır ve bu anahtar genellikle çalışan kimlik numarası veya seri numarası gibi benzersiz bir numaradır. Access, birincil anahtarları, birden çok tablodan aldığı verileri hızla ilişkilendirmek ve verileri sizin için bir araya getirmek için kullanır.
Bazen birincil anahtar iki veya daha fazla alandan oluşur. Örneğin, siparişlerin satır öğelerini depolayan Sipariş Ayrıntıları tablosu birincil anahtarında şu iki sütunu kullanıyor olabilir: Sipariş No ve Ürün Kimliği. Birincil anahtar birden çok sütun kullanıyorsa, buna bileşik anahtar da denir.
Tablodaki bilgiler için, kataloğunuzdaki her ürünü benzersiz bir şekilde tanımlayan ürün numarası gibi benzersiz bir tanımlayıcınız varsa ve değerler şu birincil anahtar kurallarını karşılıyorsa bunu kullanabilirsiniz:
- Tanımlayıcı her zaman her kayıt için farklı olacaktır. Birincil anahtarda yinelenen değerler kullanılamaz.
- Bir öğe için her zaman bir değer vardır. Tablonuzdaki her kaydın birincil anahtara sahip olması gerekir. Anahtarı oluşturmak için birden fazla sütun kullanıyorsanız (örn. Parça Ailesi ve Parça Numarası), değerlerin ikisi de mevcut olmalıdır.
- Birincil anahtar değişmeyen bir değerdir. Anahtarlara diğer tablolarda da başvurulduğundan, bir tabloda birincil anahtarın değişmesi, anahtarın başvurulduğu diğer yerlerde de değişeceği anlamına gelir. Sık yapılan değişiklikler hata riskini artırır.
Belirgin bir tanımlayıcınız yoksa, birincil anahtar olarak rastgele, benzersiz bir numara kullanın. Örneğin, her siparişe, siparişi kolayca tanımlayabilmek için benzersiz bir sipariş numarası verebilirsiniz.
İpucu
Birincil anahtar olarak benzersiz bir numara oluşturmak için, Otomatik Sayı veri türünü kullanarak bir sütun ekleyin. Otomatik Sayı veri türü otomatik olarak her kayıt için benzersiz sayısal bir değer atar. Bu tür bir tanımlayıcı, temsil ettiği satırı açıklayıcı türde bir bilgi içermez. Birincil anahtar için ideal olan budur çünkü telefon numarası veya müşteri adı gibi satır hakkında bilgiler içeren bir birincil anahtarın aksine, numaralar değişmez.