En iyi yanıtlayıcılar
Veritabanı Oluştururken Fikir Almak

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) )
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
Tüm Yanıtlar
-
-
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
-
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 -
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 -
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) )
-
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 -
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) )
-
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 -
-
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