เมื่อใดและเพราะเหตุใดบางคนตัดสินใจว่าพวกเขาต้องการสร้างมุมมองในฐานข้อมูล ทำไมไม่เพียงแค่เรียกใช้ขั้นตอนการจัดเก็บปกติหรือเลือก?
เมื่อใดและเพราะเหตุใดบางคนตัดสินใจว่าพวกเขาต้องการสร้างมุมมองในฐานข้อมูล ทำไมไม่เพียงแค่เรียกใช้ขั้นตอนการจัดเก็บปกติหรือเลือก?
คำตอบ:
มุมมองให้ประโยชน์หลายประการ
1. มุมมองสามารถซ่อนความซับซ้อน
หากคุณมีแบบสอบถามที่ต้องเข้าร่วมหลายตารางหรือมีตรรกะหรือการคำนวณที่ซับซ้อนคุณสามารถเขียนรหัสตรรกะทั้งหมดลงในมุมมองจากนั้นเลือกจากมุมมองเช่นเดียวกับที่คุณทำกับตาราง
2. มุมมองสามารถใช้เป็นกลไกความปลอดภัยได้
มุมมองสามารถเลือกคอลัมน์และ / หรือแถวที่แน่นอนจากตาราง (หรือตาราง) และสิทธิ์ตั้งค่าในมุมมองแทนที่จะเป็นตารางต้นแบบ สิ่งนี้จะช่วยให้สามารถแสดงข้อมูลที่ผู้ใช้ต้องการดูเท่านั้น
3. มุมมองสามารถลดความซับซ้อนของการสนับสนุนรหัสดั้งเดิม
ถ้าคุณต้องการ refactor ตารางที่จะแบ่งรหัสจำนวนมากคุณสามารถแทนที่ตารางด้วยมุมมองของชื่อเดียวกัน มุมมองให้สคีมาที่แน่นอนเหมือนกับตารางต้นฉบับในขณะที่สคีมาที่แท้จริงมีการเปลี่ยนแปลง วิธีนี้จะช่วยป้องกันรหัสเดิมที่อ้างอิงกับตารางไม่ให้แตกหักทำให้คุณสามารถเปลี่ยนรหัสเดิมได้ในยามว่าง
นี่เป็นเพียงตัวอย่างบางส่วนของการดูที่มีประโยชน์
เหนือสิ่งอื่นใดมันสามารถใช้เพื่อความปลอดภัย หากคุณมีตาราง "ลูกค้า" คุณอาจต้องการให้คนขายทั้งหมดของคุณสามารถเข้าถึงชื่อที่อยู่รหัสไปรษณีย์และอื่น ๆ ได้ แต่ไม่ใช่ credit_card_number คุณสามารถสร้างมุมมองที่มีเฉพาะคอลัมน์ที่พวกเขาต้องการเข้าถึงและให้สิทธิ์พวกเขาในมุมมอง
Select name, address, zipcode from customer
จะไม่ตอบสนองวัตถุประสงค์แทนcreating a view
?
select * from customer
ซึ่งทำให้พวกเขาเข้าถึงทุกสิ่ง หากคุณให้สิทธิ์การเข้าถึงกับมุมมองไม่ใช่ตารางพวกเขาจะไม่สามารถเข้าถึงฟิลด์ที่ไม่ได้อยู่ในมุมมองได้
มุมมองคือการห่อหุ้มของแบบสอบถาม ข้อความค้นหาที่เปลี่ยนเป็นมุมมองมักจะมีความซับซ้อนและการบันทึกไว้เป็นมุมมองสำหรับการใช้ซ้ำนั้นมีประโยชน์
ฉันมักจะสร้างมุมมองเพื่อยกเลิกการทำให้ปกติและ / หรือข้อมูลรวมที่ใช้บ่อยเพื่อวัตถุประสงค์ในการรายงาน
แก้ไข
หากฉันมีฐานข้อมูลที่หน่วยงานบางอย่างเป็นบุคคล บริษัท บทบาทประเภทของเจ้าของคำสั่งรายละเอียดการสั่งซื้อที่อยู่และโทรศัพท์โดยที่ตารางบุคคลเก็บทั้งพนักงานและผู้ติดต่อและที่อยู่และ ตารางโทรศัพท์ที่เก็บหมายเลขโทรศัพท์สำหรับทั้งบุคคลและ บริษัท และทีมพัฒนาได้รับมอบหมายให้สร้างรายงาน (หรือจัดทำข้อมูลรายงานที่ผู้ที่ไม่ใช่ผู้พัฒนาเข้าถึงได้) เช่นการขายโดยพนักงานหรือการขายโดยลูกค้าหรือยอดขายตามภูมิภาคยอดขายรายเดือน ลูกค้าโดยรัฐ ฯลฯ ฉันจะสร้างชุดของมุมมองที่ยกเลิกความสัมพันธ์ระหว่างฐานข้อมูลเอนทิตีเพื่อให้มีมุมมองแบบบูรณาการมากขึ้น ประโยชน์บางประการอาจรวมถึง:
ด้วยเหตุผลหลายประการ: หากคุณมีการรวมที่ซับซ้อนบางครั้งก็เป็นการดีที่สุดที่จะมีมุมมองเพื่อให้การเข้าถึงใด ๆ จะมีการเชื่อมต่อที่ถูกต้องเสมอและนักพัฒนาไม่จำเป็นต้องจำตารางทั้งหมดที่พวกเขาอาจต้องการ โดยทั่วไปอาจเป็นแอปพลิเคชันทางการเงินซึ่งเป็นสิ่งสำคัญอย่างยิ่งที่รายงานทางการเงินทั้งหมดจะใช้ข้อมูลชุดเดียวกัน
หากคุณมีผู้ใช้ที่คุณต้องการ จำกัด ระเบียนที่พวกเขาเคยเห็นคุณสามารถใช้มุมมองให้พวกเขาเข้าถึงเฉพาะในมุมมองไม่ใช่ตารางพื้นฐานแล้วแบบสอบถามมุมมอง
ดูเหมือนว่ารายงาน Crystal จะต้องการใช้มุมมองกับ procs ที่จัดเก็บดังนั้นผู้ที่ทำรายงานจำนวนมากมักจะใช้มุมมองเป็นจำนวนมาก
มุมมองนี้ยังมีประโยชน์มากเมื่อทำการปรับโครงสร้างฐานข้อมูล คุณสามารถซ่อนการเปลี่ยนแปลงเพื่อให้รหัสเก่าไม่สามารถมองเห็นได้ด้วยการสร้างมุมมอง อ่านบนฐานข้อมูล refactoring เพื่อดูว่างานนี้เป็นวิธีที่มีประสิทธิภาพมากในการ refactor
ข้อดีอย่างหนึ่งที่สำคัญของมุมมองในกระบวนงานที่เก็บไว้คือคุณสามารถใช้มุมมองเหมือนกับที่คุณใช้ตาราง กล่าวคือมุมมองสามารถอ้างถึงโดยตรงในFROM
ส่วนของแบบสอบถาม เช่นSELECT * FROM dbo.name_of_view
.
ในทุก ๆ ทางกระบวนการจัดเก็บมีประสิทธิภาพมากขึ้น คุณสามารถส่งผ่านพารามิเตอร์รวมทั้งout
พารามิเตอร์ที่ช่วยให้คุณได้อย่างมีประสิทธิภาพในการคืนค่าหลายครั้งที่คุณสามารถทำได้SELECT
, INSERT
, UPDATE
และDELETE
การดำเนินงาน ฯลฯ เป็นต้น
หากคุณต้องการให้ความสามารถในการดูของจากภายในFROM
ประโยค แต่คุณต้องการที่จะผ่านในพารามิเตอร์ก็มีวิธีที่จะทำเช่นกัน มันเรียกว่าฟังก์ชั่นที่มีค่าเป็นตาราง
นี่เป็นบทความที่มีประโยชน์มากในหัวข้อ:
แก้ไข:โดยวิธีการเรียงลำดับของคำถามนี้มุมมองที่มีประโยชน์มากกว่าฟังก์ชั่นที่มีมูลค่าตาราง? ฉันไม่มีคำตอบที่ดีจริงๆ แต่ฉันจะทราบว่าไวยากรณ์ T-SQL สำหรับการสร้างมุมมองนั้นง่ายกว่าฟังก์ชั่นที่ให้คุณค่ากับตารางและผู้ใช้ฐานข้อมูลของคุณอาจคุ้นเคยกับมุมมองมากขึ้น
มันสามารถทำหน้าที่เป็น "คนกลาง" ที่ดีระหว่าง ORM และตารางของคุณ
ตัวอย่าง:
เรามีตารางบุคคลที่เราจำเป็นต้องเปลี่ยนโครงสร้างดังนั้นคอลัมน์บางคอลัมน์จะถูกย้ายไปที่อีกตารางหนึ่งและจะมีความสัมพันธ์แบบหนึ่งต่อหลายคน
อย่างไรก็ตามระบบส่วนใหญ่ที่เกี่ยวกับบุคคลยังคงใช้ SomeColumn เป็นสิ่งเดียวไม่ใช่หลายสิ่ง เราใช้มุมมองเพื่อรวบรวมบางคอลเลกชันทั้งหมดและวางไว้ในมุมมองซึ่งทำงานได้ดี
สิ่งนี้ได้ผลเพราะชั้นข้อมูลเปลี่ยนไป แต่ความต้องการทางธุรกิจไม่ได้เปลี่ยนไปโดยพื้นฐานดังนั้นวัตถุทางธุรกิจไม่จำเป็นต้องเปลี่ยนแปลง หากวัตถุทางธุรกิจมีการเปลี่ยนแปลงฉันไม่คิดว่านี่จะเป็นทางออกที่ทำงานได้ แต่มุมมองจะทำหน้าที่เป็นจุดกึ่งกลางที่ดี
ในการมุ่งเน้นไปที่ มุมมองข้อมูลเฉพาะอนุญาตให้ผู้ใช้มุ่งเน้นไปที่ข้อมูลเฉพาะที่พวกเขาสนใจและในงานเฉพาะที่พวกเขามีความรับผิดชอบ ข้อมูลที่ไม่จำเป็นสามารถออกจากมุมมอง สิ่งนี้ยังเพิ่มความปลอดภัยของข้อมูลเนื่องจากผู้ใช้สามารถเห็นเฉพาะข้อมูลที่กำหนดไว้ในมุมมองและไม่ใช่ข้อมูลในตารางต้นแบบ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้มุมมองเพื่อความปลอดภัยดูการใช้มุมมองเป็นกลไกความปลอดภัย
ในการ ทำให้การจัดการข้อมูลง่ายขึ้นสามารถทำให้ผู้ใช้จัดการข้อมูลได้ง่ายขึ้น คุณสามารถกำหนดแบบสอบถามที่ใช้บ่อยการเข้าร่วมแบบสอบถาม UNION และแบบสอบถาม SELECT เพื่อให้ผู้ใช้ไม่ต้องระบุเงื่อนไขและคุณสมบัติทั้งหมดในแต่ละครั้งที่มีการดำเนินการเพิ่มเติมในข้อมูลนั้น ตัวอย่างเช่นเคียวรีที่ซับซ้อนที่ใช้สำหรับวัตถุประสงค์ในการรายงานและดำเนินการเคียวรีย่อยการรวมภายนอกและการรวมเพื่อดึงข้อมูลจากกลุ่มของตารางสามารถสร้างเป็นมุมมองได้ มุมมองทำให้การเข้าถึงข้อมูลง่ายขึ้นเนื่องจากแบบสอบถามพื้นฐานไม่จำเป็นต้องเขียนหรือส่งทุกครั้งที่มีการสร้างรายงาน มีการสอบถามมุมมองแทน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการข้อมูล
คุณยังสามารถสร้างฟังก์ชั่นที่ผู้ใช้กำหนดเองแบบอินไลน์ที่ดำเนินการทางตรรกะในมุมมองแบบกำหนดพารามิเตอร์หรือมุมมองที่มีพารามิเตอร์ในเงื่อนไขการค้นหา WHERE-clause สำหรับข้อมูลเพิ่มเติมดู Inline ฟังก์ชั่นที่ผู้ใช้กำหนด
ในการปรับแต่ง มุมมองข้อมูลช่วยให้ผู้ใช้ที่แตกต่างกันสามารถดูข้อมูลได้หลายวิธีแม้ว่าพวกเขาจะใช้ข้อมูลเดียวกันพร้อมกัน นี่เป็นข้อได้เปรียบโดยเฉพาะอย่างยิ่งเมื่อผู้ใช้ที่มีความสนใจและระดับทักษะต่างกันแบ่งปันฐานข้อมูลเดียวกัน ตัวอย่างเช่นสามารถสร้างมุมมองที่ดึงข้อมูลเฉพาะสำหรับลูกค้าที่ผู้จัดการบัญชีเกี่ยวข้อง มุมมองสามารถกำหนดว่าจะดึงข้อมูลใดขึ้นอยู่กับรหัสเข้าสู่ระบบของผู้จัดการบัญชีที่ใช้มุมมอง
การส่งออกและนำเข้า มุมมองข้อมูลสามารถใช้เพื่อส่งออกข้อมูลไปยังแอปพลิเคชันอื่น ตัวอย่างเช่นคุณอาจต้องการใช้ร้านค้าและตารางการขายในฐานข้อมูล pubs เพื่อวิเคราะห์ข้อมูลการขายโดยใช้Microsoft® Excel ในการทำเช่นนี้คุณสามารถสร้างมุมมองตามร้านค้าและตารางการขาย จากนั้นคุณสามารถใช้ยูทิลิตี bcp เพื่อส่งออกข้อมูลที่กำหนดโดยมุมมอง ข้อมูลยังสามารถนำเข้าสู่มุมมองบางอย่างจากไฟล์ข้อมูลโดยใช้ยูทิลิตี bcp หรือคำสั่ง BULK INSERT โดยระบุว่าสามารถแทรกแถวเข้าไปในมุมมองโดยใช้คำสั่ง INSERT สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อ จำกัด ในการคัดลอกข้อมูลลงในมุมมองให้ดู INSERT สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ยูทิลิตี bcp และคำสั่ง BULK INSERT เพื่อคัดลอกข้อมูลไปยังและจากมุมมองให้ดูที่การคัดลอกไปยังหรือจากมุมมอง
เพื่อรวมข้อมูลที่แบ่งพาร์ติชัน ตัวดำเนินการชุด Transact-SQL UNION สามารถใช้ภายในมุมมองเพื่อรวมผลลัพธ์ของแบบสอบถามสองรายการขึ้นไปจากตารางแยกกันเป็นชุดผลลัพธ์เดียว สิ่งนี้ปรากฏต่อผู้ใช้เป็นตารางเดี่ยวที่เรียกว่ามุมมองที่แบ่ง ตัวอย่างเช่นหากตารางหนึ่งมีข้อมูลการขายสำหรับวอชิงตันและอีกตารางหนึ่งมีข้อมูลการขายสำหรับแคลิฟอร์เนียมุมมองอาจถูกสร้างขึ้นจาก UNION ของตารางเหล่านั้น มุมมองแสดงข้อมูลการขายสำหรับทั้งสองภูมิภาค ในการใช้มุมมองที่แบ่งพาร์ติชันคุณสร้างตารางที่เหมือนกันหลายตารางโดยระบุข้อ จำกัด เพื่อกำหนดช่วงของข้อมูลที่สามารถเพิ่มลงในแต่ละตารางได้ มุมมองจะถูกสร้างขึ้นโดยใช้ตารางฐานเหล่านี้ เมื่อมีการสอบถามมุมมอง SQL Server จะกำหนดตารางที่จะได้รับผลกระทบจากแบบสอบถามโดยอัตโนมัติและอ้างอิงเฉพาะตารางเหล่านั้น ตัวอย่างเช่น, ถ้าแบบสอบถามระบุว่าต้องการข้อมูลการขายสำหรับสถานะ Washington เท่านั้น SQL Server จะอ่านเฉพาะตารางที่มีข้อมูลการขายของ Washington เท่านั้น ไม่มีการเข้าถึงตารางอื่น
มุมมองที่แบ่งพาร์ติชันสามารถขึ้นอยู่กับข้อมูลจากแหล่งต่าง ๆ หลายแหล่งเช่นเซิร์ฟเวอร์ระยะไกลไม่ใช่เฉพาะตารางในฐานข้อมูลเดียวกัน ตัวอย่างเช่นเมื่อต้องการรวมข้อมูลจากเซิร์ฟเวอร์ระยะไกลที่แตกต่างกันแต่ละแห่งจะเก็บข้อมูลสำหรับภูมิภาคต่าง ๆ ขององค์กรของคุณคุณสามารถสร้างแบบสอบถามแบบกระจายที่ดึงข้อมูลจากแหล่งข้อมูลแต่ละแหล่งแล้วสร้างมุมมองตามแบบสอบถามแบบกระจายเหล่านั้น แบบสอบถามใด ๆ ที่อ่านข้อมูลจากตารางบนเซิร์ฟเวอร์ระยะไกลที่มีข้อมูลที่ร้องขอโดยแบบสอบถามเท่านั้น เซิร์ฟเวอร์อื่นที่อ้างถึงโดยแบบสอบถามแบบกระจายในมุมมองจะไม่ถูกเข้าถึง
เมื่อคุณแบ่งพาร์ติชันข้อมูลข้ามหลายตารางหรือหลายเซิร์ฟเวอร์การสืบค้นที่เข้าถึงข้อมูลเพียงเศษเสี้ยวจะสามารถทำงานได้เร็วขึ้นเนื่องจากมีข้อมูลน้อยกว่าในการสแกน หากตารางอยู่บนเซิร์ฟเวอร์ที่แตกต่างกันหรือในคอมพิวเตอร์ที่มีโปรเซสเซอร์หลายตัวแต่ละตารางที่เกี่ยวข้องในแบบสอบถามสามารถสแกนแบบขนานได้เช่นกันซึ่งจะช่วยปรับปรุงประสิทธิภาพการสืบค้น นอกจากนี้งานบำรุงรักษาเช่นการสร้างดัชนีใหม่หรือสำรองข้อมูลตารางสามารถดำเนินการได้เร็วขึ้น โดยใช้มุมมองที่แบ่งพาร์ติชันข้อมูลยังคงปรากฏเป็นตารางเดียวและสามารถสอบถามได้โดยไม่ต้องอ้างอิงตารางต้นแบบที่ถูกต้องด้วยตนเอง
มุมมองที่แบ่งพาร์ติชันสามารถอัปเดตได้หากตรงกับเงื่อนไขใด ๆ เหล่านี้: ทริกเกอร์ INSTEAD OF ถูกกำหนดไว้ในมุมมองพร้อมกับตรรกะเพื่อรองรับคำสั่ง INSERT, UPDATE และ DELETE
ทั้งมุมมองและคำสั่ง INSERT, UPDATE และ DELETE จะปฏิบัติตามกฎที่กำหนดไว้สำหรับมุมมองที่แบ่งพาร์ติชันได้ สำหรับข้อมูลเพิ่มเติมโปรดดูการสร้างมุมมองที่แบ่งพาร์ติชัน
https://technet.microsoft.com/en-us/library/aa214282(v=sql.80).aspx#sql:join
นี่คือเหตุผลทั่วไปสองประการ:
คุณสามารถใช้มันเพื่อความปลอดภัย ไม่ให้สิทธิ์ในตารางหลักและสร้างมุมมองที่ จำกัด การเข้าถึงคอลัมน์หรือแถวและให้สิทธิ์แก่ผู้ใช้ในการดูมุมมอง
คุณสามารถใช้มันเพื่อความสะดวก เข้าร่วมบางตารางที่คุณใช้ร่วมกันตลอดเวลาในมุมมอง สิ่งนี้สามารถทำให้คิวรีสอดคล้องและง่ายขึ้น
มีเหตุผลมากกว่าหนึ่งข้อในการทำเช่นนี้ บางครั้งทำให้การสืบค้นเข้าร่วมทั่วไปนั้นทำได้ง่ายเพียงแค่สอบถามชื่อตารางแทนที่จะทำการรวมทั้งหมด
อีกเหตุผลหนึ่งคือการ จำกัด ข้อมูลให้กับผู้ใช้ที่แตกต่างกัน ตัวอย่างเช่น:
ตารางที่ 1: Colums - USER_ID; USERNAME; SSN
ผู้ใช้ที่เป็นผู้ดูแลระบบสามารถมี privs บนตารางจริงได้ แต่ผู้ใช้ที่คุณไม่ต้องการเข้าถึงเพื่อพูด SSN คุณสร้างมุมมองเป็น
สร้างชื่อผู้ใช้ดูให้เลือก user_id ชื่อผู้ใช้จากตารางที่ 1;
จากนั้นให้สิทธิ์ในการเข้าถึงมุมมองไม่ใช่ตาราง
มุมมองสามารถมาจากสวรรค์เมื่อทำการรายงานบนฐานข้อมูลดั้งเดิม โดยเฉพาะอย่างยิ่งคุณสามารถใช้ชื่อตารางที่ละเอียดอ่อนแทนชื่อตัวอักษร 5 ตัวที่คลุมเครือ (โดยที่ 2 ในนั้นเป็นคำนำหน้าทั่วไป!) หรือชื่อคอลัมน์ที่เต็มไปด้วยตัวย่อที่ฉันแน่ใจว่าเหมาะสมในเวลานั้น
โดยทั่วไปฉันใช้มุมมองเพื่อทำให้ชีวิตง่ายขึ้นรับรายละเอียดเพิ่มเติมจากเอนทิตีบางอย่างที่เก็บไว้ในตารางหลาย ๆ อัน (ขจัดรหัสการเข้าร่วมจำนวนมากเพื่อเพิ่มความสามารถในการอ่าน) และบางครั้งการแบ่งปันข้อมูลผ่านฐานข้อมูลหลาย ๆ
นี่คือวิธีการใช้มุมมองพร้อมกับการอนุญาตเพื่อ จำกัด คอลัมน์ที่ผู้ใช้สามารถอัปเดตในตาราง
/* This creates the view, limiting user to only 2 columns from MyTestTable */
CREATE VIEW dbo.myTESTview
WITH SCHEMABINDING AS
SELECT ID, Quantity FROM dbo.MyTestTable;
/* This uses the view to execute an update on the table MyTestTable */
UPDATE dbo.myTESTview
SET Quantity = 7
WHERE ID = 1
เมื่อฉันต้องการที่จะเห็นภาพรวมของตารางและ / หรือมุมมอง (ในแบบอ่านอย่างเดียว)
ฉันชอบที่จะใช้มุมมองเกี่ยวกับขั้นตอนการจัดเก็บเมื่อฉันเรียกใช้แบบสอบถามเท่านั้น มุมมองยังสามารถทำให้การรักษาความปลอดภัยง่ายขึ้นสามารถใช้เพื่อเพิ่มความสะดวกในการแทรก / อัปเดตไปยังหลาย ๆ ตารางและสามารถใช้เพื่อถ่ายภาพ / ข้อมูลที่เป็นรูปธรรม (เรียกใช้แบบสอบถามที่ใช้เวลานาน
ฉันใช้มุมมองที่เป็นรูปธรรมสำหรับคำสั่งเรียกใช้ที่ไม่จำเป็นต้องรักษาความถูกต้องตามเวลาจริง
มุมมองยังแยกย่อยการกำหนดค่าที่ซับซ้อนมากและตารางเป็นส่วนที่จัดการได้ซึ่งง่ายต่อการสอบถาม ในฐานข้อมูลของเราระบบการจัดการตารางทั้งหมดของเราแบ่งออกเป็นมุมมองจากตารางขนาดใหญ่หนึ่งตาราง
นี้ไม่ได้ตอบคำถามของคุณว่า แต่ฉันคิดว่ามันจะมีมูลค่าการกล่าวขวัญมองเห็นวิวรูปธรรม ประสบการณ์ของฉันส่วนใหญ่อยู่กับOracleแต่ SQL-Server นั้นค่อนข้างคล้ายกัน
เราใช้สิ่งที่คล้ายกันในสถาปัตยกรรมของเราเพื่อแก้ไขปัญหาประสิทธิภาพการทำงานของ XML ระบบของเราได้รับการออกแบบโดยมีข้อมูลจำนวนมากเก็บไว้เป็น XML ในแถวและแอปพลิเคชันอาจต้องค้นหาค่าเฉพาะภายใน การจัดการ XMLTypes จำนวนมากและการเรียกใช้ XPath ข้ามแถวจำนวนมากมีผลกระทบอย่างมากต่อประสิทธิภาพดังนั้นเราจึงใช้รูปแบบของมุมมองที่เป็นรูปธรรมเพื่อแยกโหนด XML ที่ต้องการออกเป็นตารางสัมพันธ์เมื่อใดก็ตามที่ตารางฐานเปลี่ยนแปลง สิ่งนี้ให้ภาพรวมทางกายภาพของแบบสอบถามอย่างมีประสิทธิภาพ ณ เวลาหนึ่งเมื่อเทียบกับมุมมองมาตรฐานซึ่งจะเรียกใช้แบบสอบถามตามความต้องการ
ฉันเห็นโพรซีเดอร์ที่เก็บเพิ่มเติมเป็นวิธีที่ฉันสามารถเรียกใช้กับข้อมูลของฉันได้ในขณะที่มุมมองของฉันมีกลไกในการสร้างเวอร์ชันฐานข้อมูลสังเคราะห์ซึ่งเคียวรีหรือโพรซีเดอร์ที่เก็บสามารถสร้างได้ ฉันจะสร้างมุมมองเมื่อการทำให้เข้าใจง่ายขึ้นหรือการรวมเข้าด้วยกัน ฉันจะเขียนขั้นตอนการจัดเก็บเมื่อฉันต้องการให้บริการที่เฉพาะเจาะจงมาก
สิ่งหนึ่งที่อยากรู้เกี่ยวกับมุมมองคือ Microsoft Access มองเห็นเป็นตาราง: เมื่อคุณแนบ Microsoft Access ส่วนหน้ากับฐานข้อมูล SQL โดยใช้ ODBC คุณจะเห็นตารางและมุมมองในรายการของตารางที่มีอยู่ ดังนั้นหากคุณกำลังเตรียมรายงานที่ซับซ้อนใน MS Access คุณสามารถปล่อยให้เซิร์ฟเวอร์ SQL ทำการเข้าร่วมและทำการสืบค้นและทำให้ชีวิตของคุณง่ายขึ้นอย่างมาก เหมือนกันสำหรับการจัดทำแบบสอบถามใน MS Excel
ฉันมีมุมมอง 10 หรือมากกว่านั้นในฐานข้อมูลการผลิตของฉัน ฉันใช้หลายคอลัมน์สำหรับฉันใช้ตลอดเวลา หนึ่งชุดที่ฉันใช้มาจาก 7 ตารางบางตัวมีตัวเชื่อมด้านนอกและแทนที่จะเขียนใหม่อย่างต่อเนื่องที่ฉันต้องเรียกมุมมองนั้นในตัวเลือกและทำการรวมหนึ่งหรือ 2 ตัว สำหรับฉันมันเป็นเพียงการประหยัดเวลา
ฉันกำลังสร้าง xxx ที่แมปความสัมพันธ์ทั้งหมดระหว่างตารางหลัก (เช่นตารางผลิตภัณฑ์) และตารางอ้างอิง (เช่น ProductType หรือ ProductDescriptionByLanguage) สิ่งนี้จะสร้างมุมมองที่จะช่วยให้ฉันเรียกคืนผลิตภัณฑ์และรายละเอียดทั้งหมดที่แปลจากปุ่มต่างประเทศเป็นคำอธิบาย จากนั้นฉันก็สามารถใช้ ORM เพื่อสร้างวัตถุเพื่อสร้างกริดกล่องคอมโบ ฯลฯ
คิดว่าเป็นการ refactoring สกีมาฐานข้อมูลของคุณ
ฉันคิดอย่างแรกเพื่อซ่อนความซับซ้อนของแบบสอบถาม มันเหมาะสมมากสำหรับมุมมองวิธีการที่เราปกติตารางฐานข้อมูลเพิ่มขึ้นตอนนี้การดึงข้อมูลเป็นเรื่องยากมากเมื่อจำนวนตารางเพิ่มขึ้นวิธีที่ดีที่สุดในการจัดการคือการติดตามมุมมองถ้าฉันผิดฉัน
เราสร้างมุมมองเพื่อ จำกัด หรือ จำกัด การเข้าถึงแถว / คอลัมน์ทั้งหมดในตารางหากเจ้าของต้องการให้แชร์เฉพาะแถว / คอลัมน์ที่ จำกัด หรือ จำกัด เท่านั้นเขาจะสร้างมุมมองด้วยคอลัมน์เหล่านั้น
เพื่อความปลอดภัย:ให้สิทธิ์ผู้ใช้แต่ละรายในการเข้าถึงฐานข้อมูลผ่านชุดมุมมองขนาดเล็กที่มีข้อมูลเฉพาะที่ผู้ใช้หรือกลุ่มผู้ใช้ได้รับอนุญาตให้ดูและ จำกัด การเข้าถึงข้อมูลอื่นของผู้ใช้
ความเรียบง่ายสำหรับคิวรีและโครงสร้าง : มุมมองสามารถดึงข้อมูลจากหลาย ๆ ตารางและนำเสนอตารางเดียวทำให้ข้อมูลง่ายขึ้นและเปลี่ยนเคียวรีหลายตารางไปเป็นคิวรีตารางเดียวสำหรับมุมมองและทำให้ผู้ใช้สามารถดูโครงสร้างฐานข้อมูล ฐานข้อมูลเป็นชุดของตารางเสมือนที่เฉพาะเจาะจงสำหรับผู้ใช้เฉพาะหรือกลุ่มของผู้ใช้
สำหรับการสร้างโครงสร้างฐานข้อมูลที่สอดคล้องกัน: มุมมองนำเสนออิมเมจที่ไม่เปลี่ยนแปลงของโครงสร้างฐานข้อมูลที่สอดคล้องกันแม้ว่าตารางต้นฉบับจะมีการเปลี่ยนแปลง