ฉันมีปัญหาในการจินตนาการอะไรก็ตามที่แบบจำลองข้อมูลสามารถมีคอลัมน์ 2,000 คอลัมน์ในตารางปกติได้อย่างถูกต้อง
ฉันเดาว่าคุณอาจจะทำอะไรบางอย่าง "กรอกในช่องว่าง" schema denormalised ที่คุณจริง ๆ แล้วเก็บข้อมูลประเภทต่าง ๆ ทั้งหมดในตารางเดียวและแทนที่จะแบ่งข้อมูลออกเป็นตารางแยกต่างหากและสร้างความสัมพันธ์ คุณมีสาขาต่าง ๆ ที่บันทึกข้อมูลประเภท "" ที่จัดเก็บไว้ในแถวที่กำหนดและ 90% ของเขตข้อมูลของคุณเป็น NULL ถึงแม้ว่าจะต้องการได้ 2,000 คอลัมน์ ...
วิธีการแก้ไขปัญหาของคุณคือการคิดใหม่รูปแบบข้อมูลของคุณ หากคุณกำลังจัดเก็บข้อมูลคีย์ / ค่าจำนวนมากซึ่งเชื่อมโยงกับระเบียนที่กำหนดทำไมไม่ลองสร้างโมเดลด้วยวิธีนั้น สิ่งที่ต้องการ:
CREATE TABLE master (
id INT PRIMARY KEY AUTO_INCREMENT,
<fields that really do relate to the
master records on a 1-to-1 basis>
);
CREATE TABLE sensor_readings (
id INT PRIMARY KEY AUTO_INCREMENT,
master_id INT NOT NULL, -- The id of the record in the
-- master table this field belongs to
sensor_id INT NOT NULL,
value VARCHAR(255)
);
CREATE TABLE sensors (
id INT PRIMARY KEY AUTO_INCREMENT,
<fields relating to sensors>
);
จากนั้นจะได้รับทั้งหมดของรายการเซ็นเซอร์ที่เกี่ยวข้องกับการรับ "ต้นแบบ" SELECT sensor_id,value FROM sensor_readings WHERE master_id=<some master ID>
บันทึกคุณสามารถเพียงแค่ หากคุณต้องการรับข้อมูลสำหรับบันทึกในmaster
ตารางพร้อมกับข้อมูลเซ็นเซอร์ทั้งหมดสำหรับบันทึกนั้นคุณสามารถใช้การเข้าร่วม:
SELECT master.*,sensor_readings.sensor_id,sensor_readings.value
FROM master INNER JOIN sensor_readings on master.id=sensor_readings.master_id
WHERE master.id=<some ID>
ถ้าหากคุณต้องการรายละเอียดของเซ็นเซอร์แต่ละตัว