>> ขวาทั้งหมด
ดังนั้นไม่ต้องกังวลใจต่อ SQL, Structured Query Language
ดังนั้นคุณอาจจะใช้ที่นี้ น้อยใน CS50 บางทีใน CS165,
อาจจะอยู่ในของคุณเอง โครงการส่วนบุคคล
และสิ่งที่ไม่ SQL ช่วยให้คุณทำ ใน SQL Server มากกว่าปกติ?
ใช่?
[ไม่ได้ยินหมายเหตุ]
ตกลงที่ถูกมาก วิธีการรักษาความปลอดภัยของการบอกว่ามัน
ใช่ ดังนั้นจึงช่วยให้ คุณสามารถเก็บข้อมูล
และที่สำคัญช่วยให้ คุณสามารถสอบถามข้อมูล
และนี่คือก้าวไปข้างหน้า
จากการใช้สิ่งที่ ง่ายเช่น CSV ขวา
ตัวแปรที่คั่นด้วยจุลภาค
ค่าที่คล้ายกัน
ในทำนองเดียวกันช่วยให้คุณประหยัด ข้อมูลหนึ่งแถว
ในแฟ้มข้อความ
แต่สิ่งที่เป็นข้อเสียของ ไฟล์ CSV สำหรับการจัดเก็บข้อมูลของคุณ
แม้ว่าคุณได้อย่างมีประสิทธิภาพ ได้รับแถวและคอลัมน์จากมันได้หรือไม่
ใช่
>> คุณไม่ 'มี องค์กรเดียวกัน
ประสิทธิภาพ [ไม่ได้ยิน]
>> คุณไม่จำเป็นต้องเหมือนกัน องค์กรที่มีประสิทธิภาพ
สิ่งที่คุณหมายถึงอะไร
>> ดีเช่น [ไม่ได้ยิน] เช่นมีหลัก [ไม่ได้ยิน]
>> ตกลง ใช่
>> มันเป็นฐานข้อมูลเชิงสัมพันธ์ คุณสามารถมีหลายฐานข้อมูล
เชื่อมโยงกัน ในรูปแบบที่เฉพาะเจาะจงมาก
>> ตกลง ดี
>> มัน [ไม่ได้ยิน] การตั้ง CSV
>> และแจ้งให้เราปรับแต่ง คำศัพท์น้อย
ตารางดังนั้นหลาย ภายในฐานข้อมูลตรวจสอบว่า
และที่นอกเหนือไปจากสิ่งที่ คุณสามารถทำได้ด้วยเพียงหนึ่ง CSV
แต่จริงๆข้อ จำกัด ด้วย CSV ฉันจะยืนยันเป็น
ที่ขาดประสิทธิภาพของมันทั้งหมด
มันง่ายมากที่จะรูปแบบ
แต่ถ้าคุณต้องการที่จะทำ ค้นหาสิ่งที่เวลาการทำงาน
ของแบบสอบถามที่เลือกใด ๆ ในไฟล์ CSV?
ฉันหมายความว่ามันเป็นเรื่องใหญ่เก่า [ไม่ได้ยิน] ขวา 'ทำให้ในกรณีที่เลวร้ายที่สุด
เขาลุกขึ้นที่ด้านล่างสุด
แม้ว่าคุณจะได้เรียงลำดับทั้ง ไฟล์ CSV ถ้าคุณไม่ทราบ
ที่ตรงไปตรงมาดี คุณยังจะต้องมี
เพื่อค้นหาสิ่งที่ทั้ง
ดังนั้นในสิ่งที่ เรากำลังจะได้รับ
จากการใช้ที่เกิดขึ้นจริง ฐานข้อมูลโดยใช้ภาษา
เช่น SQL คือเราสามารถค้นหา มันและเราสามารถล่วงหน้า
เป็นนักออกแบบฐานข้อมูล ระบุสิ่งที่เป็นทุ่งนา
ที่อาจกำลังจะมี คำถามเกี่ยวกับเพื่อให้ผู้คน
ที่ MySQL หรือไมโครซอฟท์หรือ Oracle,
ใครก็ตามที่ได้ทำฐานข้อมูล ที่คุณใช้สามารถทำทั้งหมด
ของการทำงานหนักของ หาตกลง
รับล้านของ IDS เหล่านี้
วิธีที่เราสามารถจัด - พวกเขาออกมาในหน่วยความจำ
ชนิดของต้นไม้บาง โครงสร้างบางที
เพื่อที่ว่าเมื่อคุณทำ จริงการดำเนินการเลือก
มันเป็นสิ่งที่เป็น ลอการิทึมหรือลอการิทึม
ของลอการิทึมในเวลาค่อนข้าง กว่าจริงจุติ
เป็นสิ่งที่เป็นเส้นตรง
ดังนั้นเราจึงมีจำนวนมาก วิธีการที่มีประสิทธิภาพ
และเรายังสามารถจัดเก็บมากขึ้น ข้อมูลมากขึ้นอย่างรวดเร็ว 'ทำให้เกิด SQL
เซิร์ฟเวอร์จะถูกเก็บไว้โดยทั่วไป ในแรมแม้ว่าชิ้นส่วน
มันอาจจะมีการจัดเก็บไว้บนดิสก์ และคุณอาจจะรู้ว่าตอนนี้
RAM ที่โดยทั่วไป เร็วกว่าดิสก์
เพื่อให้เป็นสิ่งที่ดี
และเรายังสามารถจัดการกับ เห็นพ้องที่ดีกว่ามาก
หากคุณได้รับ 165 หรือ 161 คุณรู้ไหมว่าถ้าสองคนพยายาม
ที่จะทำในสิ่งเดียวกัน ในครั้งเดียวในระบบ
สิ่งที่ไม่ดีสามารถเกิดขึ้นได้โดยทั่วไป
ดังนั้นในคุณสมบัติอื่น ๆ ที่เรา จะได้รับถ้าเราออกแบบตารางของเรา
ในทางที่ถูกต้องคือ การสนับสนุนที่ดีและความปลอดภัย
เมื่อมันมาถึงการทำงานพร้อมกัน
ดังนั้นคนสองคนในสองส่วน
ของโลกใช้เหมือนกัน เว็บไซต์ถ้าพวกเขาทั้งสองพยายาม
ที่จะซื้อบางสิ่งบางอย่างในเวลาเดียวกัน เวลาสั่งซื้อที่ไม่ได้ไป
ที่จะไปในเวลาเดียวกัน
อย่างใดที่พวกเขาจะได้รับการต่อเนื่องกัน โดยคนอื่นที่ไม่ใช่ของเราเอง -
คนอื่นที่ไม่ใช่ตัวเอง
จะฐานข้อมูล ทำเพื่อเรา
ดังนั้นเมื่อมันเป็นรูปแบบที่ง่าย
SQL ช่วยให้เราค้นหา ฐานข้อมูลเชิงสัมพันธ์
เป็นหนึ่งที่มีอย่างใดอย่างหนึ่ง
ตารางหรือมากขึ้นในการที่มันมักจะ
และถ้าเป็น ที่ไม่คุ้นเคยน้อย
คุณสามารถจริงๆเพียงแค่คิด นี้เป็น Excel หรือตัวเลข
หรือสเปรดชีต Google
มันก็มีแถวและคอลัมน์ และมักจะด้านบนของแต่ละ
แถวที่มีชื่อสำหรับมัน
ดังนั้นนี้อาจจะมี ID คอลัมน์คอลัมน์ชื่อ
คอลัมน์ที่อยู่และอื่น ๆ
และแล้วคุณสามารถมีหลาย ตารางดังกล่าวหากคุณต้องการ
ที่จะเริ่มออกวาง ชนิดที่แตกต่างกันของข้อมูล
แต่คุณอาจจำอย่างน้อย จาก CS50 ที่เราพยายาม
เพื่อให้คุณ GUI-based เครื่องมือ [ไม่ได้ยิน]
ในการจัดการฐานข้อมูลของคุณ
มันถูกเรียกว่า phpMyAdmin
จึงเป็นเพียงเรื่องบังเอิญที่ ได้มีการเขียนใน PHP จริงๆ
แต่มันเป็นเพียงแค่บนเว็บ ส่วนหน้าไปยังฐานข้อมูล
และผ่านทางแท็บต่างๆ และการเชื่อมโยงที่คุณสามารถเริ่มต้น
การกำหนดค่าฐานข้อมูล ด้วยตัวคุณเอง
แต่เป็นเครื่องมือที่ดีในการเริ่มต้นที่จะ ได้รับน้อยสะดวกสบายมากขึ้น
ด้วยนอกจากนี้ยังมี ลูกค้าบรรทัดคำสั่ง
ดังนั้นหากมีการใช้เครื่องใช้ CS50 หรือจริงๆใช้คอมพิวเตอร์แมโครใด ๆ
ที่มีข้อมูลบรรทัดคำสั่ง ลูกค้าคุณยังสามารถทำมันได้เรียงลำดับ
ของโรงเรียนเก่าเช่นนี้
เช่นกันโครงการ MySQL, อย่างน้อยรุ่นโอเพนซอร์ส
มันถูกเรียกว่าตอนนี้ MariaDB เพื่อ เหตุผลต่างๆที่คุณสามารถอ่าน
ขึ้นบนวิกิพีเดีย แต่ เป็นซอฟต์แวร์ที่เดียวกัน
มันเป็นรูปแบบเดียวกัน และอื่น ๆ
สวยมากฐานรหัสเดียวกัน
และดังนั้นเมื่อฉันที่นี้ แจ้งให้ตอนนี้ฉันสามารถโต้ตอบ
กับฐานข้อมูลของฉัน มากขึ้นด้วยตนเอง
ดังนั้นในกรณีที่จุด ให้ฉันไปข้างหน้า
และเพียงแค่เปิดขึ้น หน้าต่าง terminal
ฉันเกิดขึ้นเพื่อจะใช้ CS50 เครื่อง แต่คุณสามารถทำเช่นนี้
ในระบบในส่วนใด ๆ ที่คุณมีสิทธิ
ซอฟต์แวร์ที่ติดตั้ง
และฉันจะทำ MySQL-u ชื่อผู้ใช้จอห์นฮาร์วาร์
ในระบบนี้โดยเฉพาะอย่างยิ่ง p- สำหรับรหัสผ่านที่ผมจะพิมพ์
ในอีกหน่อย อย่างปลอดภัยโดยการกดปุ่มใส่
ตอนนี้ฉันได้รับแจ้ง
ฉันจะพิมพ์สีแดงเข้ม ในเครื่องใช้ CS50
และตอนนี้ผมเห็นเป็นหลัก ที่หน้าจอเดียวกัน
แต่มีคำสั่งในขณะนี้ ว่าเราสามารถเริ่มต้นการพิมพ์
เช่นแสดงฐานข้อมูลและ ที่จะแสดงให้ฉันทั้งหมด
ของฐานข้อมูลที่ฉันมี สร้างไว้แล้วในระบบ
สวยมากรายการเดียวกัน คุณจะเห็นใน phpMyAdmin
มีคู่ของคนอื่น ๆ เช่นเป็น คีข้อมูลและการทดสอบ
ซึ่งถ้าคุณกระตุ้นรอบ CS50 เครื่องใช้เราบางซ่อน
ของเหล่านี้ตารางระดับที่ต่ำกว่า
แต่พวกเขาได้รับ มีทั้งหมดในขณะนี้
MySQL จริงมีระดับต่ำ คุณสมบัติเช่นชื่อผู้ใช้
และรหัสผ่านสำหรับฐานข้อมูล ตัวเองไม่ได้สำหรับการใช้งานของคุณ
ที่คุณอาจจะมี ที่ทำงานอยู่บนด้านบนของมัน
ดังนั้นล่วงหน้าวันนี้ผม สร้างฐานข้อมูลคู่
อย่างใดอย่างหนึ่งที่เรียกว่า courses50
ราคาต่อรองคือบางส่วนของคุณได้ใช้ เครื่องมือช้อปปิ้งแน่นอน CS50,
ซึ่งเป็นอินเตอร์เฟซที่ยิ่งใหญ่สำหรับ แคตตาล็อกแน่นอนของนายทะเบียน
และนี้เป็นจริงที่ดี ชุดที่จะพูดคุยเกี่ยวกับสาเหตุ
หนึ่งที่เรากำลังจัดเรียงของทั้งหมด เห็นได้ชัดว่าคุ้นเคยกับหลักสูตร
และอาจารย์ผู้สอนและการประชุม สถานที่และการจัดเรียงทั้งหมด
สิ่งสามัญ ของมหาวิทยาลัย
แต่มันก็ยังมีบางส่วน โอกาสที่น่าสนใจ
สำหรับการออกแบบ
ดังนั้นเราจึงคิดว่าเราต้องการใช้ ความคิดของแคตตาล็อกแน่นอน
และเครื่องมือในการช้อปปิ้งที่ ตัวอย่างเช่นวันนี้ตลอดทั้งการจัดเรียง
ของกรอบบางส่วนของการออกแบบ การตัดสินใจของเราจะต้องทำให้
เพื่อขอเริ่มต้นมี
สมมติว่าที่จริงผมต้องการ ที่จะเป็นตัวแทนที่ง่ายสุด
แน่นอนซื้อเครื่องมือ
และโลกที่ง่ายที่สุด ฉันสามารถจินตนาการและเป็นหนึ่ง
ที่มีหลักสูตร และมีอาจารย์ผู้สอน
และให้คิดว่าจะ เพราะการสนทนา
ว่าทุกหลักสูตร มีอย่างน้อยชื่อ
ดังนั้นขอเริ่มต้นที่ ร่างนี้ออก
ฉันจะใช้ phpMyAdmin เช่นเดียวกับความสะดวกสบาย
ดังนั้นเราจึงไม่ต้องพิมพ์ออกมา ทุกคำสั่งด้วยตนเอง
แต่ที่นี่ผมอยู่ในของฉัน ฐานข้อมูล courses50
หากไม่คุ้นเคยกับเรื่องนี้ก็จะ เป็นเรื่องง่ายมากเมื่อคุณดำน้ำ
ในโครงการของคุณเอง ถ้าคุณต้องการที่จะใช้มัน
ฉันจะสร้าง ตารางที่เรียกว่าหลักสูตร
และฉันเท่านั้นที่สามารถคิด ของสนามหนึ่ง
สำหรับตอนนี้ชื่อของหลักสูตร
ฉันจะไปข้างหน้าและ พูดให้ฉันหนึ่งคอลัมน์
ตอนนี้ที่คุณจำที่คุณได้รับ อินเตอร์เฟซที่เป็นบิต
เช่นนี้
และอื่น ๆ ตรงไปตรงมากลับหัวกลับหาง ของ phpMyAdmin เป็นที่จัดเรียง
ของตัวเองและสอนว่า ผ่าน dropdowns คุณสามารถจัดเรียง
ของดูสิ่งที่เป็นไปได้ของคุณ การตัดสินใจการออกแบบเป็น
ดังนั้นฉันจะให้ ทุกหลักสูตรที่ชื่อ
นั่นคือชื่อของคอลัมน์นี้
และวิธีการเกี่ยวกับชนิดของข้อมูลได้อย่างไร
ส่วนใหญ่ของคุณควรจะรู้ว่าที่ อย่างน้อยบางส่วนของชนิดข้อมูลเหล่านี้
จากประสบการณ์ก่อน
อะไรที่เหมาะสม สำหรับชื่อหลักสูตร
ชารอน?
>> Varchar
>> ตกลง varchar ที่ เป็นตัวแปร Char
และสิ่งที่ไม่ว่า หมายถึงมากขึ้นทางเทคนิค
[ไม่ได้ยินหมายเหตุ]
ตกลง ดังนั้นจึงเป็นสตริง
และด้าน var มันหมายถึงอะไร
ตัวแปร แต่สิ่งที่ หมายความว่าอย่างไร
ใช่?
[ไม่ได้ยินหมายเหตุ]
อย่างแน่นอน ดังนั้นจึงเป็นตัวแปร จำนวนตัวอักษร
ในสตริงขึ้น สูงสุดบาง
ดังนั้นนี่คือครั้งแรกของเรา การตัดสินใจการออกแบบ
จริงเรามีการตัดสินใจ กี่ไบต์ที่สุด
ที่จะจัดสรรให้กับแต่ละสายดังกล่าว
โดยทั่วไปคุณต้องการ การเรียงลำดับของได้ทำให้มันเล็กเกินไป
ได้ทำให้มันมีขนาดใหญ่เกินไป 'ก่อให้เกิดความชัดเจน
ถ้าขนาดเล็กเกินไปคุณเพียงแค่ จะเริ่มต้นการตัดทอนข้อมูล
และคุณจะสูญเสียข้อมูล
และถ้ามันใหญ่เกินไปคุณเพียงแค่ การเรียงลำดับของการบอกฐานข้อมูล
ที่คาดหวังและ เพิ่มประสิทธิภาพสำหรับข้อมูลเพิ่มเติม
กว่ามันอาจจะจริงที่เคยได้รับ
ดังนั้นสิ่งที่เป็นความรู้สึกที่เหมาะสม จำนวนชื่อที่แน่นอนหรือไม่
60? ตกลงดังนั้น 60
ที่ดูเหมือนว่าเหมาะสมสวย
ตราบใดที่ไม่มีการ ข้อยกเว้นที่
มีจริงๆไม่มี ฮาร์ดกฎรวดเร็ว
จะซื่อสัตย์สำหรับ ด้วยเหตุผลทางประวัติศาสตร์จำนวนมาก
ของคนจะเลือก 255 'ทำให้เกิดเป็นเวลาหลายปีที่ถูกจัดเรียง
สูงสุดเริ่มต้นใช้ 8 ไบต์ - 8 บิตเป็นเคาน์เตอร์ของคุณ
ฉันต้องการมากขึ้น [ไม่ได้ยิน] อาจจะใช้อำนาจจาก 2
แต่การจัดเรียงของที่ไม่เกี่ยวข้อง
ดังนั้นเราจึงสามารถไปกับ 60
ที่ดูเหมือนว่าเหมาะสมเป็นเวลานาน
ในขณะที่เราในที่สุดก็ไม่เสียใจมัน 'ที่ทำให้เกิดขีด​​ จำกัด
ตอนนี้สมมติว่าตรงข้าม การตัดสินใจที่ได้รับการทำ
ตัวอักษรไม่ได้ แต่ตัวแปร เพียงแค่สนามถ่าน
ดังนั้นแตกต่างจาก C และ C + +, ถ่าน ไม่ได้หมายความว่าหนึ่งถ่าน
และฐานข้อมูลที่ โดยทั่วไปหมายถึงจำนวนคงที่
ของตัวอักษรในสตริง
สิ่งที่จะคว่ำและ / หรือ ข้อเสียของการเลือก 60 ของฉัน
สำหรับฟิลด์ถ่าน, แทน varchar?
ตรงนี้เป็นชนิดแรก การตัดสินใจของคุณจะต้องทำ
เมื่อตรวจสอบ [ออกเสียง] ออก ของโครงการที่มีคู่ค้าของคุณ
ใช่ชารอนอีกครั้ง
[ไม่ได้ยินหมายเหตุ]
ดี ดังนั้นหากชื่อเป็นน้อยลง
กว่า 60 แล้วคุณจะสูญเสีย สิ่งที่เป็นรูปสามเหลี่ยม
ระหว่าง 60 และ ระยะเวลาที่เกิดขึ้นจริง
ดังนั้นเพียงแค่รู้สึกว่าสิ้นเปลือง ไบต์มากกว่าที่คุณต้องการ
แต่ทำไมมันอยู่?
ก็มีบางส่วนที่กลับหัวกลับหาง
ใช่?
[ไม่ได้ยินหมายเหตุ]
แน่ใจ ดังนั้นบางครั้งคุณ จะได้รู้จำนวนคงที่
ของตัวละครเช่น 10 หลัก สำหรับหมายเลขโทรศัพท์เช่น
แต่ที่ใส่ใจเช่นว่าทำไม ไม่เพียง แต่บอกว่า 11 ต่อไป
หรือทำไมไม่พูด 60 อยู่แล้วด้วย varchar หรือไม่
เราทำในสิ่งที่ได้รับประโยชน์ โดยรู้และการออกแบบ
จำนวนคงที่ ของตัวละคร?
[ไม่ได้ยินหมายเหตุ]
คุณกำลังอยู่บนเส้นทางที่ถูกต้อง
ดังนั้นจึงเป็นเรื่องการเพิ่มประสิทธิภาพ แต่ ก็จริงๆของ - ใช่?
[ไม่ได้ยินหมายเหตุ]
ตกลง ดี ขอโฟกัส ในส่วนสุดท้ายที่
ดังนั้นการจัดทำดัชนี
ดังนั้นมันจะเปิดออกถ้าคุณ รู้ล่วงหน้าว่า
ของเขตข้อมูลของคุณจะ จะเป็น 60 ตัวอักษร
จริงๆคุณสามารถคิดนี้ คอลัมน์ในฐานข้อมูล Excel
ว่ามีตรงมาก ที่เหลือเป็นธรรม
และขอบธรรมที่ถูกต้อง
เพราะทุกคอลัมน์ เป็น 60 ตัวอักษรกว้าง
นั่นหมายความว่านี้ สตริงเป็น 60 ตัวอักษรไป
จากสตริงนี้ 60 ตัวละครออกไปจากนี้
และหนึ่งในนี้และหนึ่งในนี้
ดังนั้นเช่นเดียวกับเมื่อคุณกลับ เรียนรู้ C คุณมีการเข้าถึงแบบสุ่ม
ในโลกของอาร์เรย์ที่ ความคิดเดียวกันที่นี่
ถ้าคอลัมน์ของคุณจะแสดง โดยใช้ตัวอักษรความยาวคงที่เท่านั้น
คุณสามารถจัดทำดัชนีได้อย่างมีประสิทธิภาพ สุ่มถึง 60 หรือ 120 หรือ 180
และคุณจะได้รับเป็นรายบุคคล สตริงมากขึ้นอย่างรวดเร็ว
แล้วถ้าแทนคอลัมน์ของคุณมี ขอบด้านซ้ายตรงจึงจะพูด
แต่สิทธิที่ขรุขระมาก ขอบคอลัมน์
เพราะคุณอาจจะ มี 10 ตัวอักษร
15 ตัวอักษร 5 ตัวอักษร
ดังนั้นนี่ก็เป็น tradeoff
และบางครั้งเพียง ผ่านการทดลองและข้อผิดพลาด
และการทดลอง คุณสามารถคิด
สิ่งที่จริงๆสายที่ถูกต้อง แต่เหล่านี้เป็นชนิด
ของคำถามที่ ควรจะไป
ผ่านความคิดและ / หรือของคุณ ตารางเมื่อมันมาถึงเวลาที่
การออกแบบฐานข้อมูลของคุณ
ดังนั้นไม่จำเป็นต้องถูกต้อง แต่คำตอบที่คุณควร
อย่างน้อยก็มีบาง ประโยคหรือสองในใจ
สำรองสิ่งที่ การตัดสินใจที่คุณทำ
ขวาทั้งหมด
ดังนั้นขอให้เลื่อน ในการแจ้งที่นี่
ที่มี UI ของ phpMyAdmin
ดังนั้นค่าเริ่มต้นสำหรับ ชื่อผมควรระบุ
ว่ามันควรจะมี ค่าเริ่มต้นของ null?
คุณคิดอย่างไร
แน่นอนสามารถมีชื่อ null?
เพียงแค่รู้สึกแปลกใช่มั้ย?
ฉันไม่สามารถคิดใด ๆ ชื่อหลักสูตรที่ฮาร์วาร์
และอาจจะมีบาง กรณีมุมปิดบัง
ที่แน่นอนจะได้รับหมายเลข
และอาจารย์ไม่ได้ เลือกชื่อให้กับมัน แต่ -
ผมหมายถึงที่จะห่ากับที่
เช่นให้ไม่ได้ รำคาญสนับสนุนที่
ผมจะบอกว่าอยู่ในความสนใจ ของฐานข้อมูลที่สะอาดดี
ให้ระบุว่าคุณไม่สามารถ มีค่าเริ่มต้นของโมฆะ
หรือที่เราสามารถทำได้ สิ่งที่ต้องการแน่นอนไม่ได้ตั้งชื่อ
ซึ่งไม่แตกต่างกับ Mac OS และ Windows ทำ
เมื่อคุณสร้าง โฟลเดอร์ตัวอย่างเช่น
แต่มีที่ทำให้ ความรู้สึกเล็ก ๆ น้อย ๆ มากขึ้น
เพื่อให้มนุษย์เห็นสิ่ง
เรากำลังพูดถึง ฐานข้อมูลหลังสิ้นสุดการสันนิษฐาน
แคตตาล็อกแน่นอน
ดังนั้นผมจึงไม่ได้จริงๆแม้ ชอบความคิดของการให้มัน
ในชื่อแน่นอนไม่ได้ตั้งชื่อ
ตั้งแต่ที่ไม่จริง จะช่วยให้ทุกคน
จึงขอออกจากนี้เป็นใคร ซึ่งหมายความว่าเมื่อคุณใส่
ลงในฐานข้อมูลนี้คุณจะต้อง เพื่อให้ทุกหลักสูตรที่ชื่อ
ที่รู้สึกน้อย ทำความสะอาดให้ฉัน
ขวาทั้งหมด
ดังนั้นการเลื่อนต่อไปเรียง
เพียงแค่นี้ก็มีจะทำอย่างไรกับ ชุดตัวอักษรและ whatnot
ถ้าคุณเคยเห็น กล่าวถึงสวีเดน
ใน phpMyAdmin ที่ 'ทำให้คน
ผู้เขียน phpMyAdmin ที่สวีเดน
ที่เป็น PHP หรือมันเป็น MySQL?
หนึ่งในสองของผม ลืมเฉพาะหน้า
แต่มันเป็นเหตุผลทางประวัติศาสตร์
แต่คุณสามารถแสดงทุก ตัวอักษรในภาษาอังกฤษ
ที่คุณสามารถทำได้ด้วยสวีเดน ดังนั้นจึงเป็นส่วนใหญ่ไม่ใช่ปัญหา
CS50 เครื่องใช้ว่าเป็น ที่ใช้ - การกำหนดค่าให้ใช้ UTF-8
เพื่อที่ว่าโดยทั่วไปควร ไม่ปรากฏขึ้นสำหรับคุณ
คุณลักษณะ
ดังนั้นไม่มีการเหล่านี้ จริงที่เกี่ยวข้องที่นี่
ฉันเห็น Binary, นิรนาม, zerofill ไม่ได้ลงนาม
และในการปรับปรุงการประทับเวลาปัจจุบัน
ฟิลด์ที่ใช้เฉพาะ สำหรับฟิลด์ตัวเลขบางอย่าง
หรือสาขาที่บางเวลา
ดังนั้นเราจะข้าม ที่ทั้งหมด
โมฆะ สาขานี้เป็นโมฆะ?
จึงไม่มี เรามีอยู่แล้ว การเรียงลำดับของการสนทนาที่
ดังนั้นเราจึงไม่ต้องการ ค่าเริ่มต้น
เราไม่ต้องการให้เป็นโมฆะ
สิ่งที่เกี่ยวกับดัชนี?
มีสี่ตัวเลือกที่นี่
มันหมายความว่าอะไรถ้าเราระบุ
ที่แถวนี้จะ จะเป็นคีย์หลัก?
คิดกลับไป CS50 หรือ CS165 ถ้าคุณได้รับมัน
[ไม่ได้ยินหมายเหตุ]
อย่างแน่นอน ดังนั้นคีย์หลัก โดยมีความหมายเป็นเขต
ที่ระบุที่ไม่ซ้ำกัน แต่ละแถวในตารางนี้
และคุณสามารถพึ่งพาได้จะทำอย่างไร การระบุที่ไม่ซ้ำกัน
ดังนั้นสิ่งที่ไม่ได้หมายถึง จากนั้นเพียงแค่จะไม่ซ้ำได้อย่างไร
ดีเรียงลำดับของสองเหล่านี้มีการจัดเรียง
ภายใต้ความหมายของ ภายใต้กระโปรงหน้ารถ
แต่โดยทั่วไปคีย์หลักคือ การเรียงลำดับของสัญญาที่คุณทำ
กับสิ่งที่ฐานข้อมูล
เมื่อฉันทำคำสั่ง มองหาหลักสูตร
ฉันจะใช้นี้ สาขาเฉพาะ
และเราจะกลับมาที่ เหตุผลที่เราอาจจะมีสอง
ทางเลือกดังกล่าวที่นี่ หลักหรือที่ไม่ซ้ำกัน
ที่ไม่ซ้ำกันเพียงว่านี้ ด้านเป็นไปได้ที่ไม่ซ้ำกัน
แต่ฉันไม่ได้จริงๆจะทำการใด ๆ ชนิดของความมุ่งมั่นวาจาที่นี่
ที่จะใช้สนามที่ ที่จะทำค้นหาของฉัน
สำหรับเหตุผลที่เราจะ เห็นในเพียงสักครู่
ถ้าเราระบุแทนดัชนี สิ่งที่ไม่ได้หมายถึงการระบุ
ที่สนามมีดัชนีในมันได้หรือไม่
ใช่?
[ไม่ได้ยินหมายเหตุ]
อย่างแน่นอน มันเป็น ที่ดีที่สุดสำหรับการค้นหา
ดังนั้นคุณ - เซิร์ฟเวอร์ของฐานข้อมูล Oracle, MySQL, สิ่งที่
โดยทั่วไปจะทำงานมายากลของมัน เบื้องหลังเมื่อคุณคลิก
ตัวเลือกที่แล้วคลิก บันทึกและมันจะสร้าง
ขึ้นโดยปกติโครงสร้างต้นไม้ B-ต้นไม้ถ้าคุณเคยเห็น
หรือได้ยินออกซึ่งเป็น ต้นไม้สั้นมากที่กำลังมองหา
ที่ช่วยให้คุณดีมาก คุณสมบัติลอการิทึม
เมื่อค้นหาข้อมูล
หากคุณไม่ได้ระบุดัชนี บนสนาม, สิ่งที่เกิดขึ้น
จะทำงาน เวลาของการค้นหา
การโดยพลการ [ออกเสียง] ชื่อหลักสูตร
คืออะไร
[ไม่ได้ยินหมายเหตุ]
โอ้ [ไม่ได้ยิน] เส้นขวา
หากไม่มีการเพิ่มประสิทธิภาพ เจ้าตัวไปยังฐานข้อมูล
และคุณยังไม่ได้คิด ฐานข้อมูลชนิด
ของข้อมูลที่คาดหวัง
ที่ดีที่สุดที่คุณสามารถทำได้คือการตรวจสอบ ทุกอย่างเมื่อคุณกำลังมองหา
ค่าโดยเฉพาะอย่างยิ่ง ถ้ามีได้
ในความเป็นจริงเป็นรายการที่ซ้ำกัน
ข้อความแบบเต็มในขณะเดียวกันเราจะ คลื่นมือของเราตอนนี้
แต่โดยทั่วไปนี้เป็น ชนิดของดัชนีที่ช่วยให้คุณ
เพื่อเพิ่มประสิทธิภาพสำหรับคำหลัก การค้นหาบนสนาม
ดังนั้นนี้อาจจะมี ผู้สมัครที่ดี
เหมือนคำอธิบายหลักสูตร ที่คุณอาจมีคู่
ย่อหน้าและคุณอาจ ต้องการที่จะทำตรงกับสายอักขระย่อย
ข้อความแบบเต็มโดยทั่วไปจะช่วยให้ คุณทำอย่างเป็นธรรมได้อย่างมีประสิทธิภาพ
AI นี้เป็นประเภทที่น่ากลัว ของคำอธิบาย แต่ถ้าเราเลื่อน
มากกว่านั้นคุณจะเห็น เพิ่มโดยอัตโนมัติ
ไม่สามารถใช้งานทั้งที่นี่ แต่เพิ่มขึ้นอัตโนมัติจะมีประโยชน์
เหมือนสนามของ int เพราะ ฐานข้อมูลจะดูแล
ของกระบวนการของการ plusing บวก ก็ถึงเวลาที่คุณทำใส่ทุก
เพื่อให้แม้ว่าคนสองคน แท้จริงคลิกส่ง
ในเวลาเดียวกันและพยายาม เพื่อสร้างแถวอย่างใด
ในฐานข้อมูลซึ่งเป็นหนึ่งใน พวกเขาจะได้รับจำนวนฉัน
อื่น ๆ จะได้รับ ฉันจำนวนบวก 1
คุณไม่ต้องกังวล
เกี่ยวกับตัวเลขสองตัวเป็น ที่ได้รับมอบหมายเหมือนกันถ้าคุณมี
การทำเช่นนี้ด้วยตัวคุณเองในรหัส
ขวาทั้งหมด
ดังนั้นผมชนิดของที่ชอบ ที่เราเคยมีชื่อเป็น
ดังนั้นลองคลิกบันทึก
นี่คือการออกแบบที่ดี สำหรับตารางฐานข้อมูลหรือไม่
และเป็นกันถ้า สนิมใน SQL หรือคุณเรียงลำดับ
เพียงเสมอเปิดตาบอด ตากับสิ่งที่เกิดขึ้น
ฉันจะได้พิมพ์ ตรงที่ -
ทั้งสามสายที่ว่า ให้สีดำและสีขาว
ในบรรทัดคำสั่ง ลูกค้าหรือฉันจะได้ทำ
ว่าในรหัสโปรแกรม
ดังนั้น phpMyAdmin ทั้งหมดจะทำเพื่อ ฉันเป็นเพียงการประหยัดฉันพยายาม
ของความทรงจำบางครั้ง ไวยากรณ์และการพิมพ์ออกมา
เช่นคำสั่งที่น่าเบื่อ
ขวาทั้งหมด
ดังนั้นนี้ไม่ได้รู้สึกเหมือน การออกแบบที่ดีที่สุดตารางหนึ่งเขตข้อมูล
ตอนนี้เราอาจจะมี สิ่งที่ชอบอาจารย์
และสถานที่และรายละเอียด
แต่แม้แล้วโดยใช้ชื่อเดียว
เพื่อระบุหลักสูตร ไม่รู้สึกเหมาะ
สิ่งที่มักจะมี เราทำในอดีตที่ผ่านมา
ถ้าคุณเคยใช้ฐานข้อมูล แถวที่ไ​​ม่ซ้ำกัน?
ไม่ได้ใช้ varchars ปกติ
ใช่?
[ไม่ได้ยินหมายเหตุ]
ใช่ ดังนั้นโดยทั่วไป ID แน่นอน
ดังนั้นที่พบมากที่สุด วิธีการที่นี่โดยเฉพาะอย่างยิ่ง
เมื่อใช้กรอบ เป็นจริงเพียง
ที่จะใช้เป็นจำนวนมากเช่นจำนวนเต็ม
เพื่อให้ฉันไปข้างหน้าและทำเช่นนี้
และเราสามารถทำเช่นนี้ในอีกไม่กี่ วิธี แต่แจ้งให้ทราบว่าผมซูม
ในด้านล่างที่นี่
ฉันจะบอกว่าเพิ่ม คอลัมน์ที่ส่วนท้ายของตาราง
โดยทั่วไปเพียง แต่สำหรับภาพ ความสะดวกสบายที่คุณใส่รหัส
ที่จุดเริ่มต้นของตาราง แม้ว่านี้ไม่ได้จริง
ส่งผลกระทบต่อการทำงาน
ดังนั้นฉันจะบอกว่า เพิ่มหนึ่งคอลัมน์
ที่จุดเริ่มต้นของตาราง
ฉันจะคลิกไปที่ ให้ฉันกลับ UI นี้ที่นี่
ขอเรียก ID นี้
ถ้าเราคิดว่าเรากำลังจะมี ไม่ได้มากขึ้น 4 ล้านหลักสูตร
เขต int ของดี
เราอาจจะหดตัวลง
แต่พื้นที่ที่มีราคาถูก ดังนั้นผู้ที่ใส่ใจจริงๆ
แต่เรากำลังพยายามที่จะ Facebook เขียนตอนนี้
อาจจะไม่ได้สิ่งที่ไม่ดี ในการคาดการณ์ ints ใหญ่
ซึ่งจะทำให้เรา ints 64 บิต
แต่แล้วคุณอย่างแท้จริง สองเท่าของจำนวนบิต
ที่คุณกำลังใช้ tradeoff เล็กน้อยเพื่อ
แต่สิ่งที่จะต้องพิจารณา
ตอนนี้เป็นความสับสน สิ่งเดิม
คุณอาจจะจำ จากการใช้ข้อมูล
ตลอดเวลาที่คุณประกาศ int ที่ เขตข้อมูลที่คุณมักจะเห็นจำนวน
ถัดไปเช่นหมายเลข 10
มันมีอะไรจะทำอย่างไรกับ ขนาดของจำนวน
หรือจำนวนของบิต
ว่าจะทำอย่างไรกับจำนวน ของตัวอักษรที่จะใช้
ที่จะมองเห็นการแสดงผล int ที่สนาม
เมื่อใช้หน้าต่าง terminal
ดังนั้นเราจะเห็นว่าในช่วงเวลา
ดังนั้นอย่าคิดผิด โดยการพิมพ์หมายเลข
ในนั้นแม้ว่าจะเป็น ขอให้เราได้อย่างมีประสิทธิภาพ
สำหรับหนึ่งที่นี่
กว่าที่นี่ฉันจะไป ไปข้างหน้าและพูดไม่ได้ลงนาม
มีเหตุผลที่จะเสียไม่ได้ ทั้งหมดของตัวเลขเชิงลบของเรา
ตั้งแต่ฐานข้อมูล โดยทั่วไปเป็นไป
ที่จะถือว่าเป็นบวก ค่าหรือ null
ID แน่นอน ไม่ควรจะเป็นโมฆะ
และสิ่งที่คุณคิดเกี่ยวกับ ดัชนีสำหรับเขตข้อมูลหมายเลขนี้
ขอให้มันหลัก
ดังนั้นสิ่งที่ถ้า แต่เช่นที่ฉันสามารถ เพียง แต่คิดว่าแน่นอน CS164 หนึ่ง
ที่ฮาร์วาร์และเพียงหนึ่ง แน่นอน CS50 ที่ฮาร์วาร์
และที่สวย จริงมากโดยรวม
ว่ามีอาจจะมีข้อยกเว้น [ไม่ได้ยิน] เทอมทั้ง
หรือสิ่งที่แปลกเช่นนั้น
แต่พื้นฐาน ทำไมมันจะดีกว่า
ใช้รหัสตัวเลขหนึ่ง ระบุตัวตนของหลักสูตรค่อนข้าง
มากกว่าเพียงแค่สตริงที่ไม่ซ้ำกัน?
ใช่?
[ไม่ได้ยินหมายเหตุ]
ตกลงที่น่าสนใจ
ดังนั้นถ้าเรามีการจัดเรียงของ ข้ามที่ระบุไว้ในหลักสูตร
เพื่อให้เป็นตัวอย่างที่ดี
ผมไม่แน่ใจว่าผมจะ แก้ปัญหาว่าที่
โดยให้พวกเขาเหมือนกัน หมายเลขประจำตัวว่าที่
ที่คุณกำลังจะไปกับที่
ไม่ได้หรือไม่ ตกลง แต่แน่นอน กรณีมุมที่จะต้องพิจารณา
หากมีการจัดเรียงของ - เราจำเป็นบางชนิด
ของ aliasing อาจ
[ไม่ได้ยินหมายเหตุ]
แน่ใจ
[ไม่ได้ยินหมายเหตุ]
นั่นเป็นตัวอย่างที่ดี
ชื่ออาจจะเปลี่ยนไป เวลาที่เหมาะสมโดยสิ้นเชิง
สิ่งอื่นใด
[ไม่ได้ยินหมายเหตุ]
ขออภัยพูดอีกครั้ง
[ไม่ได้ยินหมายเหตุ]
ใช่ว่า
ดังนั้นจริงๆที่ พับหัวที่แท้จริงก็คือ
ว่าการใช้ int 32 บิตเป็น อาจเป็นไปได้เร็วขึ้น
กว่าตัวแปรบาง เขตถ่านระยะเวลา
ในกรณีแรกที่สามารถ แท้จริงเหมาะสมในการลงทะเบียนที่
ไม่พูดถึงมาก ปล่อยหน่วยความจำขนาดเล็ก
ในกรณีหลังนี้คุณจะ ที่จะมีการทำรีสอร์ท [ออกเสียง]
การเปรียบเทียบสตริงที่ ในตัวเองที่มีเส้น
ในขนาดของ สตริงอาจ
ดังนั้นจึงเป็นเพียงที่ดี การเพิ่มประสิทธิภาพ
และโดยเฉพาะอย่างยิ่งมันจะ
ที่จะให้เราทำสิ่งที่เรียกว่า ร่วมมีประสิทธิภาพมากขึ้น
ในเวลาเพียงสักครู่
ถ้าอย่างนั้นเรามาดูกันเลยว่า
เราจะระบุว่า นี้เป็นหลัก
เพราะผมไม่ได้โดยเฉพาะอย่างยิ่ง ต้องการการดูแลหรือคิดว่า
เกี่ยวกับสิ่งที่จำนวน เป็นหลักสูตร
ปล่อยให้พวกเขาใช้เวลาใน สิ่งที่มีค่าที่พวกเขาต้องการ
ฉันจะบอกว่าเพิ่มขึ้นอัตโนมัติ ดังนั้นผมจึงสามารถ outsource รายละเอียดที่
ในขณะที่คุณอาจกัน รู้ว่าฮาร์วาร์
อย่างน้อยจะมีที่ไม่ซ้ำกัน ตัวเลขสำหรับหลักสูตร
ผมไม่มีความทรงจำ สิ่งที่หลักสูตรนี้
ฉันรู้ว่าที่ CS50 แคตตาล็อกเป็นจำนวน 4949,
โดยพลการอย่างสมบูรณ์
แต่มีแปลก กรณีมุมในที่แม้แต่
ในการถ่ายโอนข้อมูล registrarial แน่นอนข้อมูลแคตตาล็อก
หลักสูตรบางครั้งเก่า หลักสูตรมีจำนวน 4 เช่น
แต่ในทางเทคนิคว่า เขตทุ่งถ่าน
ที่เพียงเริ่มต้นด้วย 0004
ดังนั้นที่นี่เกินไปที่คุณจะต้อง ระมัดระวังเกี่ยวกับความแตกต่าง
ระหว่างสิ่งที่ต้องการ จำนวนแคตตาล็อกแน่นอน
ซึ่งอาจจะมีบางส่วนของมนุษย์ ความคิดของความยาวคง, 0004,
และคุณไม่ควรเก็บ ที่เช่นใน ints
ชนิดของเขตข้อมูลที่ควร ถูกเก็บไว้ที่อื่น
ดังนั้นในฮาร์วาร์ถ้าเรามี จริงการเรียนการสอน
เครื่องมือช้อปปิ้งก็ อาจจะไม่เพียงพอ
หลักสูตรจำนวน มีเพียง 1, 2, 3, 4
เราอาจจะต้อง
ที่จะมีเขตข้อมูลอื่น เรียกว่าจำนวนแคตตาล็อก
ที่ควรยัง จะไม่ซ้ำกันขึ้น
ในการประชุมของมนุษย์ที่นี่ แต่ก็ไม่ได้เลือกที่ดีที่สุด
สำหรับการระบุที่ไม่ซ้ำกันเนื่องจาก ก็อาจจะมีความยาวตัวแปร
มันอาจจะไม่สี่ ตัวอักษรก็อาจจะมีห้า
ในความเป็นจริงผมคิดว่าไม่กี่ ปีที่ผ่านมาพวกเขาย้าย
สาเหตุห้าของตัวละครที่มี มากกว่า 999 หลักสูตร
ทั้งหมดหรือสิ่งที่ต้องการ นั้นหรือ 9,999 หลักสูตร
ดังนั้นที่อาจจะยกตัวอย่างเช่น ที่สนามไม่ได้เป็นหลัก
แต่มันควรจะไม่ซ้ำกัน
และที่อยู่อีเมล เป็นอีกหนึ่ง
คุณอาจต้องการที่จะไม่ซ้ำกัน
แต่ไม่จำเป็นต้อง คีย์หลักของคุณ
ขวาทั้งหมด
เพื่อให้ฉันปังออกอีก ตารางเร็วกว่านี้
ดังนั้นฉันจะเรียกสิ่งนี้ว่า หนึ่งในอาจารย์และฉันจะ
ที่จะให้นี้ทั้งหมด จำนวนคอลัมน์ของทั้งสอง
ฉันจะเรียนรู้ของฉัน บทเรียนจากครั้งที่แล้ว
ฉันจะเรียก ID คอลัมน์แรก
ฉันจะเรียก ชื่อคอลัมน์ที่สอง
ฉันยังจะทำ Varchar
ฉันจะถือว่าไม่ อาจารย์มีชื่อที่มีความยาว
กว่า 60 ตัวอักษรว่า ตอนนี้อาจจะมีการผลักดันมัน
กับบางชื่อยาวพิเศษ ผู้ที่มีชื่อกลาง
ที่ดีสำหรับวันนี้
จึงขอเลื่อนไปที่นี่
ขอให้ได้รับการรับรองนี้อีกครั้ง
ขอให้หลักนี้
และเราจะให้ชื่อที่ซ้ำกัน
ในกรณีที่มีสองจอห์น สมิ ธ หรือสิ่งที่ต้องการ
และตอนนี้เรามีสองตาราง
ดังนั้นตอนนี้ขอให้ คำถามฉันจะเชื่อมโยง
ในการสอนกับหลักสูตรหรือไม่
ฉันรู้สึกเหมือนฉันชนิดของ ได้รับล่วงหน้าของตัวเอง
เพราะถ้าผู้สอน สอนหลักสูตร
สัญชาตญาณแรกของฉันจะ จริงจะกลับไป
หลักสูตรตระหนักถึงนี้ ไม่ได้เป็นความคิดที่ดี
ให้ฉันจริงเพิ่มคอลัมน์หนึ่ง ที่ส่วนท้ายของตาราง
คลิกไปและฉันจะ เรียกสอนนี้
และฉันจะทำให้ varchar นี้ และฉันจะทำให้ 60
และบางทีฉันจะปล่อยให้มันเป็นโมฆะขณะนี้
ในกรณีที่มีการเรียนการสอนไม่ได้ รับ unsigned ในการสอน
ซึ่งบางครั้งเกิดขึ้นก่อนที่จะ เริ่มยาวและคลิกบันทึก
ซึ่งการออกแบบเหล่านี้ ที่คุณชอบ
ครั้งแรกที่เรามี ตารางการสอนแยกต่างหาก
หรือครั้งที่สองที่เราเพียงแค่ เพิ่มเขตข้อมูลที่แน่นอนหรือไม่
ดังนั้นจึงเป็นที่เชื่อมโยงอย่างใกล้ชิด สอนด้วยหลักสูตร
[ไม่ได้ยินหมายเหตุ]
ตกลง ดี แต่ให้ฉันผลักดันกลับ
มันเป็นเพียงเพื่อให้ง่ายเหมือนที่ฉันสามารถ เพียงพิมพ์ชื่อของบุคคล
ลงในตารางนี้เช่นแน่นอน ที่มีค่าบางส่วนหรือ -
[ไม่ได้ยินหมายเหตุ]
ขวาทั้งหมด
ดีให้ฉันเป็นเรื่องยากที่นี่
ดังนั้นให้ฉันบอกว่า หลักสูตรนี้เป็น CS51
และฉันรู้ว่ามันสอน ปีสองคนนี้
ดังนั้นเฮนรี่ Leitner และเจสท็อป แต่ -
ดังนั้นฉันจะใส่เครื่องหมายจุลภาค ระหว่างสองขวา
ฉันดีจริงๆที่ CSV จากปีกลาย
[ไม่ได้ยินหมายเหตุ]
ตรงขวา
ทันทีที่คุณรีสอร์ท บางสิ่งบางอย่างเช่นนี้
ซึ่งอาจจะรู้สึก ที่เหมาะสมและคุณอาจรู้สึก
เช่นนี้เป็นชนิดของสมาร์ท
ผมเรียงลำดับของการยืมหนึ่ง ความคิดที่จะทำงานได้ดี
ยืมความคิดใหม่และ เรียงลำดับของการรวมพวกเขา
คุณกำลังชนิดของการเอาชนะกันโดยสิ้นเชิง จุดของการใช้ฐานข้อมูล
สาเหตุในสถานที่แรก ' ถ้าค่าใดค่าหนึ่ง
ของการใช้มันเป็นค้นหาได้เร็วขึ้น เพราะของดัชนีต่างๆ
และตารางที่สามารถ ถูกสร้างขึ้นสำหรับคุณ
โดยเครื่องมือฐานข้อมูลของตัวเอง
ตอนนี้ถ้าคุณต้องการค้นหา สำหรับทุกหลักสูตร
ที่เจสสอนตอนนี้คุณมี จะไม่ตรงกับ substring ในทุก
ของเขตสอน
ที่มีประสิทธิภาพหมายถึงการเชิงเส้น ค้นหาอีกครั้ง 'ทำให้คุณมี
เพื่อหาชุดนี้โดยพลการ ของสามตัวละครใดก็ได้
ในด้านการสอนที่นำหน้า
ภายในอาจจะตามมา ด้วยเครื่องหมายจุลภาค
ดังนั้นนี้แน่นอน ไม่ได้เป็นลางดี
เพื่อให้ฉันกลับไปที่โต๊ะ
ให้ฉันไปข้างหน้า หลักสูตรที่ยกเลิก
ฉันจะไปก็ไป ข้างหน้าและวางเขตข้อมูลที่
และถ้าคุณต้องการที่จะ ทำด้วยตัวเอง
ไวยากรณ์เปลี่ยนแปลงตาราง สอนหลักสูตร DROP
จึงขอไปข้างหน้า และบอกว่าใช่ที่
และกลับไปที่ความคิดนี้ก่อนหน้านี้
ที่ฉันมีที่แยกต่างหาก โต๊ะสำหรับผู้สอน
แต่ตอนนี้รู้สึกเล็ก ๆ น้อย ๆ เหมือนฉันสามารถใส่แน่นอน
ในตารางหลักสูตร และอาจารย์ผู้สอน
ในตารางผู้สอน แต่ฉัน อย่างใดต้องการที่จะเชื่อมโยงทั้งสอง
และวิธีการที่คุณจะ ตั้งใจที่เราทำนั้น
[ไม่ได้ยินหมายเหตุ]
ดี ถ้าอย่างนั้นเรามาดูกันเลยว่า
และคุณอาจจะเรียกสิ่งนี้ว่า ตารางในทฤษฎีอะไร
ฉันจะจงใจ เรียกมันว่าสิ่งที่จำนวนมาก
กรอบจะ เรียกว่าในหมู่พวกเขา
Laravel เป็นคุณจะเห็นในบิต
ฉันจะเรียกมันว่าการเรียนการสอน เน้นสอน
เอกพจน์ใช้ในเรื่องนี้ กรณีสำหรับแต่ละคำ
และทุกกรณีที่ต่ำกว่า อีกครั้งและยังมี -
แล้วตามลำดับตัวอักษร เรียงลำดับจากซ้ายไปขวา
นี้โดยพลการโดยสิ้นเชิง แต่ มีแนวโน้มที่จะประชุม
ในหลายกรอบเหล่านี้ ใน PHP ในภาษาอื่น ๆ
? วิธีการหลายคอลัมน์ที่ฉันจะต้องอยู่ใน นี้สิ่งที่เราเรียกเข้าร่วมโต๊ะ
ที่จะเข้าร่วมอีกสองคน ตารางด้วยกันได้อย่างไร
คอลัมน์ที่สาม?
ที่หนึ่ง - สิ่งที่พวกเขาจะเป็นอย่างไร
[ไม่ได้ยินหมายเหตุ]
ตกลง ดี ที่ทำงาน
และเราสามารถทำได้ในทางเทคนิค ตัดมุมที่นี่ แต่มาก
กรอบโดยเฉพาะอย่างยิ่ง จะยังคงให้ได้แถวเหล่านี้
หมายเลขที่ไม่ซ้ำกันแม้ว่า ความหมายแถว
ว่าเราจริงๆดูแลเกี่ยวกับหรือ คอลัมน์ที่เราสนใจจริงๆ
เกี่ยวกับการเป็นที่สองหลังของ สิ่งที่คุณกล่าวว่าแน่นอน ID
และบัตรประจำตัวครู
ดังนั้นเรามาทำเช่นนี้
ฉันจะเรียกแถวนี้ก็ ID, เช่นเดียวกับที่เราเคยทำมาก่อน
แต่หนึ่งฉันจะนี้ ที่จะเรียกแน่นอน ID
หนึ่งที่ผมกำลังจะไปนี้ เรียกอาจารย์ ID
และฉันจะไป ระบุว่าทุก
ของพวกเขาไม่ได้ลงนาม 'ทำให้ฉันต้องการ
เพื่อเพิ่ม 4 ของฉัน พันล้าน int ช่วง
ไม่มีพวกเขาควรจะเป็นโมฆะ
ฉันจะระบุว่า ID ควรจะยังคงหลัก
และอีกครั้งนี้เป็น เพียงแค่การประชุม
จำนวนมากของกรอบ แม้ว่าคุณจะไม่ได้เรียงลำดับ
ของเดิมต้อง ระบุเฉพาะสำหรับแถว
มันจะเปิดออกก็สะดวกสำหรับ รหัส SQL ที่จะ
จะเป็นโดยอัตโนมัติ ที่สร้างขึ้นสำหรับเรา
ดังนั้นฉันจะออกจากที่เป็นหลัก
แต่ตอนนี้ผมชนิดของ มีการตัดสินใจการออกแบบ
ID หลักสูตรและอาจารย์ผู้สอน ID
สิ่งที่ถ้ามีการจัดทำดัชนี พวกเขาควรจะได้รับ
ถ้าฉันจะออกจากดัชนีไม่ สิ่งที่เป็นความหมายหรือไม่
อะไรความหมาย?
ผลการดำเนินงานก่อนใช่มั้ย
ถ้าไม่มีดัชนี ที่ดีที่สุดที่คุณสามารถทำได้คือชนิด
ของ [ไม่ได้ยิน] ผ่าน สิ่งที่ทั้งมองหาตัวเลข
เพื่อให้ไม่รู้สึกสมาร์ท
มันควรจะเป็นหลัก?
ดังนั้นทำไมไม่?
ทำไมไม่หลัก?
[ไม่ได้ยินหมายเหตุ]
สมบูรณ์ ดังนั้นเราจึงม้วน ออก [ออกเสียง] หลัก
เราเลือกแล้วว่า
ดังนั้นก็ควรจะไม่ซ้ำได้อย่างไร
[ไม่ได้ยินหมายเหตุ]
ดี ดังนั้นถ้าคุณคิด หนึ่งสอนต่อแน่นอน
ดีโดยสิ้นเชิง
และที่แน่นอน กรณีทั่วไป
แต่เราอยู่แล้วนำออกอย่างใดอย่างหนึ่ง ตัวอย่างเช่นอาจจะคุ้นเคย
CS51 มีสองอาจารย์ ดังนั้นเราชนิด
ตอนนี้เมาในกรณีที่
ถ้าเราทำให้มีเพียง หนึ่งในอาจารย์ผู้สอน
เราจริงจะทำวิธีที่ กับร่วมโต๊ะกัน
กลับไปที่วิธีการก่อนหน้านี้
และใส่ไม่ได้ชื่อของบุคคล แต่บางที ID สอน
ถ้าคุณรู้ว่าทุกหลักสูตรที่เป็นเพียงแค่ อาจารย์หนึ่งคนที่คุณสามารถมีเพียงแค่
คอลัมน์หนึ่ง
แต่ความแปรปรวนเป็น สิ่งที่เราได้เป็นปัญหา
ขวาทั้งหมด
ดังนั้นก็ควรจะไม่ซ้ำได้อย่างไร
ข้อความฉบับเต็มไม่ได้ รู้สึกว่าสามารถใช้งานได้
ในขณะที่เรากล่าวว่าก่อนที่
เหมือนย่อย ที่ตรงกับคำอธิบาย
ดังนั้นสิ่งที่เกี่ยวกับดัชนี?
ดีดัชนีน่าจะเป็น ผู้สมัครที่ดีที่สุดของเรา
ซึ่งจะบอก MySQL เพิ่มประสิทธิภาพ สำหรับการค้นหาที่เกี่ยวกับเรื่องนี้
หรือให้ฉันซับซ้อน เพิ่มประสิทธิภาพสำหรับการค้นหาหรือร่วม
ในขณะที่เราจะเห็นในเวลาเพียงสักครู่
เพื่อที่ว่าพวกเขากำลัง เล็ก ๆ น้อย ๆ มีประสิทธิภาพมากขึ้น
กว่าสิ่งเชิงเส้นอย่างหมดจด
ฉันต้องการให้อัตโนมัติ เพิ่มสาขานี้?
ดังนั้นไม่เพราะจริง องค์ประกอบหลักที่มีอยู่
ในตารางหลักสูตร '
นั่นคือสิ่งที่มันเป็น จะได้รับการบวก
บวกเมื่อมันเป็นจริง แทรก
ที่นี่นี้เป็นที่ทุกคนจะ จะแทรกด้วยตนเอง
โดยเราคาดว่าในรหัส
จึงขอเพียงแค่ระบุ แน่นอนว่าทั้งสอง ID
และอาจารย์ผู้สอน ID มีดัชนี
ตอนนี้เราจะไปข้างหน้าและบันทึก
และตอนนี้เพียงเพื่อแสดง คุณติดต่อกันทางจดหมาย
ระหว่างสิ่งที่ดี ง่าย GUI
และอินเตอร์เฟซบรรทัดคำสั่ง
ให้ฉันไปข้างหน้าและทำ ต่อไปนี้ที่พรอมต์นี้ MySQL
ฉันจะบอกว่าการใช้ courses50
ซึ่งเป็นชื่อพล ผมมอบให้ฐานข้อมูลนี้
และตอนนี้ฉันทำไม่ได้ จำได้ว่าสิ่งที่เราทำ
เพื่อให้ฉันชนิดตารางแสดง
และโดยทั่วไปเครื่องหมาย จะเป็นเพื่อนของคุณที่นี่
เพื่อเสร็จสิ้นการค้นหา
และมีมันเป็น
ดังนั้นนี่คือแถวหรือมากกว่า ตารางที่เราได้ที่นี่
ตอนนี้ผมลืมสิ่งที่ แน่นอนดูเหมือนว่า
เพื่อให้ฉันจะอธิบายหลักสูตร และตอนนี้ฉันเห็นการจัดเรียงของ ASCII
หรือรุ่นของสิ่งที่ phpMyAdmin ทำ
และผมเห็นว่าประชาชนมี int
มีที่ 10
สิ่งที่หมายความว่าอย่างไร
นั่นก็หมายความว่าเมื่อมัน แสดงว่ามันจะใช้เวลา
ขึ้น 10 ตัวอักษรที่ หน้าต่าง terminal
มันเป็น nullable?
ฉบับนี้เป็นคีย์หลัก
ก็สามารถมีค่าเริ่มต้นหรือไม่
และฉบับพิเศษซึ่งเป็นพิเศษ ธงเช่นเพิ่มขึ้นอัตโนมัติ
เพื่อให้เพียงทำสอง การแทรกของที่นี่อย่างรวดเร็ว
ฉันจะขึ้นไป - ขอเพียงกล่าวว่า
ลองเปลี่ยนสถานะไปที่ภาพนิ่ง
ที่ฉันเรียงลำดับของการเตรียมความพร้อมล่วงหน้า นี้
นี้เป็นบทสรุปแล้ว ทั้งสามของตารางที่
ฉันได้ด้วยตนเองเพียง พิมพ์คำสั่งแรก
และที่นี่ผมไปข้างหน้าและ ชนิดอื่น ๆ สำหรับคุณ
นี่เป็นเพียง สิ่งโวหาร
โดยทั่วไปผู้คนจำนวนมาก การพิมพ์คำสั่งในตัวพิมพ์ใหญ่ทั้งหมด
แล้วชื่อตารางและ ชื่อเขตข้อมูลในกรณีที่ต่ำกว่า
หากเพียงเพราะมัน ชนิดของการยืน
สิ่งที่เป็นคำศัพท์ของคุณ และสิ่งที่ไวยากรณ์ฐานข้อมูล
ดังนั้นที่นี่เรามีสาม ตารางหลักสูตรอาจารย์
และอาจารย์ผู้สอนหลักสูตร
ในสไลด์ที่ผมทำล่วงหน้า ฉันไม่ได้มีเขตข้อมูลหมายเลข
แต่ที่ไม่จริง สิ่งที่ไม่ดีเลย
เดียวกับที่เราจะเห็น คอลัมน์ที่สามมี
ผมทำที่นี่
ดังนั้นตอนนี้ให้ฉันเสนอว่า เราทำพวงของการแทรก
ดังนั้นนี่คือข้อมูลบางส่วน ฉันจะซูมเข้า
ดังนั้นผมจะนำเสนอ ว่าในหลักสูตร
เราจัดการกับสามหลักสูตร
และผมเลือกที่สามเหล่านี้ 'ทำให้พวกเขาเป็นตัวแทน
ของดีบาง - พวกเขามี คุณสมบัติที่ดีบางอย่าง
CS1, CS50, CS51 พวกเขา มีรหัสที่เพิ่มขึ้น
แต่เป็นสิ่งที่ ID สิ่งที่ ไม่เกี่ยวข้องกันโดยสิ้นเชิง
นั่นเป็นเพียงลำดับที่ พวกเขาจะถูกแทรกโดยอัตโนมัติฉัน
วิธีการเกี่ยวกับผู้สอน
ดังนั้นตอนนี้เพราะเฮนรี่ Leitner สอนทั้ง CS1 และ CS51,
นี้เป็นชนิดของโอกาส ความหมายสำหรับการออกแบบของเรา
และเจสซีสอน CS51 และลันสอน CS50
ดังนั้นตอนนี้ - หรือมากกว่านี้ เพียงหมายเลขที่ไม่ซ้ำกันของคนเหล่านั้น
และหลักสูตรและอาจารย์ผู้สอน - อาจารย์ผู้สอนหลักสูตรการแจ้งให้ทราบที่นี่
ID1 แน่นอนซึ่ง ถูก CS1 สอน
โดยผู้สอน ID1 ที่เฮนรี่
ID2 แน่นอนที่ฉัน คิดถูก CS50 สอน
โดยผู้สอน ID2, ซึ่งเป็นลัน
แล้วสุดท้าย CS51 และ แจ้งให้ทราบว่าเรามีสองแถว
และตอนนี้นี่คือเหตุผลที่เข้าร่วม ตารางที่มีประสิทธิภาพการเรียนการสอน
ทั้งเฮนรี่และเจสซี่
ดังนั้นนี่คือทั้งหมดที่ดีและดี
แต่ผมแทบจะไม่สามารถ จำได้ว่าปิดด้านบน
ของหัวของฉันใครเป็นใครที่นี่
วิธีที่คุณอาจจะสามารถ จัดการกับที่ในรหัส
โดยไม่ต้อง รหัสสิ่งที่ยาก
ดีนี้เป็นที่ SQL ตัวเอง เริ่มต้นที่จะเป็นเพื่อนของเรา
และฉันจะเสนอว่า เราสามารถพิมพ์ต่อไปนี้
ฉันจะทำเช่นนี้ที่ใน ให้เกิดขึ้นจริง
ให้ฉันไปข้างหน้าและ แทรกสิ่งเหล่านี้
ดังนั้นในตารางหลักสูตร ขอทำสิ่งที่เรามี
ตะกี้
ฉันกำลังจะไปข้างหน้าและพูดว่า ขอแทรก CS1 และ CS50
ขอแทรกอีกไม่กี่ แถวในครั้งเดียว CS51
ตอนนี้ให้ฉันไปข้างหน้าและบันทึก
ขวาทั้งหมดดังนั้นฉันเพียงแค่ สร้างได้อย่างรวดเร็ว
เท่าที่ฉันสามารถมีความสัมพันธ์ เราเพียงแค่เห็นบนหน้าจอ
และอื่น ๆ ในที่นี่เรามี Leitner, ที่นี่เรามีลัน
ขอให้ตัวเอง แถวอื่นและท็อป
ตอนนี้ให้ฉันบันทึกนี้
และฉันทำพวกเขาจงใจ ในลำดับเดียวกัน
ไม่ใช่ฉันลืมที่จะให้ เพิ่มขึ้นอัตโนมัตินี้
ให้ฉันได้อย่างรวดเร็วแก้ไขปัญหานี้
ฉันจะแก้ไขปัญหานี้ใน รหัสออนไลน์
ที่ล้มเหลวเช่นกัน
ความจริงที่ว่าผมไม่สามารถ แทรก Leitner และลัน
และท็อปล้มเหลวเพราะผมไม่ได้ ระบุหมายเลขแม้ว่า
ก็คาดหวังว่าอย่างใดอย่างหนึ่งและฉัน ลืมที่จะตรวจสอบการเพิ่มขึ้นอัตโนมัติ
ซึ่งหมายความว่าพวกเขาทั้งหมด โดยเริ่มต้นการเป็นศูนย์
แต่ที่แล้วในทางตรงกันข้ามที่ ทรัพย์สินที่เราได้ระบุไว้
คีย์หลักถูกละเมิด ดังนั้นจึงไม่ได้แจ้งให้เราทำมัน
เพื่อให้ฉันแก้ไขปัญหานี้
ตอนนี้ให้ฉันกลับไปที่ บนแท็บแทรกที่นี่และระบุ
ที่ฉันต้องการ Leitner, ลัน และหนึ่งแถวมากขึ้นท็อป
และตอนสุดท้ายเท่านั้น อย่างใดอย่างหนึ่งที่ยากน้อย
ที่จำได้แน่นอน ครูผู้สอน
ลองใส่ตอนนี้ที่ ID1 หลักสูตรเป็นครูสอน ID1
เพื่อให้เป็น CS1 และเฮนรี่
ID2 หลักสูตรเป็นครูสอน ID2 ซึ่งเป็น CS50 และลัน
แล้วคนสุดท้ายที่เรามี กังวลเกี่ยวกับการเป็นสนาม ID3
ซึ่งเป็น CS51, การเรียนการสอน
โดยผู้สอนหลักสูตร 1 ซึ่งเป็นเฮนรี่
และสามเป็นยังสอน 3 ซึ่งเป็นท็อป
เพื่อหวังว่าตอนนี้ เราได้สร้างนี้ -
ด่าว่าผมไม่ได้ทำในสิ่งเดียวกัน
อาจารย์ผู้สอนของหลักสูตร ความต้องการที่เพิ่มขึ้นอัตโนมัติ
ขวาทั้งหมด
ฉันจะทำเช่นนี้ได้เร็วขึ้นในเวลานี้ หลักสูตร 1 หลักสูตร 1, 2, 2
และตอนสุดท้ายที่เราทำ CS51 ซึ่งมี ID3 แน่นอนและเฮนรี่
และแน่นอน ID3 และเจส
ที่ดูดี
ตกลง ดังนั้นตอนนี้ขอกลับไป ไปที่หน้าต่างขั้ว
ดังนั้นถ้าผมอธิบาย หลักสูตรเราจะเห็นนี้
ถ้าผมต้องการที่จะเห็นหลักสูตรที่ฉันสามารถ ตอนนี้ทำเลือกดาวจากหลักสูตร
ลำไส้ใหญ่กึ่งและตอนนี้ เราจะเห็นค่าเหล่านั้น
และตอนนี้สิ่งที่อื่น ฉันไม่ต้องการจะทำอย่างไร
เลือกดาวจากอาจารย์ผู้สอน ที่ที่ผมคาดหวัง
และเลือกดาวจากหลักสูตร - อาจารย์ขีดแน่นอน
ดังนั้นวิธีการทำตอนนี้ผมเข้าร่วม ตารางเหล่านี้หรือไม่
ดังนั้นความงามของการมีเลือก ค่า ID ในลักษณะนี้คือ
ว่าถ้าคุณคิดเกี่ยวกับ ตารางการเรียนการสอน
และอาจารย์ผู้สอน ตารางและจากนั้นใส่
ในระหว่างทั้งสองในของคุณ จิตใจของผู้สอน
ตารางที่คุณสามารถชนิดของสาย ขึ้นทั้งหมดของคอลัมน์ ID เหล่านี้
เพื่อที่คุณจะรวมไว้ใน คอลัมน์หนึ่งขนาดใหญ่ที่มีทั้งหมด
ของข้อมูล เราดูแลเกี่ยวกับ
ไวยากรณ์ SQL นี้ ไม่จำเป็นต้องเป็นที่เห็นได้ชัด
แต่ให้ดูว่าเราสามารถทำมันได้
ดังนั้นเลือกดาวจากหลักสูตร
และมีวิธีการไม่กี่ที่ ในขณะที่เราสามารถทำเช่นนี้
ฉันจะกด Enter เพียงเพื่อ ชนิดของรูปแบบสิ่งอย่าง
แต่ลูกศรที่เป็นเพียง อาการของเครื่องมือด้านลูกค้า
มันมีอะไรที่จะ ทำกับ SQL ตัวเอง
ดังนั้นเลือกดาวจากหลักสูตร
ฉันจะเข้าร่วมในขณะนี้ ตารางหลักสูตร
ในตารางผู้สอน
ได้อย่างไร บนสนามที่เรียกว่า courses.id เท่ากับแน่นอน
เน้นสอน จุดสิ่งที่ชื่อ
ของเขตข้อมูลที่ตรงกัน ที่นี่ที่ฉันต้องการคู่
มันไม่ ID
It's - สิ่งที่เสียใจ?
>> หลักสูตร ID
ตกลงให้ฉันซูมออก
แต่ฉันต้องการที่จะใช้ นี้เป็นหนึ่งในขั้นตอนต่อไป
ผมเคยทำตอนนี้ ตารางและหนึ่งในนี้
ตอนนี้ผมต้องการที่จะดึง คนที่อยู่ในเช่นกัน
ดังนั้นให้ฉันต่อไป เข้าร่วมเรื่องทั้งหมดนี้
เกี่ยวกับการสอน ตารางในสิ่งที่?
ขีดหลักสูตร instructor.instructor รหัส
เท่ากับ instructors.id
ดังนั้นเราจึงสามารถเขียน แบบสอบถามนี้ในไม่กี่วิธี
ลำดับที่ฉันทำอย่างนี้ ไม่ได้เป็นสิ่งที่สำคัญ
ฉันเพียงแค่ชนิดของมันใน ใจของฉันจากซ้ายไปขวา
เราจะได้ทำนี้ ในรูปแบบที่แตกต่างกันไม่กี่
แต่ถ้าตอนนี้ผมมี ลำไส้ใหญ่กึ่งและกด Enter,
แจ้งให้ทราบที่ผมได้รับกลับใหม่ ตารางชั่วคราวชุดผล
ดังนั้นการพูดในฐานข้อมูลพูด
และผมก็ทำในสิ่งที่มี ในเรื่องนี้
ฉันมีใน ID ชื่ออีก ID ซึ่งเป็นชนิดของความสับสน
กับผมในขณะนี้ ID หลักสูตร
อาจารย์ ID, ID และชื่อ
ดังนั้นในตอนท้ายของวันที่ เรามีข้อมูลที่ถูกต้องในขณะนี้
ฉันเห็นว่า CS1 สอน โดย Leitner, CS51 สอน
โดย Leitner และท็อปและ CS50 สอนโดยลัน
แต่ฉันเพียงเล็กน้อยประสาทเกี่ยวกับ คลุมเครือเราได้สร้างนี้
สิ่งที่คลุมเครือ ฉันยิ่งทำให้?
ใช่?
[ไม่ได้ยินหมายเหตุ]
มีคอลัมน์ ID สามเป็น
ดังนั้นเราจึงสามารถที่จะแก้ไขปัญหานี้และ เรากำลังจะไปจริง
เลื่อนกรอบของเรา ท้ายที่สุดจะช่วยให้เรามีนี้
แต่ปรากฎว่ามี คำหลักใน SQL ที่เรียกว่า S,
ซึ่งคุณสามารถระบุ นามแฝงชื่อใหม่สำหรับเขตข้อมูล
เพื่อให้เราสามารถหลีกเลี่ยงปัญหานี้ คลุมเครือทั้งหมด
แต่ก็รู้ว่าถ้าเราทำไม่ได้ อยู่มันอย่างใดเช่นเดียวกับ
คำหลักหรือกรอบ
มีอาจนี้ ความกำกวมถ้าคุณพยายามที่
ในการเข้าถึงเขตข้อมูลหมายเลข เพราะเห็นได้ชัดว่ามีคนที่มี
มีชื่อที่ซ้ำกันมี
ดังนั้นนี่คือการเข้าร่วมและฉันคิดว่า ในตาใจของคุณวิธีที่ดีที่สุด
คิดเกี่ยวกับมันจริงๆ คือการใช้สองตาราง
สายพวกเขาใน แบบที่คุณต้องการ
และนี่คือที่เรียกว่า ภายในเข้าร่วมในความรู้สึก
ที่เรากำลังรวม ตารางที่นี่
มีชนิดอื่น ๆ มี เข้าร่วมที่เราอาจพบ
เมื่อเวลาผ่านไปเหมือนด้านนอกเข้าร่วม
แต่ส่วนใหญ่นี้ น่าจะเป็นที่พบมากที่สุด
เพื่อฟื้นฟูข้อมูล
สิ่งที่เราทำขณะนี้คือ โดยทั่วไปสิ่งที่เรียกว่า
normalizing ข้อมูลของคุณเพื่อให้ มีการทำซ้ำได้ทุกที่ไม่มี
ในตารางของคุณ
และโดยการทำซ้ำผมจะ มีความหมายว่าวิธีการแรก
ถ้าเราได้กล่าวถึง Leitner และท็อปในสถานที่ต่างๆ
ในฐานข้อมูลของคุณที่ไม่ โดยทั่วไปการตัดสินใจที่ดีที่สุด
โดยเฉพาะอย่างยิ่งถ้าชื่อของพวกเขาอาจจะ เปลี่ยนล่วงเวลาหรือในกรณีที่
ของการแต่งงานนามสกุลเดิมอาจ เปลี่ยนแปลงตัวเองคุณต้องการเพียงแค่อย่างใดอย่างหนึ่ง
สถานที่ที่เป็นที่ยอมรับสำหรับบางคน ค่าข้อมูลเช่นชื่อ
ขวาทั้งหมด
ดังนั้นเพื่อปะยางรถที่เราเคยมี การตัดสินใจการออกแบบไม่กี่ที่จะทำให้
และคนที่สำคัญที่สุด อาจลดลงบางส่วน
ตัวเลือกเหล่านี้ของดัชนี
แต่ให้ฉันชี้ให้เห็น สิ่งหนึ่ง ๆ ได้เป็นอย่างดี
ถ้าผมกลับไปที่ phpMyAdmin ไป
คุณสมบัติหนึ่งที่คุณอาจจะไม่ ก่อนที่จะได้พบคือ
ดังต่อไปนี้
ถ้าผมไปสอนที่แน่นอน ฉันแล้วไม่ระบุว่าบาง
สิ่งเหล่านี้มีการจัดทำดัชนี
แต่ให้ฉันไปที่โครงสร้าง แท็บของผู้สอนหลักสูตร
ให้ฉันคลิกที่นี้ดัชนี และแจ้งให้ทราบต่อไปนี้
ฉันได้ระบุไว้ที่นี่ที่ มีคีย์หลัก
ในคอลัมน์ที่เรียกว่า ID
นี้เป็นค่อนข้างซับซ้อน วิธีการระบุ cardinality
และอื่น ๆ ที่หมายถึง ขนาดของเขตข้อมูลเป็นไบต์
แต่ตอนนี้ผมยังมีอีก สนามแน่นอน ID ซึ่งเป็น -
ID แน่นอนที่จะทำ ล่วงหน้าและไม่ซ้ำกันตกลง
ผมทำอย่างใดอย่างหนึ่งใน ความก้าวหน้าของเรา
ดังนั้นทำไมนี้ - ให้ฉันลดลง นี้เพื่อประโยชน์ของการสนทนา
Oh, คุณรู้ว่าสิ่งที่ฉันไม่
ตกลง ดังนั้นก่อนหน้านี้อย่างใดอย่างหนึ่ง ภัยของการใช้เครื่องมือ GUI
เช่นนี้เมื่อเราอยู่ การสร้างนี้เข้าร่วมโต๊ะ
ตารางการสอนหลักสูตร จำที่ผมระบุ
ที่ฉันต้องการดัชนี ในสนามนี้
และดัชนีเกี่ยวกับเรื่องนี้ สาขาอื่น
ผลข้างเคียงของ การตรวจสอบทั้งสองกล่องที่
บนหน้าจอเดียวกันคือ phpMyAdmin สรุปจากที่
ที่ฉันต้องการไม่ได้สอง ดัชนีที่แยกจากกัน
ที่ฉันต้องการดัชนีที่เข้าร่วม โดยทั่วไปจะเป็นประโยชน์เท่านั้น
หรือเป็นประโยชน์มากที่สุดเมื่อคุณกำลัง ค้นหาในสนามไม่ได้อย่างใดอย่างหนึ่ง
แต่ทั้งสองเขตข้อมูลเหล่านั้น
และที่ว่าทำไมเรามี พวกเขามี ConJoin
ดังนั้นผมจึงลดลงเป็นสาเหตุที่ ไม่ได้เป็นสิ่งที่ฉันตั้งใจ
แต่ฉันจะ ที่จะทำซ้ำที่นี่
ฉันจะไปที่ ID แน่นอน
และอยู่ภายใต้มากขึ้นฉันก็เป็นเพียง จะบอกว่าดัชนีเพิ่ม
และฉันจะไปอยู่ภายใต้ สอนประชาชนและกล่าวเพิ่มดัชนี
และตอนนี้ถ้าเราคลิกที่นี่ แจ้งให้ทราบว่าเรามีสามดัชนี
หลักหนึ่งและเป็นฉัน วัตถุประสงค์หนึ่งสำหรับแต่ละ
ของคีย์ต่างประเทศเหล่านั้น
และที่ผมเรียกว่าต่างประเทศเพราะ ID แน่นอนในแผนที่ตาราง
ที่สนามเพียงเพื่อให้ ที่ชัดเจนในตารางอื่น
คีย์หลักที่เรียกว่า ID, ในตารางที่เรียกว่าหลักสูตร
และการจัดการที่เหมือนกันสำหรับคนอื่น ๆ
แต่ตอนนี้เป็นที่น่าสนใจ เคล็ดลับและเทคนิคจริงๆ
ผมก็เดินไปข้างหน้าและแจ้งให้เรา ทำเพิ่มอีกนิดอย่างช้าๆ
ในหน้าจอเดียวกันแจ้งให้ทราบล่วงหน้า มันบอกว่ามุมมองความสัมพันธ์ที่นี่
ฉันคลิกที่นี้และตอนนี้ผมสังเกตเห็น ได้รับที่จะทำข้อ จำกัด ไม่กี่
ดังนั้นหนึ่งของ upsides ยัง
ไม่เพียง แต่ใช้แนวคิด คีย์ต่างประเทศและตารางอื่น ๆ
เหมือนอย่างที่เราได้เพียงเป็น ว่าด้วยการกำหนดดัชนี
กับพวกเขาที่คุณสามารถมี ช่วยเหลือฐานข้อมูลที่คุณได้มากยิ่งขึ้น
ความสมบูรณ์ ของเขตข้อมูลที่
โดยเฉพาะที่จะทำได้ในขณะนี้ ระบุผ่านการลดลงนี้
ลงสนามแน่นอน ID
ในตารางนี้จริง แผนที่เพื่อ courses.id
ในทำนองเดียวกันผู้สอนขีด ID แมปไปยัง instructors.id
ตอนนี้ว่าทำไมถึงเป็นประโยชน์
ดีสังเกตเห็นทางด้านขวา ด้านสิ่งที่ปรากฏในขณะนี้
ตอนนี้ผมสามารถสอน ถ้าฐานข้อมูลที่เฮนรี่
เช่นเคยเกษียณ และแถวของเขาหายไป
จากตารางผู้สอน ทั้งหมดจึงเป็น
ลบที่ฉันสามารถผ่านทางนี้ ซ้อนวิธีการตรวจสอบให้แน่ใจ
ว่าหลักสูตรใด ๆ ที่เขาสอนมี ไม่เกี่ยวข้องกับเขา
ฉันสามารถสอนฐานข้อมูล การลบแถว
ในตารางนี้เข้าร่วมที่เรียกว่า โดยอัตโนมัติหากเฮนรี่หรือถ้าอย่างใดอย่างหนึ่ง
หลักสูตรการหายไปของเขา
ตอนนี้ทำไมนี้เป็นที่น่าสนใจ?
ใช่?
[ไม่ได้ยินหมายเหตุ]
คุณจะต้องทำเพียงครั้งเดียว และในระยะยาวใช่มั้ย?
มันง่ายมากถ้าการจัดเรียงของ คนมาและไปเรียนมา
และไปฐานข้อมูลของคุณได้ เพิ่งได้รับเกลื่อนไปด้วยหลักสูตร
และมีคณะที่ไม่ อีกต่อไปที่เกี่ยวข้องกับข้อมูลที่กำหนด
และข้อมูลของคุณจะเริ่มต้นที่จะได้รับ ยุ่งมากและสกปรกและเก่า
และอื่น ๆ ที่นี่เราสามารถค้นหา
ของการบังคับใช้บางส่วนของ ข้อ จำกัด เหล่านี้
ใช่?
[ไม่ได้ยินหมายเหตุ]
มันรู้โดยวิธีการนี​​้
นี่คือหน้าจอที่ เรามีการระบุการเชื่อมโยง
ระหว่างต่างประเทศที่สำคัญ และคีย์หลัก
ดังนั้นทั้งหมดของการตั้งชื่อ การประชุมที่ผมพูดพาดพิง
ที่ก่อนหน้านี้เป็นเพียงการประชุม
ไม่มีความหมายธรรมชาติที่มีอยู่เป็น
นี่คือหน้าจอ ซึ่งจะเป็นประโยชน์เท่านั้น
หลังจากที่คุณระบุดัชนีใน แต่ละเขตข้อมูลเหล่านั้นที่เราได้
และสำหรับแบบเลื่อนลงนี้เรามี ๆ น้อย ๆ เช่น
ถ้าแน่นอนจะถูกลบออกคุณสามารถ จริงป้องกันการลบที่
จากสิ่งที่เกิดขึ้นถ้ามี เป็นแถวในตารางนี้
โดยเพียงแค่พูดว่า จำกัด
ในคำอื่น ๆ เฮนรี่ ไม่สามารถออกจากตำแหน่ง
จนกว่าเราจะแยกเขา จาก CS51 และ CS1
เพื่อให้เป็นสิ่งที่ดี
แต่มันอาจทำให้ ข้อผิดพลาดในรหัสของคุณ
ถ้าคุณไม่ได้คาดหวังว่า หรือเราสามารถมีน้ำตก
น้ำตกที่คล้ายกันที่จะชอบ cascading แผ่นสไตล์
และซ้อน น้ำตกหมายความว่าถ้า -
ถ้าเฮนรี่เกษียณดังนั้น - โดยการลบ
เพื่อจะแถวของเขาที่นี่ ได้รับการลบ
ไม่มีการดำเนินการหมายถึงอะไรหรือ null เป็นชนิดที่มีประโยชน์ถ้าคุณชนิด
ของบางอย่างที่ต้องการบันทึกประวัติศาสตร์ ของเฮนรี่ที่มีการสอน CS51,
แต่คุณก็ต้องการให้เขตข้อมูลที่ เป็นโมฆะเพื่อให้แถวที่มี
แต่ก็ไม่ได้อีกต่อไป ที่เกี่ยวข้องกับเขา
ดังนั้นเหล่านี้เป็นที่มีประสิทธิภาพมาก เทคนิคที่คุณสามารถ
และควรใช้แม้ว่า ในความสนใจโดยเฉพาะอย่างยิ่ง
ของคุณประหยัดจากตัวเอง
เพื่อให้ฉันกล่าวถึง คู่ของรายละเอียดขั้นสุดท้ายที่นี่
ส่วนผสมที่ ที่อาจจะเป็นประโยชน์
ในขณะที่เราวางแผนสำหรับการออกแบบฐานข้อมูล
นอกจากนี้คุณยังมีทางเลือก ผ่านเครื่องมือฐานข้อมูล
ที่คุณใช้ในรหัสของคุณ
หากคุณคุ้นเคย ของคุณอาจ CS161 -
61 หรือแม้กระทั่งคุณโดยทั่วไปอาจจะ จะคุ้นเคยกับระบบไฟล์
และมีสิ่งที่ เช่น NTFS และ HFS +
และ X2FS4 [ออกเสียง] และ 3 และอื่น ๆ
มีวิธีการที่แตกต่างกันเป็น ของการจัดเก็บข้อมูลบนโต๊ะทำงาน
ในทำนองเดียวกันจะมี วิธีที่แตกต่างกันของการจัดเก็บข้อมูล
ในฐานข้อมูลโดยค่าเริ่มต้น อย่างน้อยในเครื่องใช้
กับรุ่นล่าสุด ของ MySQL
เราได้รับใช้ เครื่องมือฐานข้อมูลที่เรียกว่า NoDB,
ที่สนับสนุน คุณสมบัติที่ดีไม่กี่
แต่อีกคนหนึ่งที่เหมือนกันคือยัง เรียกว่า MyISAM และยังอีก
ที่สามารถใช้เป็นหน่วยความจำ ซึ่งหมายความว่าไม่ใส่อะไร
บนดิสก์เพียงให้ สิ่งที่อยู่ในหน่วยความจำ
สำหรับส่วนใหญ่ที่คุณอาจจะ จะไม่ผิดไปเพียงการเริ่มต้น
ด้วย NoDB แต่สำหรับโครงการใด ๆ ที่มีแนวโน้มที่จะเกี่ยวข้องกับอัตราสูง
แทรกตัวอย่างเช่น เหมือนมากของการเข้าสู่ระบบอย่างรวดเร็ว
หลายร้อยสิ่งต่อวินาที หรือหลายพันของสิ่งที่
เวลาที่คุณมี จำนวนมากของสิ่งที่เกิดขึ้น
ที่อยู่ในฐานข้อมูล แล้วชนิดนี้
การตัดสินใจในระดับที่ต่ำกว่า เริ่มต้นที่จะมีส่วนร่วม
คุณลักษณะข้อความเต็มรูปแบบสำหรับ เช่นทำงานเฉพาะใน MyISAM
เพื่อให้มีความหมาย
แต่คุณอาจจำนี้ขอ อย่างน้อยกระตุ้นให้เหตุผลที่เราดูแล
เกี่ยวกับ NoDB โดยเฉพาะอย่างยิ่ง
เงื่อนไขการแข่งขัน โดยทั่วไปหมายถึงอะไร
ขวาทั้งหมดนี้เป็น พาดพิงถึงตัวอย่างบางส่วน
คุณอาจเคยได้ยินใน ปีที่ผ่านมาไม่ว่าจะ 161 หรือ 50
ที่คุณมีเพื่อนร่วมห้อง คุณทั้งสองชอบนม
หนึ่งของคุณได้รับบ้านหลังแรกเปิด ตู้เย็นมีนมไม่มี
ปิดตู้เย็นเดินข้าม ถนนที่จะ CVS และได้รับ
ในบรรทัดที่จะซื้อนม
ในขณะที่เพื่อนร่วมห้องของคุณ กลับมาที่นี่
เธอยังชอบนม
เปิดตู้เย็นและ รู้ตัวดีว่าไม่มีนม
นี่เธอแล้วไปที่ จัดเก็บอาจจะ CVS อื่น ๆ
อย่างรวดเร็วไปข้างหน้าไม่กี่นาที ต่อมาคุณกลับมาและตอนนี้ทั้งสอง
ของคุณได้ซื้อนม
หนึ่งในนั้นคือตอนนี้จะ จะเสียเพราะคุณทำไม่ได้
เช่นนมที่มากและ ปัญหานี้เป็นปัญหาใช่ไหม
เพราะคุณทั้งสองการตรวจสอบ รัฐของตัวแปรบาง
และตัดสินใจตาม มันแม้ว่ารัฐ
ของตัวแปรที่เป็นหลัก ในกระบวนการของการเปลี่ยนแปลงที่
ทั้งหมดไม่ว่าจะเป็นช้ากว่า จำนวนของเวลาที่ใช้
ที่จะได้รับและจาก CVS
ดังนั้นสิ่งที่เป็นประเภทโง่จริง การแก้ปัญหาโลกปัญหาที่
ออกจากบันทึกใช่ไหม
มันเกิดขึ้นเป็นครั้งสุดท้าย
มักจะออกจากบันทึกหรือ กุญแจสิ่งที่แท้จริง
และผมบอกว่ากุญแจเพราะ ถ้าคุณจะใช้หรือเอา CS161,
ล็อคเป็นพื้นฐาน ความคิดในลักษณะของโลกที่
ดังนั้นสภาพการแข่งขันจะเกิดขึ้น ยังอยู่ในโลกฐานข้อมูล
และคุณอาจจำได้อาจจะมาจาก CS50 การเงินถ้าคุณเอา 50,
รหัสนี้ที่เราจริงให้ พวกคุณในรายละเอียด
ในขณะที่ของคุณเพื่อให้ การดำเนินการจะเรียกว่าอะตอม
หากคุณต้องการในการนี​​้ กรณีซื้อหุ้นของหุ้น
และสต็อกที่มี บางสัญลักษณ์โดยเฉพาะอย่างยิ่ง
เราบอกคุณที่จะใช้รหัสเช่น นี้เพราะโดยวิธีการนี​​้
ในการปรับปรุงคีย์ที่ซ้ำกัน ไวยากรณ์ที่ถูกสร้างขึ้น
ใน MySQL คุณได้อย่างมีประสิทธิภาพ ทำอย่างใดอย่างหนึ่งในการแทรก
หรือในการปรับปรุงหลังจาก ทำเลือกที่จะเห็น
ถ้าหุ้นที่มีอยู่แล้วในนั้น
ในคำอื่น ๆ ในแบบอะนาล็อก โลกของการซื้อหุ้น
ของนมและตู้เย็น อาจจะเป็นครั้งแรก
ก่อนที่จะซื้อหุ้นของ Google ที่คุณอาจต้องการที่จะเลือก
จากฐานข้อมูลทั้งหมดของ หุ้นของ Google ที่เป็นเจ้าของเดวิด
เพื่อดูว่าเขาเป็นเจ้าของศูนย์หรือมากกว่า
เมื่อคุณดูว่าเขาเป็นเจ้าของ ศูนย์หรือมากกว่าที่คุณมี
แล้วทำต่อไปนี้
คุณจะต้องทำแทรก
ถ้าเขาเป็นเจ้าของศูนย์สาเหตุ ' มีแถวสำหรับเดวิดยังไม่มี
หรือที่คุณต้องทำปรับปรุง ถ้าอย่างน้อยในทฤษฎีที่คุณต้องการ
ที่จะมีหนึ่งแถวต่อผู้ใช้
ปัญหาคือการเลือก จำนวนหุ้นที่
แล้วปรับปรุงหรือ แทรกอาจถูกขัดจังหวะ
โดยคนอื่นที่อื่น terminal คอมพิวเตอร์พยายามที่จะซื้อ
หรือขายบางส่วนของเดวิด หุ้นของหุ้นไม่ว่าจะเป็น
เพื่อวัตถุประสงค์ที่ดีหรือการจัดเรียง ของวัตถุประสงค์ที่เป็นอันตราย
มันก็เหมือนกับการไปที่ร้าน เมื่อเพื่อนร่วมห้องของคุณได้รับกลับ
และตรวจสอบรัฐ ของตัวแปร
ดังนั้นรูปแบบนี้ได้ตลอดเวลา ซึ่งเป็นที่จัดเรียงของที่เหมาะสม
CS50 เพื่อหลีกเลี่ยงที่ ปัญหาทั้งหมด
และมันก็ไม่ทั้งหมดที่ ความมหัศจรรย์ของการล็อกสำหรับคุณ
แต่ตอนนี้กับชนิดเหล่านี้ ของโครงการสำหรับหลักสูตรนี้
ซึ่งส่วนใหญ่มีแนวโน้มที่จะ เกี่ยวข้องกับชุดข้อมูลที่ซับซ้อนมากขึ้น
คุณจะไม่สามารถประสบความสำเร็จ เสมอ atomicity นี้
ทุกอย่างเกิดขึ้น ในครั้งเดียวหรือไม่ทั้งหมด
โดยไม่หยุดชะงัก ดังนั้นอย่างหรูหรา
และเพื่อให้ MySQL อีก เครื่องยนต์ฐานข้อมูล
สนับสนุนสิ่งที่เรียกว่าล็อค
ด้วยเหตุนี้คุณสามารถพูดล็อคนี้ ตารางเพื่อให้มีเพียงหนึ่งในการรักษา
และโดยทั่วไปผู้ใช้เพียงคนเดียวที่สามารถ สัมผัสมันในจุดในเวลาใด
ที่จะอ่านหรือเขียนและ จากนั้นคุณสามารถปลดล็อค
นี้เป็นตัวอย่างหนึ่ง ของการอ้างอิงของตัวเองของ MySQL,
ซึ่งถ้าคุณมีเช่นธนาคาร บัญชีที่คุณกำลังพยายาม
จะหักเงินจาก แล้วเพิ่มเงินให้
คุณอาจต้องการที่จะ ตรวจสอบให้แน่ใจว่าทั้งสอง
สิ่งที่เกิดขึ้นร่วมกัน
เพื่อที่ว่าไม่มี ข้อผิดพลาดทางคณิตศาสตร์
และไม่มีการสูญเสียอย่างใดอย่างหนึ่ง เงินอย่างใด
ปัญหาเกี่ยวกับการล็อค แม้ว่าจะอยู่ในฐานข้อมูลเป็น
ว่าโดยทั่วไปหมายถึง ตารางทั้งหมดถูกล็อค
ซึ่งหมายความว่าถ้าคุณมี ร้อยคนพยายาม
ที่จะทำธุรกิจกับธนาคารของคุณ ออนไลน์ที่เท่ากัน
เวลาเพียงหนึ่งใน พวกเขาสามารถไปได้ตลอดเวลา
ซึ่งเป็นโง่โดยเฉพาะอย่างยิ่ง บนเซิร์ฟเวอร์ในปัจจุบัน
ที่มีแปดแน่นอน 16 แน่นอนมีจำนวนมาก
หน่วยความจำที่ไม่มี เหตุผลที่จะต่อเนื่องกันทั้งหมด
การทำธุรกรรมของคุณหากผู้ที่ ลูกค้าเท่านั้นจะ
ในการโต้ตอบกับแถวของตัวเอง
ดังนั้น NoDB ช่วยให้คุณทำ สิ่งที่ชาญฉลาดมากขึ้น
และโดยทั่วไปจะมี วิธีการที่คุณใช้ในรหัส
ในขณะที่คุณใช้สิ่งที่ ที่เรียกว่าการทำธุรกรรม
และคุณทำเช่นนี้โดยทั่วไป ในรหัส PHP,
รหัสทับทิมงูใหญ่สิ่งที่
แต่รหัส SQL ที่ ที่ใช้ในท้ายที่สุดก็คือ
เป็นปกติ
เริ่มต้นการทำธุรกรรมแล้วคุณ ระบุสองคนหรือมากกว่าการค้นหา
ที่คุณต้องการ การดำเนินการทั้งหมด
โดยไม่หยุดชะงัก หรือไม่ได้เลย
มีแม้กระทั่งอาจเป็นบางส่วน เลือกคำสั่งใน
หรือลบบางอย่างหรือการปรับปรุง
แต่สิ่งที่ดีคือ ฐานข้อมูลจะเป็นสมาร์ทพอ
เพื่อให้แน่ใจว่ามันจะเป็นเพียง ล็อคแถวพวกเขากำลังจริง
มีส่วนร่วมในการปรับปรุงนี้ หรือเลือกหรือลบ
ดังนั้นถ้าคุณมีหลายพันแถว และคุณเพียงสัมผัสสาม
ของพวกเขาเพียงส่วนที่ ของตารางจะถูกล็อค
ซึ่งหมายความว่าผู้อื่น 99 ลูกค้าสามารถสัมผัสแถวของพวกเขา
โดยไม่ต้องต่อเนื่องกัน และชะลอตัวลงจากการที่คุณ
ขณะนี้เป็นที่อร่อยที่สุด ด้านกับการทำธุรกรรม
พวกเขามีการทำธุรกรรมใน รู้สึกเหมือน 161 ในระบบไฟล์
พวกเขากำลังทำธุรกรรม
ซึ่งหมายความว่าคุณสามารถม้วน พวกเขากลับมาคุณสามารถยกเลิกพวกเขา
นี้เป็นเหมือนคำสั่ง หรือควบคุม F ของฐานข้อมูล
หากคุณค้นพบส่วนหนึ่ง ทางผ่านทั้งหมด
ของการดำเนินการข้อมูลต่างๆของคุณ ยิงสิ่งที่เป็นไปอย่างผิดปกติ
คุณอักษรรัน ม้วนแบบสอบถามที่แตกต่างกันกลับ
และทั้งหมดของแนวโน้มเหล่านี้ - ทั้งหมด งบที่คุณดำเนินการ
หลังจากที่บอกว่าเริ่มต้นที่ รายการหายไป
ราวกับว่าพวกเขาไม่เคยเกิดขึ้น
ซึ่งเป็นที่น่าอัศจรรย์ใจ สิ่งที่ทรงพลัง
และเหล่านี้เป็นชนิดของ สิ่งที่แน่นอนใน 50 ที่เราจัดเรียง
ของกวาดใต้พรมและ คุณเพียงแค่ชนิดของสมมติ
ว่าทั้งหมดจะดี
แต่เมื่อคุณเริ่ม ความคิดเกี่ยวกับโครงการจริง
และผู้ใช้งานจริงและ ความสมบูรณ์ของฐานข้อมูลของคุณ
เหล่านี้เป็นชนิด ของการตัดสินใจการออกแบบ
ที่กำลังจะมีความสำคัญ