Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,536

HOME > PHP > PHP Forum > อยากใด้แนวคิดออกแบบ database + php ที่ใช้dbเดียว คอนโทรลได้หลายเว็บครับ





 

อยากใด้แนวคิดออกแบบ database + php ที่ใช้dbเดียว คอนโทรลได้หลายเว็บครับ

 



Topic : 133699



โพสกระทู้ ( 257 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5 Blogger



อยากใด้แนวคิดออกแบบ database + php ที่ใช้dbเดียว คอนโทรลได้หลายเว็บครับ

ให้ลองนึกภาพถึง บะหมี่เจ้าดัง เปิดสาขาเยอะแยะมากมาย ในที่นี้ผมตีประมาน50สาขาพอครับ สาขาไม่เยอะ
โดยมี สาขาใหญ่1เว็บ+1db และ เว็บสาขา ไม่มีDB ดึงข้อมูลจากdb สาขาใหญ่มาคอนโทรล

ส่วนของกิ db สาขาใหญ่
user lv1 คอนโทรลได้ทุกสาขา
user lv2 คอนโทรลได้เฉพาะสาขาตัวเอง ตั้งใจเปิดเป็นsub domainครับ ยังไม่ฟันธง

อยากรบกวนพี่ๆ ที่ทำเว็บแนวนี้ ช่วยเสนอแนะความคิดเห็นครับ ว่ามีแนวคิดแบบไหนบ้าง ที่จะออกแบบระบบแบบนี้




****เบื้องต้นผมคิดได้แนวๆนี้ครับ

เว็บสาขาใหญ่ dbควบคุมด้วย table ที่จะมีการแบ่งว่าข้อมูลนี้จะไปแสดงที่ไหนบ้าง หน้าUI ประมานว่าทำcheckbox แต่ละสาขาเอาไว้
ส่วนuser lv2 ก็จะcheckbox ได้เฉพาะสาขาของตนเอง
การดึงข้อมูลอของเว็บสาขา ผมคิดว่าจะให้ระบบคุยกันด้วย jsonครับ (ส่วนนี้ ยังไม่แน่ใจว่าจะทำconfigโดยตรง หรือjsonครับ)

โดยทั่วไป จะเป็นการแสดงข้อมูลเกี่ยวกับ สินค้า ผลงาน การติดต่อ ประมานนี้ครับ แค่แสดงข้อมูลทั่วไปครับ

การควบคุมสาขาผมจะมี table สาขา มี2ฟิลล์
1.สาขาAA
2.สาขาBB
3.สาขาCC
โดย PK 1 ,2 และ3 เป็นตัวหลักในการกำกับแต่ละสาขา

เช่นการกำกับผลงานที่ ABCDE นี้
A ฟิลล์สาขา 1,2 ก็จะโชว์แค่ สาขา AA, BB
B ฟิลล์สาขา 3 ก็จะโชว์แค่ สาขา CC
C ฟิลล์สาขา 1,3 ก็จะโชว์แค่ สาขา AA, CC
เก็บข้อมูลแบบฟิลล์เดียว 1,2,3 ถึงเวลา explode มาใช้ครับ

รบกวนพี่ๆทุกท่านครับ เผื่อมีท่านใดเคยทำงานลักษณะนี้



Tag : PHP, MySQL, HTML, HTML5







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-06-06 10:32:44 By : tonmasterbp View : 119 Reply : 5
 

 

No. 1



โพสกระทู้ ( 2,234 )
บทความ ( 1 )



สถานะออฟไลน์


ความคิดส่วนตัวนะครับ
ผมจะวิเคราะห์ตามมิติของข้อมูล ความซับซ้อน และแนวโน้มปริมาณข้อมูลที่จะเข้ามาในระบบในอนาคต เช่น
- เว็บแสดงข้อมูลบริษัท มีข่าว มีสินค้าหรือบริการที่ไม่ได้เยอะ(ไม่เหมือนกับขายของออนไลน์แบบ Shopee, Lazada) ก็สามารถสร้างข้อมูลไว้ก้อนเดียวกันได้ เพิ่มฟิลด์มาจำแนกแยกแยะว่าข้อมูลนี้เป็นของไซต์ไหนได้ ที่เคยทำใน 1 เว็บมี 700-800 User แต่ละ User สามารถจัดการหน้าเว็บของตัวเองได้หมด ยังเอาอยู่
ข้อดี : สะดวกในการเพิ่มฟีดเจอร์ใหม่ๆ

- เว็บที่เป็นเฟรนไชน์ ที่เคยทำเป็ยโปรแกรมจัดการระบบจัดส่งไปรษณีย์ จะมีเฟรนไชน์หลายๆ ที่ ในแต่ละวันมีการเพิ่มขึ้นของข้อมูลปริมาณเยอะหลายบริการในโปรแกรมเดียว เช่น บริการรับส่งไปรษณีย์ ขายสินค้าด้วย ชำระค่าบริการ ชำระค่าอุปโภค(น้ำ ไฟ โทรศัพท์) แบบนี้ผมเลือกแยกก้อนฐานข้อมูลของใครของมัน(แต่ใช้ Database user เดียวกัน) ซึ่งจะมีก้อน Master โดยมีบางส่วนที่สาขาย่อยจะดึงข้อมูลร่วมกันได้ และการสร้าง User แอดมินทุกสาขาจะสร้างจาก Master เท่านั้น และเจ้าของเฟรนไชน์ยังสามารถดูผลประกอบการของสาขาได้
ข้อดี : แยกข้อมูลชัดเจน หากมีปัญหาสามารถตรวจสอบได้ง่าย
ข้อเสีย : หากมีการเพิ่มฟีดเจอร์ใหม่ ก็ต้องไล่เพิ่มฐานข้อมูลในทุกๆ ก้อน(แต่ก็ขึ้นอยู่กับการออกแบบโปรแกรม)






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-06 14:06:20 By : arm8957
 


 

No. 2



โพสกระทู้ ( 7,885 )
บทความ ( 1 )



สถานะออฟไลน์


แยกแยะให้ออกว่า มีอะไร ที่ใช้ร่วมกัน อะไรที่ใช้แยกกัน

ส่วนที่ใช้แยกกัน ให้กำหนด parameter เพื่อบอกว่า record นี้เป็นสาขาไหน
อย่าใช้ชื่อ field เป็นตัวกำหนด ให้เก็บ 1 record ต่อ 1 สาขา

เพราะ ถ้ามีสาขาเพิ่มมันต้องเพิ่ม field ซึ่งมันไม่เหมาะที่จะทำแบบนั้น นั้นหมายถีงเราต้อง มาเขียน funcion สำหรับเพิ่มฟีลด์ต่างหาก
และ มันเปลือง ทรัพยากร เพราะ บาง record อาจจะมีแค่สาขาเดียว แต่ต้องเตรียมฟีลด์สำหรับสาขาอื่นด้วย
การคิวรี่การค้นหาก็ยุ่งยากกว่ากัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-06 14:34:22 By : Chaidhanan
 

 

No. 3



โพสกระทู้ ( 3,446 )
บทความ ( 8 )



สถานะออฟไลน์


ผมเคยทำ project cms ตัวหนึ่ง กำหนด multi site ได้ กำหนด permission ได้ละเอียดยิบ กำหนดได้ทั้งต่อคน/ต่อกลุ่ม และแยกจากกันแต่ละไซต์.
https://github.com/AgniCMS/agni-cms
ลองเอาไปเล่นหรือศึกษาดู ผมไม่ได้พัฒนาต่อนานมากแล้ว ถามอะไรก็คงจำไม่ได้แล้ว คงต้องค่อยๆแกะดูเอาเอง

หรืออีกตัวคือ WordPress มันติดตั้ง multi site ได้

งานพวกนี้บางทีมันต้องเทียบเคียงสิ่งที่เคยมีคนทำมาก่อนแล้วเอามาดัดแปลง มันก็จะง่ายกว่ามาคิดใหม่ทั้งหมด


ประวัติการแก้ไข
2019-06-06 14:45:43
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-06 14:45:29 By : mr.v
 


 

No. 4



โพสกระทู้ ( 257 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-06-06 14:34:22
รายละเอียดของการตอบ ::


รบกวนเรื่องต่อยอดจากพี่ครับผม

ผมมีแนวคิดเรื่องการกำหนดสาขาอยู่2แบบ คือ

1. ฟิลล์ข้อมูล , สาขา แล้วเก็บเพิ่มrowไปเรื่อยๆ เช่น
AAA , สาขา1
BBB, สาขา2
AAA, สาขา1

หรือ2. ฟิลล์ข้อมูล , สาขา ROWเดียวเก็บสาขา เช่น
AAA, สาขา1-สาขา2
ฺฺBBB, สาขา2
ในที่นี้ ผมexplode (สาขา1-สาขา2) ด้วย - ออกมาใช้

แบบไหนจะดีกว่าครับผม
ส่วนตัวผมมองว่า แบบที่2น่าจะไปได้ง่ายกว่า ถ้ามีสาขา3เพิ่ม ผมใส่ "-สาขา3" ต่อท้ายได้เลย
คำว่าสาขา1-3 อันนี้เป็นตัวอย่างครับ เก็บจริงๆ ผมคงเก็บเป็นตัวเลขPKของแต่ละสาขาแทนครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-07 09:35:14 By : tonmasterbp
 


 

No. 5



โพสกระทู้ ( 7,885 )
บทความ ( 1 )



สถานะออฟไลน์


ใช้ได้ทั้งสองอย่างครับ ก็ดูจำนวนข้อมูลที่ซ้ำกัน เยอะขนาดไหน
ถ้าซ้ำกันเยอะ ก็ใช้แบบที่ 2 ถ้าซ้ำกันไม่เยอะ ก็แบบที่ 1 แบบที่ 1 จะคิวรี่ง่ายกว่าแบบที่ 2

ส่วนแบบที่ 2 อาจใช้ bit ในการเก็บสาขาได้
เช่น bit 1 ของ สาขา 1
bit 2 สาขา 2
bit 3 .....
จำนวน byte ของ bigint มันเท่ากับ 8 bytes 2^64
คุณจะเก็บได้ถีง 64 สาขา เอาเป็น 63 สาขา 1 bit เก็บไว้สำหรับค่า ลบ
ถ้ามากกว่า 63 สาขา ก็ใช้ 2 field จะประหยัดพื้นที่ ได้มาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-07 10:39:16 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากใด้แนวคิดออกแบบ database + php ที่ใช้dbเดียว คอนโทรลได้หลายเว็บครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่