none
Veritabanı Oluştururken Fikir Almak RRS feed

  • Soru

  • Merhaba arkadaşlar bir projeye başlarken veritabanı oluşturuyorum. Bir yerde fikir almak istedim. Bir senaryoda Siparişler tablosu olacak ve bu tabloda Kiralama ve Dönüş Tarihi, Firma seçilecek, Ürünleri tablodan seçecek yani birden fazla ürün seçecek ve her birine ayrı fiyat koyup ekleyecek. Yani bir Firmaya birden fazla Ürün sipariş verebilecek. Buradaki yapım aşağıdaki gibi yaparsam bir sorun yaşar mıyım ?

    CREATE TABLE Siparisler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	KiralamaTarih datetime,
    	DonusTarih datetime,
    	Fiyat float,
    	Onay bit,
    	UrunID int references Urunler(ID),
    	ProjeID int references Projeler(ID)
    )

    13 Kasım 2016 Pazar 08:37

Yanıtlar

  • Anladım. O zaman sizin yaptığınız gibi Siparis detay seviyesinde UrunID ile birlikte vermeniz doğru olur... Sizin sisteminizi kendiniz tabi ki daha iyi tanırsınız. Ancak şu an görüldüğü kadarıyla tasarımınız uygun gözüküyor.

    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    • Yanıt Olarak İşaretleyen ali yılmaz 15 Kasım 2016 Salı 09:00
    15 Kasım 2016 Salı 08:59

Tüm Yanıtlar

  • firmalar tablosu oluşturup üstteki tabloya FirmaID diye bağlaman gerek.Bir siparişin hangi firmaya verildiğide önemli sonuçta.

    eneskarakara[at]gmail[nokta]com

    13 Kasım 2016 Pazar 23:32
  • Merhabalar,

    Birkaç konu dikkatimi çekti bunları belirteyim istedim.

    CREATE TABLE Siparisler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	KiralamaTarih datetime,
    	DonusTarih datetime,
    	Fiyat float,
    	Onay bit,
    	UrunID int references Urunler(ID),
    	ProjeID int references Projeler(ID)
    )
    -- Fiyat ürün bazlı bir kolon olduğu için Urunler tablosuna eklenmesi daha uygun olur. Siparis tablosunda Urun fiyatı yerine sipariş tutarı eklenmesi yeterlidir.
    
    -- Fiyat gibi sayısal değerleri tutmak için float veritipini kesinlikle kullanmayın. Yuvarlama ve karşılaştırma yaparken hatalı sonuçlar alabilirsiniz. decimal veya numeric tavsiye ederim.
    
    -- Firmalar tablosu eklenip Siparisler tablosu ile ilişkilendirilmelidir...
    Umarım faydalı olur...



    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    • Yanıt Olarak İşaretleyen ali yılmaz 14 Kasım 2016 Pazartesi 09:04
    • Yanıt İşaretini Geri Alan ali yılmaz 14 Kasım 2016 Pazartesi 09:04
    • Yanıt Olarak Öneren NScoder54 14 Kasım 2016 Pazartesi 19:04
    14 Kasım 2016 Pazartesi 07:28
  • Merhabalar,

    Birkaç konu dikkatimi çekti bunları belirteyim istedim.

    CREATE TABLE Siparisler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	KiralamaTarih datetime,
    	DonusTarih datetime,
    	Fiyat float,
    	Onay bit,
    	UrunID int references Urunler(ID),
    	ProjeID int references Projeler(ID)
    )
    -- Fiyat ürün bazlı bir kolon olduğu için Urunler tablosuna eklenmesi daha uygun olur. Siparis tablosunda Urun fiyatı yerine sipariş tutarı eklenmesi yeterlidir.
    
    -- Fiyat gibi sayısal değerleri tutmak için float veritipini kesinlikle kullanmayın. Yuvarlama ve karşılaştırma yaparken hatalı sonuçlar alabilirsiniz. decimal veya numeric tavsiye ederim.
    
    -- Firmalar tablosu eklenip Siparisler tablosu ile ilişkilendirilmelidir...
    Umarım faydalı olur...



    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    Teşekkürler bilgiler için. Fiyat verirken Ürün fiyatını veriyor fakat bunu manuel yapacağı için Sipariş verirken direk manuel girilmesi daha mantıklı olacağı için Sipariş tablosuna ekledim. Bir siparişe birden fazla ürün gireceği için tek tek girecekler. Bu yapı genel olarak doğru değil mi? 
    14 Kasım 2016 Pazartesi 09:07
  • Eğer bir siparişte birden fazla ürün sipariş edilebiliyorsa sipariş tablosunu 2 tabloya ayırarak tutmanızı tavsiye ederim. Birinci tablonuz sipariş genel tablonuz olur. Bu tabloda her bir siparişin genel bilgileri yer alır (tarih, toplam tutar vb.)

    İkinci tablonuz da siparişdetay tablonuz olur. Bu tabloda da her bir siparişe ait alt detayları tutmuş olursunuz.  (her bir siparişin alt kırılımında ürün bilgisi satır bazlı tutulmuş olur.)

    Bu iki tabloyu birbiri ile ilişkilendirip detay bilgiye ihtiyaç duyduğunuzda siparişdetay tablosundan genel siaprişlere ihtiyaç duyduğunuzda sipariş ana tablosundan erişmiş olursunuz. 

    Bu arada Ürün fiyatnını da bu durumda ürün tablosuna eklemiş olursunuz ilk başta konuştuğumuz gibi...

    Son olarak, float veritipinin kullanımı ve firma bilgisi ile ilgili konuları atlamamanızı tavsiye ederim. 

    Umarım faydalı olur...


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    14 Kasım 2016 Pazartesi 09:33
  • Teşekkürler dediğiniz gibi yapacak olursak Sipariş Tablom bu şekilde Ürünler Tablosuna Fiyat ekleyeceğim. Sipariş Detay tablosunda tam olarak hangi veriler olmalı.

    CREATE TABLE Siparisler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	KiralamaTarih datetime,
    	DonusTarih datetime,
    	Fiyat float,
    	Onay bit,
    	UrunID int references Urunler(ID),
    	ProjeID int references Projeler(ID)
    )

    14 Kasım 2016 Pazartesi 10:38
  • Rica ederim. İsterseniz şöyle özelteyeyim:

    Sipariş ana tablonuz için,

    Siparişlere ait ana bilgiler bulunmalı (siaprisID, SiparisTarihi, FirmaID, SiparisGenelTutari vb.)

    Siparis detay tablonuzda da;

    Her bir siparişin alt kalemleri - kırılımları bulunmalı (detayID, siparisID, Adet, urunID, indirimtutarı vb.)


    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    14 Kasım 2016 Pazartesi 14:35
  • Merhaba son olarak Tablo yapım bu şekilde yaptım.

    Bu yapı ile sorun yaşar mıyım? ProjeID ile FirmaID birbirine bağlı. Bir firmanın birden fazla projesi olduğu için.

    CREATE TABLE Urunler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	UrunAd nvarchar(100) NOT NULL,
    	ResimYol nvarchar(255),
    	Stok int,
    	Fiyat decimal,
    	Onay bit,
    	KatID int references Kategoriler(ID)	
    )
    
    CREATE TABLE Siparisler
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	KiralamaTarih datetime,
    	DonusTarih datetime,
    	ToplamFiyat decimal,
    	Onay bit,
    	
    )
    
    CREATE TABLE SiparisDetay
    (
    	ID int primary key IDENTITY(1,1) NOT NULL,
    	SiparisID int references Siparisler(ID),
    	UrunID int references Urunler(ID),
    	ProjeID int references Projeler(ID),
    	ElemanID int references Elemanlar(ID)
    )

    15 Kasım 2016 Salı 08:34
  • ElemanID ile sanırım o siparişi satan eleman bilgisini tutmak istiyorsunuz. Bu durumda bu kolonu siparisDetay tablosuna eklemek yerine (her bir siparişin alt kırılımlarını aynı kişi satıyorsa eğer) Siparisler tablosuna eklemeniz daha uygun olur...

    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    15 Kasım 2016 Salı 08:46
  • ElemanID her bir ürüne Eleman Yollanması gerekiyor veya gerekmiyor onun için var.  O zaman bu doğrultuda sizde olsanız tablo yapısını bu şekilde mi yapardınız.
    15 Kasım 2016 Salı 08:52
  • Anladım. O zaman sizin yaptığınız gibi Siparis detay seviyesinde UrunID ile birlikte vermeniz doğru olur... Sizin sisteminizi kendiniz tabi ki daha iyi tanırsınız. Ancak şu an görüldüğü kadarıyla tasarımınız uygun gözüküyor.

    Please Mark This As Answer if it solved your issue
    Please Vote This As Helpful if it helps to solve your issue
    www.abdullahaltintas.com

    • Yanıt Olarak İşaretleyen ali yılmaz 15 Kasım 2016 Salı 09:00
    15 Kasım 2016 Salı 08:59