การแทรกข้อมูลลงในตารางความสัมพันธ์แบบกลุ่มต่อกลุ่ม

ฉันกำลังพยายามสร้างฐานข้อมูลที่มีหลายตารางสำหรับการศึกษา/วิจัย นี่เป็นครั้งแรกที่ฉันออกแบบฐานข้อมูลขนาดนี้ ฐานข้อมูลเติบโตขึ้น 100-200 บันทึกต่อวัน และจนถึงตอนนี้ฉันมีข้อมูลมาตั้งแต่ปี 2010 จากข้อมูลทั้งหมด หมายเลขลำดับทั่วไป ชื่อผลิตภัณฑ์ และความแข็งแกร่งของยา (ใบสั่งยา) ทำให้ฉันกังวลเล็กน้อย นี่คือสิ่งที่ฉันได้ทำไปแล้ว: หมายเลข Seq ทั่วไปมีความโดดเด่นในด้านความแรงของยา (ชื่อผลิตภัณฑ์) ฉันมีตารางที่มี id, seq no ทั่วไป และความแข็งแกร่ง อีกตารางหนึ่งสำหรับ prod_id และชื่อผลิตภัณฑ์ หมายเลข seq ทั่วไปแต่ละหมายเลขอาจมีชื่อผลิตภัณฑ์ตั้งแต่หนึ่งชื่อขึ้นไป และชื่อผลิตภัณฑ์แต่ละชื่ออาจมีหมายเลข seq ทั่วไปที่แตกต่างกันขึ้นอยู่กับความแข็งแกร่ง ดังนั้นฉันจึงตั้งค่าความสัมพันธ์แบบกลุ่มต่อกลุ่ม ฉันสร้างตารางอื่นสำหรับความสัมพันธ์นี้ซึ่งประกอบด้วย rx_id, drug_id และ prod_id เนื่องจากผู้ป่วยจำนวนมากอาจได้รับการสั่งจ่ายยาชนิดเดียวกัน ยา drug_id และ prod_id อาจทำซ้ำหลายครั้งใน rx_table

คำถามแรกของฉันคือ การออกแบบนี้เหมาะสมหรือไม่ ฉันจะแทรกข้อมูลลงใน rx_table ได้อย่างไร ฉันควรสร้างบันทึกใหม่ทุกครั้งสำหรับข้อมูลใหม่แม้ว่า drug_id และ prod_id มีอยู่แล้วใน rx_table หรือไม่ หรือฉันควรมองหา rx_id ที่มีลำดับ drug_id และ prod_id อยู่ และแทรก rx_id ลงในตารางหลักอื่น ๆ (ไม่แสดง) ซึ่ง มีข้อมูลอื่นๆ หรือคำถามนี้คลุมเครือเกินไป?

ขอขอบคุณสำหรับความช่วยเหลือของคุณ.


person user1828605    schedule 16.06.2014    source แหล่งที่มา
comment
แนวทางของคุณเป็นสิ่งที่ดี ฉันเดาว่า rx_table ของคุณคือการรวมกันของตัวแทนและชื่อผลิตภัณฑ์ ดังนั้นจึงเป็นสิ่งที่คุณซื้อเป็นยา โดยพื้นฐานแล้ว คุณมีความสัมพันธ์ m:n อีกประการหนึ่งระหว่างตารางผู้ป่วยของคุณกับ rx_table ที่คุณจัดการใบสั่งยาบางชนิด (หมายเลขลำดับทั่วไป/ชื่อผลิตภัณฑ์) ให้กับผู้ป่วย   -  person Martin K.    schedule 16.06.2014
comment
@MartinK. ขอบคุณ นั่นมีประโยชน์มาก ดังนั้น เพื่อยืนยัน ให้เพิ่มข้อมูลใน rx_table ต่อไป และสร้าง rx_id ใหม่ แม้ว่าจะมีชุดค่าผสม prod_id และ drug_id อยู่ก็ตาม ใช่ไหม โปรดตอบกลับข้อความเพื่อให้ฉันทำเครื่องหมายว่าเป็นคำตอบได้ไหม   -  person user1828605    schedule 16.06.2014


คำตอบ (1)


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

drug_id | generic_seq_no     | strength
--------+--------------------+----------
1       | Paracetamol-100    | 100
2       | Paracetamol-250    | 250
3       | Paracetamol-500    | 500

ตารางผลิตภัณฑ์ของคุณจะมีชื่อของเครื่องหมายการค้า:

prod_id   | prod_name
----------+------------
1         | Tylenol
2         | Captin
3         | Panadol

rx_table ประกอบด้วยชื่อเครื่องหมายการค้า ตัวแทน และความแข็งแกร่ง:

rx_id  | drug_id  | prod_id
-------+----------+----------
1      | 1        | 1
2      | 1        | 2
3      | 1        | 3
4      | 2        | 1
5      | 2        | 2
6      | 3        | 2
7      | 3        | 3

เช่น แถวแรกจะเป็นไทลินอล ซึ่งมีพาราเซตามอล 100 มก. ตอนนี้คุณมีสิ่งที่สามารถสั่งจ่ายโดยแพทย์ได้แล้ว และนั่นคือสิ่งที่คุณได้ทำไปแล้ว อย่างที่ฉันบอกว่าแนวทางของคุณก็โอเค

ตอนนี้คุณต้องการ (หรือมี) โต๊ะอื่นกับคนไข้ของคุณทั้งหมด

patient_id | firstname | lastname
-----------+-----------+-----------
1          | John      | Doe
2          | Jane      | Doe

ท้ายที่สุด คุณต้องเชื่อมโยงเครื่องหมายการค้า/ตัวแทน/ความแข็งแกร่งของคุณเข้ากับผู้ป่วย เนื่องจากผู้ป่วยรายหนึ่งอาจได้รับยาต่างกัน และผู้ป่วยหลายรายอาจได้รับยาชนิดเดียวกัน คุณจึงต้องการความสัมพันธ์แบบกลุ่มต่อกลุ่มอีก ลองเรียกมันว่าใบสั่งยา

prescription_id | patient_id | rx_id
----------------+------------+------
1               | 1          | 1
2               | 1          | 3
3               | 2          | 4

ซึ่งหมายความว่า John Doe จะได้รับ Tylenol และ Panadol ที่มีพาราเซตามอล 100 มก. อย่างละ เจน โด จะได้รับไทลินอลพร้อมพาราเซตามอล 250 มก. ฉันคิดว่าโต๊ะที่คุณจะใส่มากที่สุดคือโต๊ะสั่งยาในรุ่นนี้

person Martin K.    schedule 16.06.2014