ในระหว่างการประชุมรายสัปดาห์ครั้งล่าสุดของเราบุคคลที่ไม่มีประสบการณ์ด้านการบริหารฐานข้อมูลได้นำคำถามนี้มาใช้:
"จะมีสถานการณ์สมมติที่จัดเก็บข้อมูลในบรรทัด (สตริง) แทนที่จะแสดงหลายบรรทัดหรือไม่"
ให้เราสมมติตารางcountryStates
ที่เราต้องการจัดเก็บสถานะของประเทศ ฉันจะใช้ USA เป็นตัวอย่างนี้และจะไม่แสดงรายการรัฐทั้งหมดเพื่อความเกียจคร้าน
ที่นั่นเราจะมีสองคอลัมน์ หนึ่งเรียกว่าCountry
และอื่น ๆ States
ที่เรียกว่า ตามที่กล่าวไว้ที่นี่และที่เสนอโดยของ @ srutzky คำตอบที่PK
จะได้รับรหัสที่กำหนดโดยมาตรฐาน ISO 3166-1 alpha-3
ตารางของเราจะเป็นดังนี้:
+---------+-----------------------+-------------------------------------------------------+
| Country | States | StateName |
+---------+-----------------------+-------------------------------------------------------+
| USA | AL, CA, FL,OH, NY, WY | Alabama, California, Florida, Ohio, New York, Wyoming |
+---------+-----------------------+-------------------------------------------------------+
เมื่อถามคำถามเดียวกันนี้ให้กับนักพัฒนาเพื่อนเขากล่าวว่าจากมุมมองขนาดทราฟฟิกข้อมูลนี่อาจมีประโยชน์ แต่ไม่ใช่ถ้าเราจำเป็นต้องจัดการข้อมูลนี้ ในกรณีนี้จะต้องมีความฉลาดในรหัสแอปพลิเคชันซึ่งสามารถแปลงสตริงนี้ในรายการ (สมมติว่าซอฟต์แวร์ที่เข้าถึงตารางนี้จำเป็นต้องสร้างกล่องคำสั่งผสม)
เราสรุปว่าแบบจำลองนี้ไม่มีประโยชน์มาก แต่ฉันสงสัยว่าอาจมีวิธีทำให้มีประโยชน์
สิ่งที่ผมอยากจะถามคือถ้าใด ๆ ของคุณได้เห็นได้ยินหรือสิ่งที่ทำเช่นนี้ในทางที่มันทำงาน
a;b;c
ใช้ปลายด้านหน้าที่จะแยกสายของคุณแล้วคุณจะได้รับa
, b
, c
และดำเนินการเกี่ยวกับการดำเนินการทำอะไรบางอย่างกับพวกเขาอาจจะ ?. รู้สึกว่ามันอาจเหมาะกับความต้องการเฉพาะในแบบนั้น ... ในความคิดที่สองไม่มี คุณสามารถจัดเก็บ ID เข้าร่วมตารางของคุณและสร้างสตริงที่ต่อกันได้มากกว่าที่จะสามารถส่งเนื้อหาไปยัง FE ...