2016-04-04 33 views
0

POS benzeri bir sistem oluşturuyorum ve Kasiyer tüm müşterinin ürününe girdikten sonra (Envanter'den) Alışveriş Sepeti kısmını nasıl yapacağınızdan emin değilim tablo), girilen öğeler, makbuzlarda gördüğümüz gibi tek bir İşlem # 'e sahip olacaktır.POS (Alışveriş Sepeti) - Tek bir işlemde Birden fazla ürün No

Cart tablosuna bir Trans_No sütunu koymalı mıyım? Varsa, tek bir Trans_No'nun birden fazla öğeye nasıl atanacağını nasıl ele alacağım? Son Trans_No'yu almayı ve bunu 1'e kadar artırmayı ve ardından casher'ın alışveriş sepetindeki tüm eşyalara atamayı düşünüyorum. Ancak, 2 kasiyerin aynı anda sistemi kullandıkları durumlarda, her ikisinin de aynı son işlemi almaları ve her ikisini de 1 müşterinin siparişini 1 tek işlemde/makbuzla birleştirmek için 1'e çıkaracakları büyük bir ihtimal var.

Bunu işlemenin en iyi yolu nedir?

cevap

1

İşlem kimliğinizin geçerli olduğu veri nesnesi, uygulamanızın işlevsel gereksinimlerine bağlıdır. Bir alışveriş sepetinde ne varsa, bir işlem kimliğini paylaşması gerekiyorsa, alışveriş sepeti işlem kimliği için doğru yerdir.

Veritabanı sistemleri, tanımladığınız eşzamanlı artış sorununu önlemek için çeşitli özellikler sunar. Bundan kaçınmanın en kolay yolu, örnek olarak sunulan serial veri türünü kullanmaktır. PostgreSQL tarafından. Bir sütunu seri olarak bildirirseniz, veritabanı eklediğiniz her kayıt için yeni bir değer oluşturmaya özen gösterir. Bu tür bir veri türü yoksa, yine de bir kayıt için benzersiz bir birincil anahtar oluşturmak için bir mekanizma olabilir. Bir örnek, MySQL için auto_increment direktifidir.

Bunların hepsi sizin için uygun değilse, örn. çünkü işlem kimliklerini oluşturmak için bazı mantıksal mantığa sahip olmak, okuma mantığını koymak, arttırma ve değerlerin bir veritabanı işlemine eklenmesi gerekir.

gibi ifadeler, anahtar değerindeki çarpışmaları engelleyecektir. Ancak, işlemleriniz kısa olduğundan emin olun, özellikle de kullanıcı girişi için bekletme sırasında bir işlemi açık bırakmazsınız. Aksi takdirde, diğer kullanıcıların işlemleri çok uzun süre engellenebilir.

+0

Merhaba TAM, cevap için teşekkürler! Bahsettiğiniz benzersiz birincil anahtarı düşünerek, yalnızca bir öğeyi sepete eklediğinizde, biçimlendirilmiş DATETIME artı kullanıcı kimliğini kullanarak oluşturulan kimliğe sahip bir etikete bir değer atayacaktır. Bunun, oluşturulan birincil anahtardaki eklenmiş kullanıcı kimliği nedeniyle birden fazla kullanıcı tarafından kullanılmakta bile yinelenmeyeceğinden emin olun). Sepeti birden fazla öğe ile kontrol ederken, etiketin 'PK' etiketinden aldığı öğelerle birlikte bir tabloya eklenir. Fikriniz için teşekkürler! –