|
|
|
อยากรู้วิธีการจัดการกับฐานข้อมูล เพื่อไม่ให้เก็บประวัติข้อมูลเยอะในtable ควรทำอย่างไรดี |
|
|
|
|
|
|
|
โดยมี tableaddสินค้า,tableเบิกสินค้า และquerystock
1.tableaddสินค้า มีคอลัม ลำดับที่,ว/ด/ป,ชื่อสินค้า,จำนวนที่add
2.tableเบิกสินค้า มีคอลัม ลำดับที่,ว/ด/ป,ชื่อสินค้า,จำนวนที่เบิก
3.querystock มีคอลัม สินค้า,จำนวนที่add,จำนวนที่เบิก,จำนวนคงเหลือ
โดยคอลัม จำนวนที่add ได้จากtableaddสินค้า
จำนวนที่เบิก ได้จากtableเบิกสินค้า
จำนวนคงเหลือ ได้จาก จำนวนที่add - จำนวนที่เบิก
ดังนี้
สินค้า จำนวนที่add จำนวนที่เบิก จำนวนคงเหลือ
ตะปู 100 1 99
เข็ม 100 2 98
น็อต 100 3 97
*****ซึ่งปัญหาตอนนี้คือต้องเก็บประวัติข้อมูลของtableทั้ง2ไปเรื่อยๆ ถ้าไม่ยังงั้น ค่าจำนวนที่add , จำนวนที่เบิก , จำนวนคงเหลือ ก็จะได้ค่าไม่เป็นปัจจุบันดังข้างต้น
เช่น ถ้าลบประวัติในtableเบิกสินค้าออกไป จะทำให้querystock เป็นดังนี้
สินค้า จำนวนที่add จำนวนที่เบิก จำนวนคงเหลือ
ตะปู 100 0 100
เข็ม 100 0 100
น็อต 100 0 100
ดังนั้นควรทำอย่างไรดี เพื่อไม่ให้เก็บประวัติข้อมูลเยอะในtable
Tag : .NET, Ms Access, VB.NET, VS 2012 (.NET 4.x)
|
|
|
|
|
|
Date :
2015-10-12 17:09:28 |
By :
peemes101 |
View :
991 |
Reply :
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Index and PK บ้านๆๆเลย
|
|
|
|
|
Date :
2015-10-12 20:42:09 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่คุณTOR_CHEMISTRY บอกว่าIndex and PK
มันสามารถแก้ปัญหานี้ได้
*****ซึ่งปัญหาตอนนี้คือต้องเก็บประวัติข้อมูลของtableทั้ง2ไปเรื่อยๆ ถ้าไม่ยังงั้น ค่าจำนวนที่add , จำนวนที่เบิก , จำนวนคงเหลือ ก็จะได้ค่าไม่เป็นปัจจุบันดังข้างต้น
เช่น ถ้าลบประวัติในtableเบิกสินค้าออกไป จะทำให้querystock เป็นดังนี้
สินค้า จำนวนที่add จำนวนที่เบิก จำนวนคงเหลือ
ตะปู 100 0 100
เข็ม 100 0 100
น็อต 100 0 100
ช่วยอธิบายให้มากกว่านี้ได้หรือป่าว
หรือพอมีตัวอย่างมั้ย
|
|
|
|
|
Date :
2015-10-12 23:05:01 |
By :
peemes101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าจะออกแบบ store ให้ลองนึกถึงพวกร้านใหญ่ๆดูครับ
7-11 lotus bigc makro ฯลฯ
ลองเข้าเว็บเขาแล้วเอามาประยุค ใช้
สิ่งที่ท่านขาดไปคือ table สินค้า
ถึงจะเรียกได้ว่าใช้ Index and PK ได้เหมาะสม
tableaddสินค้า tableเบิกสินค้า ก็แต่ดึง PK ออกมาใช้
แค่นี้ database ก็ไม่รก กลายเป็นขยะ database ไปแล้วครับ
ที่เหลือก็แค่ อ่านเรื่อง join
|
|
|
|
|
Date :
2015-10-13 09:25:10 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tableสินค้า มีอยู่แล้ว
ที่คุณบอกว่า tableaddสินค้า tableเบิกสินค้า ก็แค่ดึง PK ออกมาใช้
นี้ใช่สร้างqueryของaddสินค้า และqueryของเบิกสินค้า
แต่PKที่กำหนดไว้ก็มีแค่คอลัม ลำดับที่ ที่กำหนดเป็นPKไว้เอง
แล้วถ้าไม่ใช่ มันต้องทำอย่างไร
และเรื่องdatabase ก็ไม่รก กลายเป็นขยะ database ไปแล้ว
แสดงว่า จะสามารถลบประวัติในtable หรือลบrecord ได้ใช่หรือป่าว
ส่วนเรื่องjoin ควรสร้างอย่างไร
|
|
|
|
|
Date :
2015-10-13 16:20:42 |
By :
peemes101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เรื่องนี้คงต้องไปดูในหัวข้อ Normalization ครับ
|
|
|
|
|
Date :
2015-10-13 17:04:10 |
By :
fonfire |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แก้โดยใช้combobox ให้เลือก
เพราะถ้าเป็นตัวเลข user อาจจะไม่รู้ เอ๊ะ มันคืออะไร
ได้ดูเรื่อง Normalization แล้วก็ประมาณว่า ควรสร้างtableอย่างไร ให้ไม่ซับซ้อน
โดยตอนนี้มี
tableสินค้า
tableประเภท
tableaddสินค้า
tableเบิกสินค้า
สรุปคือแล้วมันสามารถไปแก้ปัญหาดังนี้ ได้อย่างไร
*****ซึ่งปัญหาตอนนี้คือต้องเก็บประวัติข้อมูลของtableทั้ง2ไปเรื่อยๆ ถ้าไม่ยังงั้น ค่าจำนวนที่add , จำนวนที่เบิก , จำนวนคงเหลือ ก็จะได้ค่าไม่เป็นปัจจุบันดังนี้
ุซึ่งถ้ามีการเบิกสินค้าดังนี้
สินค้า จำนวนที่add จำนวนที่เบิก จำนวนคงเหลือ
ตะปู 100 1 99
เข็ม 100 2 98
น็อต 100 3 97
และถ้าลบประวัติในtableเบิกสินค้าออกไป จะทำให้querystock เป็นดังนี้
สินค้า จำนวนที่add จำนวนที่เบิก จำนวนคงเหลือ
ตะปู 100 0 100
เข็ม 100 0 100
น็อต 100 0 100
|
|
|
|
|
Date :
2015-10-14 03:19:09 |
By :
peemes101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2015-10-14 07:39:37 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แสดงว่ายังไม่เข้าใจเรื่อง Normalization (ผมก็ไม่เข้าใจ) แต่อยากให้ศึกษาเรื่องนี้ให้ดีและให้แน่นก่อนที่จะสงสัยว่ามันดีหรือไม่ดี
มันจัดการกับข้อมูลได้แค่ไหน แต่เราเองก็ควรที่จะเข้าใจระบบให้ดีก่อน ไม่ใช่อยู่ดีๆใครก็ได้จะไปลบเทเบิลทิ้งซึ่งมันเป็นไปไม่ได้
เลย ไม่ว่าระบบจะดีแค่ไหน ใหญ่แค่ไหน และการลบเทเบิลหรือข้อมูลเป็นงานที่ไม่ฉลาดเอาเลย(ควรแค่เปลี่ยนสถานะก็พอ)
และอีกอย่างนะครับ ถ้ายังไม่ขึ้นระบบหรือแค่ศึกษาขอแนะนำว่าให้เอา
tableaddสินค้า
tableเบิกสินค้า
ออกไปเลยครับ แล้วเปลี่ยนมาใช้เทเบิลกลางที่จะเก็บทั้งเข้าและออกดีกว่าครับโดยแทนค่า + - ประเภทเอา
หรือจะดูตัวอย่างของระบบ ERP infor syteline นี้ก็ได้ครับ(ยกมานิดเดียว ที่จริงมันเยอะกว่านี้ครับ)
เทเบิล item
item
descriptions
product_code
u_m
...
เทเบิล matltran (จะรับเข้า,เบิก,ทิ้ง,ย้าย) ประวัติจะเก็บอยู่เทเบิลนี้หมดครับ
trans_num
trans_type (แยกตาม code)
trans_date
item
qty (+ = รับ เพิ่ม ,- = จ่าย ทิ้ง)
ref_num(เลขที่ใบเบิก,เลขที่ po,...)
ดูยอดคงเหลือเฉยๆ ก็ sum qty ที่เทเบิล matltran ไปเลย
และอีกอย่างที่ระบบใหญ่ๆเขาใช้กัน คือเขาจะสร้าง View และ Stored Procedures Functions Tiger
เอาไว้ใช้งานเรื่อง select insert update delete เพราะสามารถทำ TRANSACTION ได้
"การออกแบบฐานข้อมูลเป็นเรื่องหลักของการเขียนโปรแกรม!"
ถ้าคำแนะนำผิดพลาดประการใด ก็ขออภัยเดียวนะครับผม อย่าว่ากันนะ
|
|
|
|
|
Date :
2015-10-14 20:03:10 |
By :
บัญดิษฐ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
การลบเทเบิลหรือข้อมูลเป็นงานที่ไม่ฉลาดเอาเลย(ควรแค่เปลี่ยนสถานะก็พอ)
ถือว่าเป็นคำที่สุดยอดครับ
ซึ่งมือใหม่หลายคนยังไม่ตระหนักถึงความสำคัญของการมีมันอยู่
และที่หนักไปกว่านั้น
หลายคนไม่ออกแบบ หรือ ศึกษาเรื่องการออกแบบฐานข้อมูลให้ดีแล้วก็นำฐานข้อมูลที่ออกแบบมาไม่ดีนั้นมาเขียน
ผลปรากฎว่า ต้องศึกษา เรื่อง SQL syntex มากขึ้น และ ได้รูปแบบการเขียนโปรแกรมแบบผิดๆตามมาด้วย
กว่าจะรู้ตัวก็จบ และ ทำงาน เรียบร้อยแล้ว
|
|
|
|
|
Date :
2015-10-15 08:31:23 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|