คำถามติดแท็ก relational-theory

ในไซต์นี้แท็กนี้ใช้กับคำถามเกี่ยวกับทฤษฎีโมเดลเชิงสัมพันธ์ แบบจำลองเชิงสัมพันธ์สำหรับการจัดการฐานข้อมูลเป็นแนวทางในการจัดการข้อมูลโดยใช้โครงสร้างและภาษาที่สอดคล้องกับตรรกะเพรดิเคตลำดับที่หนึ่ง ในรูปแบบเชิงสัมพันธ์ของฐานข้อมูลข้อมูลทั้งหมดจะแสดงในรูปของสิ่งที่รวมอยู่ในความสัมพันธ์ ฐานข้อมูลที่จัดในรูปแบบเชิงสัมพันธ์คือฐานข้อมูลเชิงสัมพันธ์

5
ทำไมคลัสเตอร์ของ RDBM ไม่สามารถทำแบบที่ NoSQL ทำได้
หนึ่งใน plusses ขนาดใหญ่สำหรับ nosql DBMS คือพวกเขาสามารถจัดกลุ่มได้ง่ายขึ้น สมมุติว่าด้วย NoSQL คุณสามารถสร้างเครื่องจักรราคาถูกนับร้อยที่เก็บข้อมูลต่าง ๆ และทำการค้นหาทั้งหมดในครั้งเดียว คำถามของฉันคือสิ่งนี้ทำไม DBMS เชิงสัมพันธ์ไม่สามารถทำเช่นเซิร์ฟเวอร์ mysql หรือ sql ได้ ผู้ค้าไม่ได้หาวิธีทางเทคนิคในการทำสิ่งนี้กับผลิตภัณฑ์ที่มีอยู่ของพวกเขาหรือมีปัญหากับตัวแบบเชิงสัมพันธ์ที่ป้องกันไม่ให้เกิดความเป็นไปได้หรือไม่? มีอะไรที่ยอดเยี่ยมเกี่ยวกับวิธี NoSQL ในการจัดเก็บและเข้าถึงข้อมูล (คีย์ / ค่าเอกสาร ฯลฯ ) ที่ทำให้การจัดกลุ่มง่ายขึ้นหากเป็นจริงทั้งหมด

5
ฉันจะออกแบบตารางความสัมพันธ์สำหรับมิตรภาพได้อย่างไร
ถ้าAเป็นเพื่อนBแล้วฉันควรเก็บค่าทั้งสองABและBAหรือหนึ่งก็พอ? ข้อดีและข้อเสียของทั้งสองวิธีคืออะไร นี่คือการสังเกตของฉัน: ถ้าฉันเก็บทั้งคู่ไว้ฉันต้องอัปเดตทั้งคู่เมื่อได้รับคำขอจากเพื่อน หากฉันไม่เก็บทั้งสองไว้ฉันก็พบว่ามันยากเมื่อต้องทำหลายอย่างJOINกับตารางนี้ ปัจจุบันฉันรักษาความสัมพันธ์ไว้ทางเดียว แล้วฉันควรทำอย่างไรในกรณีนี้? คำแนะนำใด ๆ?

3
เหตุใด ANSI SQL จึงกำหนด SUM (ไม่มีแถว) เป็น NULL
กำหนด ANSI SQL มาตรฐาน (บทที่ 6.5 เปฟังก์ชั่นชุด) พฤติกรรมต่อไปนี้สำหรับฟังก์ชันการรวมในชุดผลลัพธ์ที่ว่างเปล่า COUNT(...) = 0 AVG(...) = NULL MIN(...) = NULL MAX(...) = NULL SUM(...) = NULL การส่งคืนค่า NULL สำหรับ AVG, MIN และ MAX เหมาะสมอย่างยิ่งเนื่องจากค่าเฉลี่ยค่าต่ำสุดและค่าสูงสุดของชุดว่างเปล่านั้นไม่ได้ถูกกำหนด อย่างไรก็ตามอันสุดท้าย, ทำให้ฉันรำคาญใจ: ในทางคณิตศาสตร์, SUM ของเซตว่างนั้นถูกนิยามไว้อย่างดี: 0. การใช้ 0 องค์ประกอบที่เป็นกลางของการเติมเนื่องจากเคสฐานทำให้ทุกอย่างสอดคล้องกัน: SUM({}) = 0 = 0 SUM({5}) = 5 = 0 …

6
จัดเรียงเร็กคอร์ดในตารางโดยพลการ
ความต้องการทั่วไปเมื่อใช้ฐานข้อมูลคือการเข้าถึงระเบียนตามลำดับ ตัวอย่างเช่นถ้าฉันมีบล็อกฉันต้องการจัดลำดับโพสต์บล็อกของฉันใหม่ตามลำดับที่กำหนดเอง รายการเหล่านี้มักจะมีความสัมพันธ์มากมายดังนั้นฐานข้อมูลเชิงสัมพันธ์จึงดูสมเหตุสมผล วิธีแก้ปัญหาทั่วไปที่ฉันได้เห็นคือการเพิ่มคอลัมน์จำนวนเต็มorder: CREATE TABLE AS your_table (id, title, sort_order) AS VALUES (0, 'Lorem ipsum', 3), (1, 'Dolor sit', 2), (2, 'Amet, consect', 0), (3, 'Elit fusce', 1); จากนั้นเราสามารถจัดเรียงแถวตามorderเพื่อรับพวกเขาในลำดับที่เหมาะสม อย่างไรก็ตามดูเหมือนว่าเงอะงะ: ถ้าฉันต้องการย้ายระเบียน 0 ไปยังจุดเริ่มต้นฉันต้องเรียงลำดับใหม่ทุกระเบียน ถ้าฉันต้องการแทรกระเบียนใหม่ที่อยู่ตรงกลางฉันต้องเรียงลำดับใหม่ทุกระเบียนหลังจากนั้น หากฉันต้องการลบบันทึกฉันต้องเรียงลำดับใหม่ทุกระเบียนหลังจากนั้น มันง่ายที่จะจินตนาการถึงสถานการณ์เช่น: สองบันทึกมีเหมือนกัน order มีช่องว่างในorderระหว่างบันทึก สิ่งเหล่านี้สามารถเกิดขึ้นได้ง่าย ๆ ด้วยเหตุผลหลายประการ นี่เป็นวิธีการที่แอพพลิเคชั่นอย่าง Joomla ใช้: คุณสามารถยืนยันได้ว่าอินเทอร์เฟซที่นี่ไม่ดีและแทนที่จะเป็นมนุษย์แก้ไขตัวเลขโดยตรงพวกเขาควรใช้ลูกศรหรือลากและวาง - และคุณอาจถูกต้อง แต่เบื้องหลังสิ่งเดียวกันกำลังเกิดขึ้น …

6
ทำไมคำว่า "สัมพันธ์ (อัล)"?
ในภาษาอังกฤษเราอาจพูดถึงความสัมพันธ์ระหว่างพูดบ๊อบกับทิม บางทีพวกเขาเป็นลูกพี่ลูกน้อง คำว่า "ความสัมพันธ์" ในบริบทนี้สมเหตุสมผลสำหรับฉัน ในบริบทของฐานข้อมูลเชิงสัมพันธ์ฉันเข้าใจว่าคำนี้หมายถึงอะไร แต่ฉันไม่เข้าใจว่าทำไมจึงใช้ ฉันเข้าใจว่าทำไมการใช้งานจึงช่วยให้ฉันเข้าใจสนามได้ดีขึ้นดังนั้นฉันจึงอยากเข้าใจว่าทำไมจึงมีการใช้งาน ยกตัวอย่างเช่นทำไมบุคคลจึงถูกมองว่าเป็น "ความสัมพันธ์"? ในภาษาอังกฤษความสัมพันธ์เป็นคำนามที่อธิบายถึงความสัมพันธ์สองหน่วยงาน มันไม่ได้หมายถึงเอนทิตีเอง ในบริบทของฐานข้อมูลเชิงสัมพันธ์ "ความสัมพันธ์" หมายถึงเอนทิตีเอง ทำไม? ฉันเข้าใจว่าโมเดลเชิงสัมพันธ์เกิดขึ้นหลังจากโมเดลลำดับชั้นและเครือข่าย (เช่นพาเรนต์เพื่อนบ้าน) แต่ในโมเดลเหล่านั้นหน่วยงานยังมีความสัมพันธ์ซึ่งกันและกัน เหตุใดจึงเรียกโมเดลนี้ว่าโมเดลเชิงสัมพันธ์ มีวลี / คำที่เฉพาะเจาะจงมากขึ้นหรือไม่? หรือบางทีเราควรจะบอกว่าทั้งสามรุ่นเป็นแบบจำลองเชิงสัมพันธ์ แต่โมเดลลำดับชั้นและเครือข่ายเป็นแบบจำลองเชิงสัมพันธ์ที่เฉพาะเจาะจง ถ้าเรามีเอนทิตีแบบสแตนด์อโลนที่ไม่เกี่ยวข้องกัน พูดบุคคลประตูและต้นไม้ คำว่า "ความสัมพันธ์ (al)" ยังคงใช้ได้หรือไม่ (บางทีนี่อาจเป็นคำถามหลายข้อฉันคิดว่าคำตอบนั้นมีความเกี่ยวข้องสูง - อาจมีเพียงคำตอบเดียว - ดังนั้นฉันคิดว่ามันสมเหตุสมผลแล้วที่จะเป็นคำถามเดียวถ้าฉันผิดฉันก็แจ้งให้ฉันทราบและฉัน จะสร้างคำถามแยกต่างหากแทน) แก้ไข: แผนภาพนี้อาจเป็นประโยชน์ในการมองเห็นว่าความสัมพันธ์เกี่ยวข้องกับโดเมนที่ต่างกัน:

3
การใช้ตารางการค้นหาอย่างเหมาะสม
ฉันมีปัญหาในการหาวิธีวางขอบเขตที่ดีสำหรับเวลาและสถานที่ที่จะใช้ตารางการค้นหาในฐานข้อมูล แหล่งข้อมูลส่วนใหญ่ที่ฉันดูแล้วบอกว่าฉันไม่สามารถมีได้มากเกินไป แต่ในบางจุดดูเหมือนว่าฐานข้อมูลจะถูกแบ่งออกเป็นหลาย ๆ ส่วนในขณะที่อาจมีประสิทธิภาพ แต่ก็ไม่สามารถจัดการได้อีกต่อไป นี่คือตัวอย่างของสิ่งที่ฉันทำงานด้วย: สมมติว่าฉันมีตารางชื่อพนักงาน: ID LName FName Gender Position 1 Doe John Male Manager 2 Doe Jane Female Sales 3 Smith John Male Sales ทำท่าครู่หนึ่งว่าข้อมูลมีความซับซ้อนมากขึ้นและมีหลายร้อยแถว สิ่งที่ชัดเจนที่สุดที่ฉันเห็นว่าสามารถย้ายไปที่ตารางการค้นหาจะเป็นตำแหน่ง ฉันสามารถสร้างตารางที่เรียกว่าตำแหน่งและติดกุญแจต่างประเทศจากตารางตำแหน่งลงในตารางพนักงานในคอลัมน์ตำแหน่ง ID Position 1 Manager 2 Sales แต่ฉันจะแยกข้อมูลออกเป็นตารางการค้นหาขนาดเล็กลงต่อไปได้อีกนานเท่าใดจึงจะไม่สามารถจัดการได้ ฉันสามารถสร้างตารางเพศและมี 1 สอดคล้องกับเพศชายและ 2 สอดคล้องกับเพศหญิงในตารางการค้นหาแยกต่างหาก ฉันสามารถใส่ LNames และ FNames ลงในตารางได้ รายการ "John" …

3
จะมีความสัมพันธ์แบบตัวต่อตัวกับเด็กที่มีสิทธิพิเศษอย่างไร
ฉันต้องการที่จะมีความสัมพันธ์แบบหนึ่งต่อหลายคนซึ่งสำหรับผู้ปกครองแต่ละคนเด็กหนึ่งหรือศูนย์ถูกทำเครื่องหมายเป็น "รายการโปรด" อย่างไรก็ตามผู้ปกครองทุกคนจะไม่มีลูก (นึกถึงผู้ปกครองว่าเป็นคำถามในไซต์นี้เด็ก ๆ เป็นคำตอบและชอบเป็นคำตอบที่ยอมรับ) ตัวอย่างเช่น TableA Id INT PRIMARY KEY TableB Id INT PRIMARY KEY Parent INT NOT NULL FOREIGN KEY REFERENCES TableA.Id วิธีที่ฉันเห็นฉันสามารถเพิ่มคอลัมน์ต่อไปนี้ใน TableA: FavoriteChild INT NULL FOREIGN KEY REFERENCES TableB.Id หรือคอลัมน์ต่อไปนี้เพื่อ TableB: IsFavorite BIT NOT NULL ปัญหาเกี่ยวกับวิธีแรกคือมันแนะนำคีย์ต่างประเทศที่ไม่มีค่าซึ่งฉันเข้าใจว่าไม่ได้อยู่ในรูปแบบปกติ ปัญหาเกี่ยวกับแนวทางที่สองคือต้องทำงานมากกว่านี้เพื่อให้แน่ใจว่าเด็กส่วนใหญ่จะเป็นคนโปรด เกณฑ์ประเภทใดที่ฉันควรใช้เพื่อกำหนดวิธีการที่จะใช้ หรือมีวิธีอื่นที่ฉันไม่ได้พิจารณาหรือไม่? ฉันใช้ SQL Server 2012

5
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง ยกตัวอย่างเช่นเป็นความคิดที่ดีที่จะวางบางสิ่งเช่น tbl_ ไว้ที่จุดเริ่มต้นของชื่อตารางหรือไม่ ฉันควรกำหนดตารางรหัส / ค้นหาในบางวิธีเช่น ct_, lut_ หรือ codes_ หรือไม่ มีคนอื่นทำหรือไม่? ฉันใช้ MS SQL Server และมีฐานข้อมูลจำนวนมากที่มีตารางจำนวนมากดังนั้นมันก็ดีที่มีสิ่งที่เราสามารถใช้เป็นมาตรฐานที่มีเหตุผลสนับสนุนบางอย่าง

2
การออกแบบโมดูลการควบคุมอัตโนมัติของผู้ใช้ (บทบาทและสิทธิ์)
ฉันพยายามสร้างโมเดลโมดูลการพิสูจน์ตัวตนผู้ใช้สำหรับฐานข้อมูล MS SQL Server ที่จะเป็นแบ็คเอนด์ไปยังแอปพลิเคชัน Delphi UI โดยทั่วไปฉันต้องการมีบัญชีผู้ใช้ที่ผู้ใช้อยู่ในกลุ่มเดียวเท่านั้น กลุ่มสามารถมีจำนวนสิทธิ์ "n" ฉันต้องการเพิ่มประวัติรหัสผ่านในฐานข้อมูลเนื่องจากผู้ใช้จะต้องเปลี่ยนรหัสผ่านตามการตั้งค่าแอปพลิเคชัน (ตัวอย่างเช่นทุก ๆ 90 วัน) ฉันต้องการบันทึกกิจกรรมในแต่ละครั้งที่ผู้ใช้ลงชื่อเข้าและออก ฉันอาจขยายสิ่งนี้ไปยังกิจกรรมเพิ่มเติมในอนาคต ด้านล่างคุณจะพบรอยแตกครั้งแรกของฉันที่มัน โปรดแจ้งให้ฉันทราบข้อเสนอแนะเพื่อปรับปรุงตามนี้เป็นครั้งแรกของฉันทำเช่นนี้ คุณเห็นความต้องการคุณลักษณะเพิ่มเติมสำหรับการรักษาความปลอดภัยตามบทบาทและข้อ จำกัด สำหรับกฎรหัสผ่าน / รอบระยะเวลาหมดอายุหรือไม่?

2
การออกแบบฐานข้อมูล: การทำให้ความสัมพันธ์แบบ“ (หลายต่อหลายคน) เป็นแบบปกติ” ให้เป็นมาตรฐาน
เวอร์ชั่นสั้น ฉันต้องเพิ่มคุณสมบัติเพิ่มเติมจำนวนคงที่ให้กับแต่ละคู่ในการเข้าร่วมหลายต่อหลายที่มีอยู่ การข้ามไปยังไดอะแกรมด้านล่างตัวเลือกที่ 1-4 เป็นวิธีที่ดีที่สุดในแง่ของข้อดีและข้อเสียเพื่อให้บรรลุเป้าหมายนี้โดยการขยาย Base Case? หรือมีทางเลือกอื่นที่ดีกว่าที่ฉันไม่ได้พิจารณาที่นี่? รุ่นอีกต่อไป ขณะนี้ฉันมีสองตารางในหลาย ๆ ความสัมพันธ์ผ่านตารางเข้าร่วมระดับกลาง ตอนนี้ฉันต้องเพิ่มลิงก์เพิ่มเติมไปยังคุณสมบัติที่เป็นของคู่ของวัตถุที่มีอยู่ ฉันมีคุณสมบัติเหล่านี้จำนวนคงที่สำหรับแต่ละคู่แม้ว่าหนึ่งรายการในตารางคุณสมบัติอาจนำไปใช้กับหลายคู่ (หรืออาจใช้หลายครั้งสำหรับหนึ่งคู่) ฉันกำลังพยายามหาวิธีที่ดีที่สุดในการทำเช่นนี้และกำลังมีปัญหาในการแยกแยะว่าจะคิดอย่างไรเกี่ยวกับสถานการณ์ ความหมายดูเหมือนว่าฉันสามารถอธิบายเป็นอย่างใดอย่างหนึ่งต่อไปนี้อย่างเท่าเทียมกันดี: คู่หนึ่งคู่เชื่อมโยงกับคุณสมบัติเพิ่มเติมจำนวนหนึ่งชุด หนึ่งคู่เชื่อมโยงกับคุณสมบัติเพิ่มเติมมากมาย วัตถุ (สอง) หลายตัวเชื่อมโยงกับคุณสมบัติหนึ่งชุด วัตถุจำนวนมากเชื่อมโยงกับคุณสมบัติมากมาย ตัวอย่าง ฉันมีประเภทของวัตถุสองชนิดคือ X และ Y แต่ละชนิดมี ID ที่ไม่ซ้ำกันและตารางการเชื่อมโยงที่objx_objyมีคอลัมน์x_idและy_idซึ่งรวมกันเป็นคีย์หลักสำหรับลิงก์ แต่ละ X สามารถเกี่ยวข้องกับ Ys ได้หลายคนและในทางกลับกัน นี่คือการตั้งค่าสำหรับความสัมพันธ์แบบหลายต่อหลายที่มีอยู่ของฉัน เคสฐาน ตอนนี้นอกจากนี้ฉันมีชุดของคุณสมบัติที่กำหนดไว้ในตารางอื่นและชุดของเงื่อนไขที่คู่ (X, Y) ที่กำหนดควรมีคุณสมบัติ P จำนวนเงื่อนไขได้รับการแก้ไขและเหมือนกันสำหรับทุกคู่ พวกเขาพูดว่า "ในสถานการณ์ C1 คู่ (X1, Y1) …

2
วิธีจัดโครงสร้างแบบจำลองเพื่อให้ได้ข้อมูลที่มีลักษณะคล้ายต้นไม้บนฐานข้อมูลเชิงสัมพันธ์อย่างเหมาะสมและมีประสิทธิภาพ
จากการสำรวจข้อมูลแบบต้นไม้ในฐานข้อมูลเชิงสัมพันธ์โดยใช้คำถามSQLฉันต้องการทราบวิธีที่ใช้เป็นประจำในการอธิบายข้อมูลแบบต้นไม้ในฐานข้อมูลเชิงสัมพันธ์โดยพิจารณาจากผลกระทบทางกายภาพหรือไม่ ฉันสมมติว่า RDBMS ไม่มีคุณสมบัติพิเศษในการจัดการนอกเหนือจาก SQL ANSI ปกติหรือคุณสมบัติทั่วไปที่มีอยู่ มีข้อสงสัยฉันสนใจ MySQL และ PostgreSQL เสมอและในที่สุด SQLite

6
อธิบาย 2NF กับ 3NF ด้วยตัวอย่าง
ฉันมีปัญหากับฟอร์มปกติที่สอง (2NF) และฉันไม่สามารถแก้ไขได้โดยใช้ Google มันทำให้ฉันเป็นบ้าเพราะฉันเป็นครูและฉันไม่ต้องการสอนสิ่งผิด ๆ ให้กับนักเรียนของฉัน มามีตารางที่มี 5 ฟิลด์กัน Gradings = {StudentName, SubjectCode, SubjectName, #Exam, Grade} การพึ่งพาเป็นเช่นนี้: StudentName, SubjectCode, #Exam -> Grade SubjectCode -> SubjectName SubjectName -> SubjectCode ดังนั้นที่สำคัญผู้สมัคร 1 {StudentName, SubjectCode, #Exam}และที่สำคัญผู้สมัคร 2 {StudentName, subjectName, #Exam} แอตทริบิวต์ที่สำคัญคือ{StudentName, SubjectCode, SubjectName, #Exam}และแอตทริบิวต์ที่ไม่ใช่นายกรัฐมนตรีคือGrade ตามคำจำกัดความของรูปแบบปกติที่สองแอตทริบิวต์ที่ไม่ใช่นายกไม่สามารถขึ้นอยู่กับส่วนของคีย์ตัวเลือก แอ็ตทริบิวต์ที่ไม่ใช่ไพรม์เท่านั้น (เกรด) ไม่ได้ขึ้นอยู่กับส่วนของคีย์ตัวเลือกดังนั้นตารางนี้จะปรากฏเป็น 2NF ปัญหาคือฉันคิดว่ามีบางอย่างผิดปกติ (และฉันอาจผิด) ฉันคิดว่าผู้เข้าร่วมการศึกษาควรมีตารางของตนเอง …

3
วิธีแทรกค่าลงในตารางจากสองตารางที่แตกต่างกันอย่างไร
ฉันมีสามโต๊ะ students table ------------------------------------ id(PK, A_I) | student_name | nationality teachers table ------------------------------------ id(PK, A_I) | teacher_name | email classroom table ---------------------- id(PK, A_I) | date | teacher_id(FK to teachers.id) | student_id(FK to students.id) ถ้าฉันได้รับชื่อครู ( davidตัวอย่าง) และ student_id ( 7ตัวอย่าง) และขอให้ใส่teacher_idลงในclassroomตารางตามidในteachersตารางฉันจะทำ: insert into classroom (date, teacher_id, student_id) select '2014-07-08', …

2
ความสัมพันธ์แบบหนึ่งต่อหนึ่งเป็นมาตรฐานหรือไม่
พิจารณาว่าเรามีชุดข้อมูลสถิติขนาดใหญ่สำหรับบันทึก เช่น 20-30 INTคอลัมน์ มันจะดีกว่าหรือไม่ที่จะเก็บทั้งชุดไว้ในตารางเดียวเนื่องจากทั้งหมดนั้นเป็นของระเบียนหรือสร้างตารางอื่นที่เชื่อมโยงกับความสัมพันธ์แบบหนึ่งต่อหนึ่ง ข้อได้เปรียบของอดีตคือการหลีกเลี่ยงJOINและเข้าถึงข้อมูลสถิติทั้งหมดสำหรับบันทึกที่เกี่ยวข้องได้อย่างรวดเร็ว ข้อได้เปรียบของหลังคือการทำให้คอลัมน์เป็นระเบียบ คอลัมน์แรกนั้นเป็นแบบอ่านอย่างละเอียดและแบบที่สองเป็นแบบเขียนมาก แน่นอนฉันคิดว่ามันไม่มีผลกระทบอย่างมีนัยสำคัญต่อประสิทธิภาพเนื่องจากฉันใช้ InnoDB กับการบล็อกระดับแถว โดยทั่วไปฉันต้องการทราบว่าเป็นประโยชน์หรือไม่ในการแยกชุดข้อมูลที่แตกต่างกันสำหรับบันทึกเดียว?

3
ข้อ จำกัด ด้านความซื่อสัตย์ในฐานข้อมูลเชิงสัมพันธ์ - เราควรมองข้ามหรือไม่?
ฉันกำลังสนทนาอย่างถาวรกับผู้พัฒนาของ บริษัท ที่ฉันทำงานอยู่เพราะพวกเขาบอกว่าเป็นการดีกว่าที่จะกำจัดการบังคับใช้ความสัมพันธ์ (ผ่านคำจำกัดความของคีย์ต่างประเทศ) ในฐานข้อมูลเชิงสัมพันธ์เพื่อเพิ่มความเร็วในการสืบค้นที่ใหญ่ขึ้น ประสิทธิภาพ. แพลตฟอร์มภายใต้การพิจารณาคือ MySQL 5.x และไม่มีการตั้งค่า KEY ต่างประเทศแม้ข้อ จำกัด หลักบางประการของตารางที่เกี่ยวข้องจะหายไปซึ่งอย่างน้อยสำหรับฉันก็ไม่สมเหตุสมผล อาจจะถูกและผิด แต่ฉันไม่มีข้อโต้แย้งเพียงพอที่จะพูดคุยเกี่ยวกับสถานการณ์นี้ นี่เป็นวิธีที่ได้รับความนิยมเป็นเวลาสามปีแล้ว ฉันใหม่ใน บริษัท นี้ (เพียงหนึ่งเดือน) แต่เป็นผลิตภัณฑ์ "งาน" มีลังเลที่จะปรับปรุงฐานข้อมูล ไม่เป็นไรสิ่งแรกที่ฉันสังเกตเห็นคือหน้าหนึ่งใช้เวลาโหลด 1 นาที (ใช่ 60 วินาที!) หนึ่งในข้อเรียกร้องที่อยู่เบื้องหลังสถานะของกิจการในปัจจุบันคือฐานข้อมูล“ denormalized” นั้นเร็วกว่าฐานข้อมูลปกติ แต่ฉันไม่เชื่อว่าเป็นเรื่องจริง ข้อความค้นหาที่เกี่ยวข้องส่วนใหญ่รวมการดำเนินการของ JOIN ซึ่งทำให้การทำงานช้ามากและช้ามากด้วยข้อมูลจำนวนมาก (ฐานข้อมูลมีจำนวนแถวนับล้าน) โดยทั่วไปการจัดการการดำเนินงาน "CRUD" ถูกนำไปใช้ในระดับรหัสโปรแกรมแอปพลิเคชัน ตัวอย่างเช่นในการลบข้อมูลบางส่วนจากสมมติว่าTableA: มีความจำเป็นต้องตรวจสอบครั้งแรกได้ทันทีหากมีความสัมพันธ์ระหว่างแถวของบางTableAและTableB, ในกรณีที่ความสัมพันธ์ดังกล่าว“ ตรวจพบ” แล้วรหัสโปรแกรมแอปจะไม่อนุญาตให้ลบแถวที่เกี่ยวข้องแต่ หากรหัสโปรแกรมแอปล้มเหลวด้วยเหตุผลบางอย่างการดำเนินการลบจะ“ สำเร็จ” ไม่ว่าจะมีความสัมพันธ์ใด ๆ …

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