รูปแบบการออกแบบ / กลยุทธ์สำหรับฟิลด์ที่กำหนดเองและประเภทข้อมูล


12

มีกลยุทธ์ทั่วไปหรือรูปแบบการออกแบบสำหรับการออกแบบแอปพลิเคชันที่มีความสามารถในการเพิ่มเขตข้อมูลที่กำหนดเองไปยังวัตถุข้อมูลหรือสำหรับการสร้างคำจำกัดความที่กำหนดเองของวัตถุ ตัวอย่างเช่นฉันกำลังคิดเกี่ยวกับผลิตภัณฑ์เช่น SalesForce ซึ่งคุณสามารถมีข้อมูลประเภทของคุณกรอบงานเช่น Expression Engine และวิธีการจัดการช่องทางและกลุ่มเขตข้อมูลช่อง(ตัวอย่าง)หรือวิธี CMSes Like wordpress มีความสามารถในการ เพิ่มฟิลด์ลงในประเภทโพสต์ที่กำหนดเอง



ข้อควรทราบ: Oracle กำลังฟ้องร้องกางเกงของทุกคนที่นำสิ่งนี้ไปใช้ในทางที่เฉพาะเจาะจง (จากสิ่งที่ฉันเข้าใจได้ทั่วไป) ฉันจะมองดูสิ่งนั้นด้วย
Steven Evers

คำตอบ:


6

ฟาวเลอร์มาร์ตินให้คำอธิบายที่ดีวิธีการจำลองคุณสมบัติแบบไดนามิก (ซึ่งเป็นหลักสิ่งที่คุณขอ) ของเขาในหนังสือ "รูปแบบการวิเคราะห์" เนื้อหาส่วนใหญ่สามารถออนไลน์ได้ฟรีในรูปแบบ PDF บทความเนื้อหาที่คุณกำลังค้นหาคือเนื้อหานี้:

http://martinfowler.com/apsupp/properties.pdf


4

โดยปกติจะใช้EAVโมเดลสำหรับสกีมาที่ไม่มีโครงสร้างตามที่คุณอธิบาย

มันทนทุกข์ทรมานในประสิทธิภาพและความสามารถในการค้นหาคุณสมบัติแบบไดนามิกดังกล่าวในลักษณะ Ad-hoc ... และหลายคนคิดว่าเป็นรูปแบบการต่อต้าน

วิธีอื่น ๆ คือการใช้รูปแบบไดนามิกเช่น XML หรือ Json เพื่อเก็บคุณสมบัติดังกล่าวอาจมีที่เก็บข้อมูลเฉพาะสำหรับแต่ละคุณสมบัติเพื่อช่วยในการค้นหา


ฉันเคยได้ยินคนที่ใช้ฐานข้อมูลเชิงเอกสารเป็นทางเลือกแทน EAV แต่ไม่มีประสบการณ์ส่วนตัวเกี่ยวกับวิธีการดังกล่าว
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner - นั่นคือสิ่งที่ฉันบอกใบ้ แต่เป็นตัวคุณเองไม่มีประสบการณ์ส่วนตัว
Oded

4

นอกเหนือจากตาราง EAV ที่ @Oded อธิบายแล้วผู้คนใช้ฐานข้อมูล nosql สำหรับข้อมูลประเภทนี้ จำไว้ว่าไม่มีเหตุผลว่าทำไมแอปพลิเคชันของคุณไม่สามารถใช้ฐานข้อมูลเชิงสัมพันธ์สำหรับชิ้นส่วนที่สอดคล้องกับโมเดลเชิงสัมพันธ์และฐานข้อมูล nosql สำหรับข้อมูลที่ไม่ได้

ความเป็นไปได้ที่สามคือการเพิ่มหลายคอลัมน์สำหรับเขตข้อมูลที่ลูกค้าเพิ่ม (Customerfield1, customerfield2 ฯลฯ ) จากนั้นให้ลูกค้ากำหนดความหมายของพวกเขา สิ่งนี้ใช้ได้กับจำนวนเขตข้อมูล comnfiguarble ของลูกค้าที่คุณเพิ่มเท่านั้นดังนั้นจึงเป็นเรื่องปกติถ้าคุณคาดหวังว่าพวกเขาต้องการสองหรือสาม แต่จะไม่ทำงานเลยถ้าคุณต้องการหลายร้อย


1

คุณจะไม่มีแอปพลิเคชันแรกที่มีตารางด้วย: UDF1, UDF2, UDF3 ... คำแนะนำอื่น ๆ (EVA หรือ NoSQL) นั้นดีกว่ามาก

ทั้งนี้ขึ้นอยู่กับ RDBMS ( SQL Server ที่นำเสนอนี้ ) คุณสามารถแยกจากการทำให้เป็นมาตรฐานและมีเขตข้อมูลที่เก็บข้อมูลในรูปแบบ XML หรือข้อความธรรมดา คุณจะต้องพึ่งพารหัสเพื่อจัดการสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.