>> حسنا.
لذلك، من دون مزيد من اللغط، SQL، لغة الاستعلام الهيكلية.
لذلك، ربما كنت تستخدم هذه في الأقل في CS50، وربما في CS165،
ربما في بنفسك مشاريع شخصية.
وماذا SQL تمكنك من القيام به، في ملقم SQL بشكل عام؟
نعم؟
[ملاحظة غير مسموع]
موافق، وكان ذلك غاية الطريقة المضمونة للقول ذلك.
نعم. لذلك يسمح لك لتخزين البيانات
ويسمح الأهم كنت للاستعلام عن البيانات.
وهذه خطوة إلى الأمام
من استخدام شيء أبسط مثل CSV، والحق.
مفصولة بفواصل المتغيرات.
قيم مماثلة.
السماح بالمثل تقوم بحفظ المعلومات صف واحد
في ملف نصي.
ولكن ما هو الجانب السلبي ل ملف CSV لتخزين البيانات الخاصة بك،
حتى ولو كنت على نحو فعال الحصول على الصفوف والأعمدة من ذلك؟
نعم.
>> أنت لا 'لديها نفس المؤسسة
كفاءة [غير مسموع].
>> ليس لديك نفس كفاءة المنظمة.
ماذا تقصد؟
>> حسنا، مثل (غير مسموع) يكون مثل الأساسي [غير مسموع].
>> موافق. نعم.
>> انها قواعد البيانات العلائقية هل يمكن أن يكون قواعد بيانات متعددة
مرتبطة مع بعضها البعض بطرق محددة للغاية.
>> موافق. جيدة.
انها >> [غير مسموع] لتحديد CSV.
واسمحوا لي >> قرص القليل من المصطلحات.
الجداول بحيث متعددة ضمن قاعدة البيانات، بالتأكيد،
وتتجاوز ما يمكنك القيام به مع CSV واحد فقط.
ولكن في الحقيقة الحد مع CSV أنا أزعم هو
أن عدم كفاءة كل شيء.
فإنه من السهل جدا أن التخطيط.
ولكن إذا كنت تريد أن تفعل الاستعلام، ما هو الوقت تشغيل
من أي استعلام تحديد على ملف CSV؟
أعني أنها كبيرة قديمة [غير مسموع]، الحق، 'السبب في أسوأ الحالات،
أنها ارتفعت في الجزء السفلي جدا.
حتى لو كنت قد فرز كله ملف CSV، إذا كنت لا تعرف
أن مقدما، حسنا، كنت لا تزال ستكون لدينا
للبحث في كل شيء.
لذلك، من بين الأشياء ونحن في طريقنا للحصول على
من استخدام الفعلي قاعدة البيانات باستخدام لغة
مثل SQL هو أننا يمكن الاستعلام وكان في وسعنا مقدما
كما مصممي قاعدة البيانات تحديد ما هي المجالات
التي من المحتمل ستكون لدينا أسئلة حول درجة أن الناس
في الخلية أو Microsoft أو أوراكل،
كل من جعلت قاعدة البيانات يمكن أن كنت تستخدم تفعل كل
من العمل الشاق ل معرفة، OK،
نظرا مليون من هذه IDS.
كيف يمكننا تخطيط - بها في الذاكرة؟
نوع من شجرة هيكلة ربما،
بحيث عندما تفعل في الواقع تنفيذ الاختيار،
هذا شيء وهذا لوغاريتمي أو لوغاريتمي
من وغاريتمي في الوقت المناسب بدلا من تفويض الواقع
إلى شيء الخطية.
حتى وصلنا الكثير من الأداء بهذه الطريقة.
ويمكننا أيضا تخزين الكثير من البيانات بسهولة أكبر "تتسبب في SQL
عادة يتم تخزين الخادم في ذاكرة الوصول العشوائي حتى ولو أجزاء
من أنه قد يتم تخزينها على القرص وربما كنت أعرف حتى الآن
أن RAM عموما أسرع من الأقراص،
لذلك هذا شيء جيد.
ويمكننا أيضا التعامل مع التزامن أفضل بكثير.
إذا كنت قد اتخذت 165 أو 161، كنت أعرف أنه إذا محاولة شخصين
لتفعل الشيء نفسه في آن واحد على النظام،
الأشياء السيئة يمكن أن يحدث عموما.
حتى بين الميزات الأخرى نحن يمكن الحصول عليها إذا نحن تصميم الجداول لدينا
في الطريق الصحيح هو أفضل الدعم والأمن
عندما يتعلق الأمر التزامن.
لذلك، شخصين في جزأين
من العالم باستخدام نفس الموقع، إذا كانت كل محاولة
لشراء شيء ما في نفس الوقت، وهذا أمر لن
للذهاب في وقت واحد.
بطريقة أو بأخرى فإنها يمكن إجراء تسلسل من قبل شخص آخر من منطقتنا -
شخص آخر غير أنفسنا.
إرادة قاعدة البيانات تفعل ذلك بالنسبة لنا.
حتى عندما يكون أبسط شكل،
SQL يتيح لنا الاستعلام قواعد البيانات العلائقية.
قاعدة بيانات علائقية واحد هو أن لديها واحد
أو أكثر من الجداول في ذلك عادة.
وإذا كان هذا هو غير مألوفة قليلا،
يمكنك حقا مجرد التفكير هذا كما إكسل أو أرقام
أو جداول بيانات جوجل.
فقد الصفوف والأعمدة فقط وعادة أعلى كل
من تلك الصفوف لديه اسم لذلك.
ولذلك فإن هذا قد يكون معرف العمود، العمود اسم،
عنوان العمود وهكذا دواليك.
ثم هل يمكن أن يكون متعددة هذه الجداول إذا كنت تريد
لبدء بطرح أنواع مختلفة من البيانات.
ولكن قد تذكرون ما لا يقل عن من CS50 التي حاولنا
لإعطائك تستند واجهة المستخدم الرسومية أداة [غير مسموع]
لإدارة قاعدة البيانات الخاصة بك.
كان يطلق عليه بريس.
حتى انها مجرد مصادفة أن كان مكتوب في PHP، حقا،
ولكنه كان مجرد على شبكة الإنترنت الجبهة ينتهي إلى قاعدة بيانات.
وعبر علامات التبويب المختلفة وصلات، ويمكن أن تبدأ
لتكوين قاعدة بيانات لنفسك.
ولكن وسيلة جيدة للبدء في الحصول على أكثر من ذلك بقليل مريحة
مع هو أيضا العميل سطر الأوامر.
لذلك، إذا باستخدام جهاز CS50 أو حقا باستخدام أي جهاز كمبيوتر الكلي
الذي يحتوي على الخلية سطر الأوامر العميل، يمكنك أيضا أن تفعل ذلك النوع
المدرسة القديمة، مثل هذا.
بوصفها جانبا المشروع الخلية، على الأقل النسخة مفتوحة المصدر
من ذلك ما يسمى الآن MariaDB لل أسباب مختلفة يمكنك أن تقرأ
حتى على ويكيبيديا ولكن انها نفس البرمجيات،
انها نفس بناء الجملة وهكذا دواليك،
الى حد كبير قاعدة رمز نفس.
وحتى عندما أكون في هذا يدفع أستطيع أن تتفاعل الآن
مع قاعدة البيانات الخاصة بي أكثر من ذلك بكثير يدويا.
ذلك مثال على ذلك، اسمحوا لي أن المضي قدما
ومجرد فتح نافذة الصالة.
حدث لي أن استخدام CS50 الأجهزة ولكن يمكنك القيام بذلك
في معظم أي نظام في التي حصلت على حق
البرامج المثبتة.
وانا ذاهب الى القيام ماي يو لاسم المستخدم جون هارفارد
على هذا النظام على وجه الخصوص، ف لكلمة المرور التي سوف اكتب
في أكثر من ذلك بقليل بشكل آمن عن طريق ضرب أدخل.
الآن أنا المطالبة.
انا ذاهب الى اكتب قرمزي في جهاز CS50
والآن أرى أساسا أن نفس الشاشة.
ولكن هناك أوامر الآن أن نتمكن من البدء في الكتابة
مثل إظهار قواعد البيانات، و وهذا ما سوف تظهر لي كل
من قواعد البيانات التي لدي تم إنشاؤها مسبقا في النظام،
الى حد كبير نفس القائمة كنت انظر في بريس.
هناك اثنين آخرين مثل مخطط المعلومات والاختبار،
التي إذا كنت كزة حول CS50 الأجهزة، ونحن إخفاء بعض
من هذه الجداول انخفاض مستوى
ولكن لقد تم هناك كل هذا الوقت.
الخلية في الواقع مستوى منخفض خصائص مثل أسماء المستخدمين
وكلمات السر لقاعدة البيانات نفسها، وليس للتطبيق الخاص بك
التي قد تكون تشغيل على أعلى من ذلك.
لذلك مقدما، واليوم، وأنا إنشاء قواعد البيانات الزوجين،
واحد وهو ما يسمى courses50.
الاحتمالات هي بعض من كنت قد استخدمت أداة التسوق بالطبع CS50،
والتي هي واجهة كبيرة ل بالطبع كتالوج المسجل.
وهذا هو في الواقع لطيفة بيانات للحديث عن 'سبب،
واحد، ونحن كل نوع من من الواضح مألوفة مع دورات
والمدربين والاجتماع مواقع وكل نوع
من الأشياء العادية من الجامعة،
ولكن انها حصلت أيضا بعض فرص مثيرة للاهتمام
للتصميم.
لذلك نحن نظن أننا سوف تستخدم مفهوم بالطبع كتالوج
وأداة للتسوق باعتباره المثال طوال اليوم لفرز
من تأطير بعض من تصميم قرارات لدينا لجعل.
لذلك دعونا نبدأ هناك.
لنفترض أنني أريد فعلا لتمثيل أبسط السوبر
التسوق بالطبع الأدوات.
وأبسط العالم يمكنني ان اتصور واحد هو
التي توجد فيها دورات وهناك مدربين.
ودعونا نفترض أن من أجل مناقشة
أن كل دورة لديه على الأقل اسما.
لذلك دعونا نبدأ رسم هذا.
انا ذاهب الى استخدام بريس فقط للسهولة،
لذلك نحن لم يكن لديك لكتابة خارج جميع الاستفسارات يدويا.
ولكن أنا هنا في بلدي قاعدة بيانات courses50.
إذا لم يعتادوا على هذا، وأنها سوف يكون من السهل جدا بمجرد الغوص
في لمشروعك الخاص إذا كنت ترغب في استخدامه.
أنا ذاهب لخلق جدول يسمى المقررات
وأستطيع أن أفكر فقط حقل واحد
في الوقت الراهن، واسم دورة.
انا ذاهب الى المضي قدما و ويقول أعطني عمود واحد.
الآن، كما كنت أذكر تحصل واجهة قليلا
مثل هذا.
والاتجاه الصعودي أخرى بصراحة من بريس هو أنه نوع
من الآمر الذاتي والتي عبر القوائم المنسدلة، يمكنك فرز
من الممكن معرفة ما لديك قرارات التصميم هي.
لذلك أنا ذاهب لإعطاء بالطبع كل اسم.
هذا هو اسم هذا العمود.
وماذا عن نوع البيانات الخاصة به؟
معظم يجب أن نعرف في الأقل بعض من هذه الأنواع من البيانات
من التجربة السابقة.
ما هو المناسب لاسم الدورة التدريبية؟
شارون؟
VARCHAR >>.
>> موافق، VARCHAR التي هو متغير شار.
وماذا يفعل ذلك يعني أكثر من الناحية الفنية؟
[ملاحظة غير مسموع]
موافق. لذلك فمن سلسلة.
والجانب فار من ذلك يعني ماذا؟
متغير. ولكن ما يعني ذلك؟
نعم؟
[ملاحظة غير مسموع]
بالضبط. لذلك فمن متغير عدد الأحرف
في سلسلة تصل لبعض أقصى.
حتى هنا لدينا أول قرار التصميم.
لدينا فعلا لاتخاذ قرار وكم بايت الحد الأقصى
لتخصيص كل هذه السلسلة.
بصفة عامة، وتريد أن نوع من عدم جعلها صغيرة جدا،
لا تجعل كبيرة جدا 'سبب واضح
إذا كنت صغيرة جدا فقط سوف تبدأ اقتطاع البيانات
وسوف تفقد المعلومات.
واذا كان كبير جدا، وكنت للتو نوع من قول قاعدة البيانات
توقع و تحسين حصول على مزيد من البيانات
مما قد يحصل في الواقع من أي وقت مضى.
فما هو شعور معقول عدد لاسم الدورة؟
60؟ موافق، لذلك 60.
الذي يبدو معقولا جدا
طالما هو لا يوجد استثناءات لذلك.
هناك حقا أي من الصعب، وسيادة بسرعة.
أن نكون صادقين، ل أسباب تاريخية الكثير
من الناس سوف تختار 255 'تسبب منذ سنوات أن كان نوعا
من الحد الأقصى الافتراضي باستخدام 8 بايت - 8 بت كما العداد الخاص بك.
فما استقاموا لكم فاستقيموا أكثر [غير مسموع] قد تستخدم القوى من 2
ولكن هذا النوع من غير ذي صلة.
ولذا فإننا يمكن أن تذهب مع 60.
يبدو من المعقول أن وقتا طويلا
ونحن في نهاية المطاف لست نادما على ذلك 'السبب هو أن الحد الأعلى.
الآن، لنفترض العكس وقد اتخذ هذا القرار،
حرف لا متغير ولكن مجرد ميدان شار.
ذلك خلافا C و C + +، شار لا يعني شار واحد
وقواعد البيانات التي عموما يعني عدد ثابت
من الأحرف في سلسلة.
ما يمكن أن يكون في الاتجاه الصعودي و / أو الجانب السلبي من بلدي اختيار 60
لحقل شار، بدلا من VARCHAR؟
هذا هو بالضبط نوع الأول من المقرر سيكون لديك لجعل
عندما تفقد [الصوتية] من من المشروع مع شريكك.
نعم، شارون مرة أخرى.
[ملاحظة غير مسموع]
جيدة. لذلك إذا كان الاسم هو أقل
من 60 ثم كنت إضاعة أيا كان ذلك هو دلتا
بين 60 و الطول الفعلي.
بحيث يشعر فقط الإسراف، أكثر بايت مما تحتاج.
ولكن لماذا لا توجد عليه؟
بالتأكيد هناك بعض الاتجاه الصعودي.
نعم؟
[ملاحظة غير مسموع]
بالتأكيد. حتى في بعض الأحيان كنت قد تعرف على عدد ثابت
من شخصيات مثل 10 أرقام لرقم هاتف على سبيل المثال.
ولكن من يهتم، مثل لماذا لا نقول فقط 11 على أي حال
أو لماذا لا يقول 60 على أي حال مع VARCHAR؟
ما ميزة لا نحصل من خلال معرفة وتصميم
لعدد محدد من الشخصيات؟
[ملاحظة غير مسموع]
كنت على الطريق الصحيح.
لذلك فمن الأمثل ولكن انها حقا ل- نعم؟
[ملاحظة غير مسموع]
موافق. جيدة. دعونا التركيز على أن الجزء الأخير.
لذلك الفهرسة.
لذلك إذا كنت تبين أعرف مقدما أن جميع
من الحقول تسير أن يكون 60 حرفا،
يمكن ان يخطر لك حقا من هذا العمود في قاعدة البيانات إكسل
وجود مستقيم جدا، غادر برر
وحواف مبررة الحق
لأن كل عمود هو 60 حرفا واسعة.
وهذا يعني أن هذا سلسلة هو 60 حرفا بعيدا
من هذه السلسلة، 60 الشخصيات بعيدا عن هذا واحد
وهذا واحد وهذا واحد.
لذلك تماما مثل الوراء عندما كنت تعلمت C، كان عليك الوصول العشوائي
في عالم المصفوفات، نفس الفكرة هنا.
إذا تم تمثيل العمود الخاص باستخدام أحرف طول ثابت فقط،
يمكنك مؤشر فعال عشوائيا إلى 60 أو 120 أو 180
ويمكنك الحصول على فردي سلاسل بسرعة أكثر من ذلك بكثير.
ثم إذا كان بدلا من ذلك، كان العمود الخاص حافة مستقيمة اليسرى إذا جاز التعبير
ولكن الحق وعرة جدا حافة إلى العمود
لأنك قد لدينا 10 حرفا،
15 حرفا، 5 أحرف.
لذلك هذا هو أيضا المقايضة.
وأحيانا فقط من خلال التجربة والخطأ
والتجريب يمكنك معرفة
ما حقا نداء الحق هو ولكن هذه هي أنواع
من الأسئلة التي يجب أن أذهب
من خلال عقول و / أو الخاص الجداول عندما يحين الوقت
لتصميم قاعدة البيانات الخاصة بك.
لذلك، ليس صحيحا بالضرورة الإجابة ولكن يجب عليك
على الأقل لديها بعض جملة أو جملتين في الاعتبار
النسخ الاحتياطي مهما كانت قرار جعل لكم.
حسنا.
لذلك دعونا نحافظ على التمرير في المطالبات هنا
التي هي واجهة المستخدم بريس لل.
مع ذلك، فإن القيمة الافتراضية ل اسم، ينبغي أن أحدده
أنه ينبغي أن يكون لديك قيمة افتراضية فارغة؟
ما رأيك؟
يمكن بالطبع أن يكون له اسم فارغة؟
فقط يشعر غريب، أليس كذلك؟
لا أستطيع التفكير في أي دورات لم تسمها في جامعة هارفارد.
وربما يكون هناك بعض حالة زاوية غامضة
حيث يتم إعطاء دورة عددا
وهذا البروفيسور لا اختار اسما لذلك، ولكن -
أعني، لهيك مع ذلك،
مثل دعونا لا حتى تهتم دعم ذلك.
وأود أن أقول في الفائدة قاعدة بيانات نظيفة لطيفة،
دعونا تحديد أنه لا يمكنك لها القيمة الافتراضية فارغة.
بدلا من ذلك، يمكن أن نقوم به شيء من هذا القبيل بالطبع بدون عنوان
وهو لا يختلف مع نظام التشغيل Mac OS و Windows تفعل
عند إنشاء مجلد على سبيل المثال،
ولكن هناك التي تجعل أكثر من ذلك بقليل الشعور
ذلك أن الإنسان يرى شيئا.
نحن نتحدث عن قاعدة بيانات النهاية يفترض
وبطبيعة الحال للكتالوج.
لذلك أنا لا حقا حتى مثل فكرة يعطيها
في أسماء بالطبع بدون عنوان
منذ هذا ليس حقا الذهاب لمساعدة أي شخص.
لذلك دعونا نترك هذا الأمر لا شيء، وهو ما يعني أنه عند إدراج
في قاعدة البيانات هذه، لديك لإعطاء كل دورة اسم
الذي يشعر قليلا أنظف بالنسبة لي.
حسنا.
حتى التمرير مزيد من المعلومات ومقارنتها.
هذا فقط أن تفعل مع مجموعات الأحرف وغيرها
إذا كنت قد رأيت من أي وقت مضى يذكر السويدية
في هذا بريس 'تسبب الشعب
الذي كتب بريس وكانت السويدية.
هو أن PHP أو هو الخلية؟
واحد من اثنين، وأنا نسيت مرتجلا.
ولكن هذا لأسباب تاريخية
ولكن يمكنك التعبير عن كل حرف في اللغة الإنجليزية
التي يمكن مع السويدية لذلك فمن حد كبير غير قضية.
الجهاز CS50 هو على الرغم من تستخدم - تكوين لاستخدام UTF-8،
بحيث ينبغي عموما لا يطفو على السطح بالنسبة لك.
الصفات.
لذلك لا شيء من هذه ذات الصلة حقا هنا.
أرى ثنائي، غير الموقعة، zerofill غير الموقعة،
وعلى تحديث الطابع الزمني الحالي.
هذا الحقل لا ينطبق إلا بالنسبة لبعض حقل رقمي
أو بعض حقول الوقت.
ولذا فإننا سوف تخطي أن تماما.
فارغة. يمكن أن يكون هذا المجال فارغة؟
لذلك لا. لدينا بالفعل هذا النوع من المحادثات.
لذلك نحن لا نريد قيمة افتراضية.
نحن لا نريد أن تكون فارغة.
ماذا عن المؤشر؟
هناك أربعة خيارات هنا.
ماذا يعني إذا كنا تحديد
أن هذا الصف هو الذهاب ليكون المفتاح الأساسي؟
التفكير في العودة إلى CS50 أو CS165 إذا كنت قد اتخذت ذلك.
[ملاحظة غير مسموع]
بالضبط. حتى مفتاح أساسي بحكم التعريف هو الحقل
الذي يعرف بشكل فريد كل صف في هذا الجدول.
ويمكنك الاعتماد عليها للقيام أن تحديد فريدة من نوعها.
الأمر كذلك، فما الذي يعنيه ثم أن تكون مجرد فريدة من نوعها؟
أيضا، نوع من هذين ديه نوع
من تحت الآثار تحت غطاء محرك السيارة.
ولكن عموما، هو المفتاح الأساسي نوع من العقد إجراء
مع الشيء قاعدة البيانات.
عندما أفعل الاستفسارات تبحث عن دورة،
انا ذاهب الى استخدام هذا حقل معين.
وسوف نعود ل لماذا قد يكون لدينا اثنين
هذه الخيارات هنا، الأولية أو فريدة من نوعها.
فريدة من نوعها يقول فقط، وهذا الميدان ستكون فريدة من نوعها
ولكن أنا لا حقا جعل أي النوع من الالتزام اللفظي هنا
لاستخدام هذا المجال للقيام عمليات البحث بلدي
لأسباب سنقوم نرى في مجرد لحظة.
إذا كان لنا أن تحديد بدل المؤشر، ماذا يعني ذلك لتحديد
أن حقل لديه مؤشر على ذلك؟
نعم؟
[ملاحظة غير مسموع]
بالضبط. انها كانت الأمثل للاستعلام.
لذلك أنت - خادم قاعدة البيانات، أوراكل، الخلية، أيا كان،
ستعمل عموما سحره وراء الكواليس بمجرد النقر فوق
هذا الخيار ثم انقر فوق حفظ وانها ستبني
تصل عادة هيكل شجرة، B-أشجار إذا كنت قد رأيت
أو سمعت قبالة وهي شجرة قصيرة جدا، يبحث
والتي تمنحك لطيفة جدا خصائص لوغاريتمي
عند البحث على البيانات.
إذا لم تقم بتحديد فهرس على الميدان، ما يحدث
أن يكون على التوالي الوقت من البحث
لالتعسفي [الصوتية] اسم الدورة التدريبية؟
ما هذا؟
[ملاحظة غير مسموع]
أوه، [غير مسموع]، خطية، أليس كذلك؟
إذا كان هناك أي تحسينات الممنوحة لقاعدة البيانات
وأنت لم تكن قد فكرت قاعدة البيانات أي نوع
البيانات يمكن توقعه.
أفضل ما يمكنك القيام به هو الاختيار كل شيء عندما كنت تبحث
لبعض القيمة، وخاصة إذا كان هناك يمكن
في الواقع تكون مكررة.
النص الكامل وفي الوقت نفسه، وسوف نقوم موجة أيدينا الآن.
ولكن بصفة عامة، وهذا هو نوع المؤشر الذي يسمح لك
لتحسين لالكلمة بالبحث في حقل.
ولذلك فإن هذا قد يكون مرشح جيد
لكأنه وصف الحال حيث قد يكون لديك زوجين
من الفقرات وكنت قد تريد أن تفعل مباريات فرعية.
والنص الكامل السماح عموما يمكنك أن تفعل ذلك بكفاءة إلى حد ما.
منظمة العفو الدولية، وهذا هو نوع الرهيبة من تفسير ولكن إذا كنا تحوم
أكثر من ذلك سترى السيارات الاضافة.
لا ينطبق سواء هنا ولكن الزيادة السيارات هو مفيد
لمثل حقل عدد صحيح لأن فإن قاعدة بيانات رعاية
من عملية زائد plusing في كل مرة كنت تفعل إدراج.
ذلك أنه حتى لو شخصين انقر حرفيا إرسال
في نفس الوقت، ومحاولة لإنشاء صف بطريقة أو بأخرى
في قاعدة البيانات، واحدة من منهم سوف تحصل على عدد من أنا،
من جهة أخرى سوف تحصل العدد الأول بالإضافة إلى 1.
لم يكن لديك ما يدعو للقلق
حول رقمين يجري تعيين مماثل لو كنت
للقيام بذلك نفسك في التعليمات البرمجية.
حسنا.
لذلك أنا نوع من مثل فيها ونحن قد حصلت على الاسم ليكون.
لذلك دعونا انقر فوق حفظ.
هذا هو التصميم الجيد لجدول قاعدة البيانات؟
وبوصفها جانبا إذا صدئ على SQL أو تقوم بفرز
فقط تتحول دائما أعمى العين على ما يجري،
كان يمكن أن كتبته ذلك بالضبط -
هذه الخطوط الثلاثة في ذلك أبيض وأسود موجه
في سطر الأوامر العميل أو قد فعلت
أن في التعليمات البرمجية برمجيا.
لذلك كل بريس تقوم به ل لي، هو مجرد إنقاذ لي الجهد
تذكر أحيانا بناء الجملة وكتابة خارج ل
مثل الأوامر مملة.
حسنا.
لذلك هذا لا يشعر مثل أفضل تصميم، جدول حقل واحد.
الآن أننا يمكن أن يكون أشياء مثل أساتذة
والمواقع والأوصاف.
ولكن حتى ذلك الحين، وذلك باستخدام الاسم فقط
لتحديد الدورات لا يشعر المثالي.
ما عموما فعلنا في الماضي
إذا كنت قد استخدمت قواعد البيانات إلى الصفوف فريد؟
لا تستخدم varchars عادة.
نعم؟
[ملاحظة غير مسموع]
نعم. لذلك عادة ما يكون معرف بالطبع.
لذلك، والأكثر شيوعا هنا نقترب خاصة
عند استخدام إطار هو في الواقع مجرد
لاستخدام عدد مثل عدد صحيح.
لذلك اسمحوا لي نمضي قدما ونفعل ذلك.
ويمكننا أن نفعل هذا في بضع الطرق، ولكن لاحظ إذا كنت التكبير
في في القاع هنا.
انا ذاهب الى القول إضافة واحد الأعمدة في نهاية الجدول،
عموما لمجرد البصرية راحة كنت وضعت معرفات
في بداية الجدول على الرغم من هذا لا يوجد لديه الحقيقي
تأثير وظيفي.
لذلك أنا ذاهب الى القول إضافة عمود واحد
في بداية الجدول.
انا ذاهب الى فوق انتقال، أن يعطيني هذا يعود UI هنا.
دعونا نسمي هذا الرقم.
إذا كنا نعتقد أننا ستكون لدينا لا مزيد من القيام به 4 ملايين الدورات
حقل عدد صحيح وعلى ما يرام.
حتى أننا يمكن أن يتقلص عليه
ولكن مساحة رخيصة حتى يهتم حقا.
ولكن، ونحن نحاول إرسال الفيسبوك الآن،
قد لا يكون أمرا سيئا توقع رجات كبيرة
التي من شأنها أن تعطينا رجات 64 بت
ولكن بعد ذلك كنت حرفيا مضاعفة عدد البتات
الذي تستخدمه، المقايضة الطفيفة ذلك
ولكن شيئا للنظر فيها.
الآن، وهذا هو مربكة الشيء القديمة.
قد يتذكر من استخدام الخلية
في أي وقت أن تقوم بتعريفه الباحث الحقل الذي سوف كثيرا ما نرى عددا
بجانب ذلك مثل عدد 10.
عليها أن تفعل مع أي شيء حجم عدد
أو عدد من البتات.
أن له علاقة مع عدد من الأحرف التي يتم استخدامها
على بصريا العرض هذا المجال الباحث
عند استخدام إطار المحطة الطرفية.
حتى يمكننا أن نرى أنه في لحظة.
لذلك، لا يكون للتضليل عن طريق كتابة الأرقام
هناك على الرغم من انها يطلب منا نحو فعال
واحد هنا.
أكثر من هنا، وانا ذاهب ل المضي قدما ويقول غير الموقعة.
ليس هناك سبب للنفايات كل الأرقام السالبة لدينا
منذ قاعدة البيانات يجري عموما
لنفترض إيجابية القيم أو فارغة.
معرف بالتأكيد لا ينبغي أن تكون فارغة.
وما رأيكم مؤشر لحقل معرف هذا؟
دعونا جعله الأولية.
لذلك، ماذا لو، على الرغم من مثل استطيع فقط يعتقدون بالطبع CS164 احد
في جامعة هارفارد واحد فقط بالطبع CS50 في جامعة هارفارد
وهذا إلى حد ما عموما الحقيقية بكثير
أن هناك ربما استثناءات [غير مسموع] كلا فصول دراسية
أو شيء غريب من هذا القبيل.
ولكن الأهم من ذلك لماذا هو أفضل
لاستخدام معرف لا يتجزأ الرقمية ل تحديد فريد بدلا دورات
من مجرد سلسلة فريدة من نوعها؟
نعم؟
[ملاحظة غير مسموع]
موافق، مثيرة للاهتمام.
حتى لو كان لدينا نوع من الدورات المدرجة في الصليب.
لذلك هذا هو مثال جيد.
لست متأكدا أود أنه على الرغم من حل
من خلال منحهم نفس رقم إذا كان هذا
حيث كنت ذاهب مع ذلك.
لا؟ موافق. ولكن بالتأكيد حالة الزاوية للنظر فيها.
إذا كان هناك نوع من - نحن بحاجة إلى نوع
من المحتمل التعرج.
[ملاحظة غير مسموع]
بالتأكيد.
[ملاحظة غير مسموع]
هذا هو مثال جيد.
قد تغيير اسم أكثر الوقت، معقولة تماما.
ماذا؟
[ملاحظة غير مسموع]
آسف، وأقول مرة أخرى.
[ملاحظة غير مسموع]
نعم، بالضبط.
لذلك حقا، وهذا النقطة الفاصلة الحقيقي هو
أن استخدام كثافة العمليات 32 بت ربما ستكون أسرع
من بعض متغير مجال شار طول.
في الحالة الأولى، ويمكن تناسب حرفيا في سجل،
ناهيك عن الكثير أصغر أثر الذاكرة.
في الحالة الأخيرة، وأنت تسير لدينا للقيام منتجع [الصوتية]
لمقارنات السلسلة التي في حد ذاتها مع الخطية
في حجم سلسلة يحتمل.
لذلك، انها مجرد لطيفة الأمثل،
وعلى وجه الخصوص انه سيكون
لدعونا نفعل ما يسمى ينضم أكثر كفاءة
في مجرد لحظة.
لذلك دعونا نفعل ذلك.
سنقوم تحديد أن وهذا هو الأساسي
لأنني لا سيما تريد أن الرعاية أو التفكير
حول ما عدد هو من دورة.
دعوهم تأخذ على ما القيم التي تريدها.
انا ذاهب الى القول الزيادة السيارات حتى أتمكن من الاستعانة بمصادر خارجية لتلك التفاصيل.
كما هو الحال في جانبا كنت قد نعرف أن جامعة هارفارد
على الأقل لديه فريدة من نوعها أرقام للدورات.
ليس لدي ذكريات ما هو هذا الدورات.
وأنا أعلم أن في CS50 رقم الكتالوج هو 4949،
تعسفية تماما.
ولكن هناك غريب الحالات الزاوية في ذلك حتى
في تفريغ registrarial بالطبع بيانات النشرة المصورة،
دورات في بعض الأحيان، البالغ من العمر دورات لديها عدد مثل 4.
لكن من الناحية الفنية أن الحقل هو حقل شار
الذي يبدأ ببساطة مع 0004.
حتى هنا أيضا، يجب أن تكون حذرا حول التمييز
بين الأشياء مثل بالطبع رقم الكتالوج
والتي قد يكون لها بعض الإنسان فكرة ثابتة الطول، 0004،
ويجب أن لا تخزن التي على سبيل المثال في رجات.
هذا النوع من المجال ينبغي خزنها في أماكن أخرى.
وذلك في جامعة هارفارد، وإذا كنا الواقع جعل دورة
أداة للتسوق، انها ربما لا تكفي
إلى دورات عدد مع فقط 1، 2، 3، 4.
نحن على الارجح ستكون لدينا
لديك حقل آخر دعا عدد التسويقي،
التي من المفترض أيضا أن تكون فريدة من نوعها تقوم
على الاتفاقيات الإنسان هنا ولكنها ليست الخيار الأفضل
لمعرف فريد ل قد يكون طول متغير.
قد لا يكون أربعة حرف، قد يكون خمسة.
في الواقع، وأعتقد أن عدد قليل من منذ سنوات أنها تتحرك
لسبب خمسة أحرف 'هناك كان أكثر من 999 دورات
في المجموع أو شيء من هذا القبيل ذلك، أو 9،999 الدورات.
لذلك، قد تكون مثالا حيث الحقل ليس الابتدائي
ولكن يجب أن تكون فريدة من نوعها.
وعنوان البريد الإلكتروني هو آخر واحد.
قد تريد أن تكون فريدة من نوعها
ولكن ليس بالضرورة المفتاح الأساسي الخاص بك.
حسنا.
لذلك اسمحوا لي فرقعة خارج أخرى الجدول أسرع بكثير من هذا واحد.
لذلك أنا ذاهب لاستدعاء هذا أحد مدربي وانا ذاهب
لإعطاء هذا ما مجموعه عدد الأعمدة اثنين.
انا ذاهب الى تعلم بلدي الدرس من المرة السابقة.
انا ذاهب الى استدعاء معرف العمود الأول.
أنا ذاهب لاستدعاء اسم العمود الثاني.
انا ذاهب أيضا أن تفعل VARCHAR.
انا ذاهب الى تولي أي أستاذ له اسم أطول
من 60 حرفا، على الرغم من الآن هذا قد يكون دفعها
مع بعض أسماء طويلة، خاصة الناس مع أسماء المتوسطة.
هذا شيء طيب لهذا اليوم.
لذلك دعونا تمرير أكثر من هنا.
دعونا جعل هذا غير الموقعة مرة أخرى.
دعونا جعل هذه الانتخابات التمهيدية.
ونحن سوف تسمح أسماء مكررة
في حالة وجود اثنين جون و سميث أو شيء من هذا القبيل.
والآن لدينا جدولين.
وحتى الآن، وهذا يطرح السؤال كيف يمكنني ربط
في مدرب مع الدورة؟
أشعر وكأنني نوع من حصلت قبل نفسي
لأنه إذا كان مدرب يعلم بالطبع،
أول غريزة بلدي شأنه يكون في الواقع إلى العودة
إلى دورات تحقيق، وهذا ليست فكرة جيدة.
اسمحوا لي في الواقع إضافة عمود واحد في نهاية الجدول،
انقر فوق انتقال، وسوف أكون نسمي هذا المدرب.
وسوف يجعل هذا VARCHAR وسوف يجعل هذا 60.
وربما سأترك ذلك لاغية الآن
في حالة بالطبع لم تم غير الموقعة في المدرب
والذي يحدث في بعض الأحيان قبل يبدأ المصطلح وانقر فوق حفظ.
أي من هذه التصاميم تفضل؟
أول واحد حيث لدينا الجدول مدرب منفصلة لل
أو الثاني حيث أننا فقط إضافة حقل إلى الدورة؟
حتى انها تربط بشكل وثيق مدرب مع بالطبع.
[ملاحظة غير مسموع]
موافق. جيدة. ولكن اسمحوا لي ابعاد.
انها مجرد بسيطة مثل ذلك يمكنني اكتب فقط في اسم الشخص
في هذا الجدول، مثل بالتأكيد التي لديها بعض القيمة أو -؟
[ملاحظة غير مسموع]
حسنا.
حسنا، اسمحوا لي أن يكون من الصعب هنا.
لذلك اسمحوا لي أن أقول هذا بالطبع هو CS51
وأعرف أنه يدرس هذا العام من قبل شخصين.
لذلك، هنري لايتنر ولكن جيسي TOV -
ولذا فإنني سوف مجرد وضع فاصلة بين البلدين، والحق.
أنا حقا جيدة في CSV من الأمس.
[ملاحظة غير مسموع]
بالضبط، والحق.
بمجرد اللجوء إلى شيء من هذا القبيل،
التي قد تشعر معقول وكنت قد يشعر
مثل هذا النوع من الذكية.
أنا نوع من الاقتراض واحد الفكرة التي هي للعمل بشكل جيد،
استعارة فكرة جديدة و نوع من الجمع بينهما.
كنت نوع من هزيمة تماما وجهة استخدام قاعدة البيانات
في المقام الأول قضية ' إذا كان واحد من القيم
استخدامه هو البحث بشكل أسرع بسبب الفهارس المختلفة
والجداول التي يمكن أن تراكمت لديك
بواسطة محرك قاعدة البيانات نفسها.
الآن، إذا كنت تريد البحث لجميع الدورات
أن يعلم جيسي، والآن لديك للم فرعية مطابقة على كل
الحقول مدرب،
وهو ما يعني عمليا الخطية البحث مرة أخرى 'السبب لديك
العثور على هذه المجموعة التعسفي من ثلاثة أحرف في أي مكان
في مجال مدرب سبق
ضمن يليه ربما بفاصلة.
لذلك هذا بالتأكيد لا يبشر بالخير.
لذلك اسمحوا لي بالعودة الى طاولة المفاوضات.
اسمحوا لي أن المضي قدما ل الدورات والتراجع عن ذلك.
انا ذاهب للذهاب فقط قبل وإسقاط هذا المجال.
وإذا كنت ترغب في القيام بذلك يدويا،
بناء الجملة ALTER TABLE دورات إسقاط المدرب.
لذلك دعونا نمضي قدما ونقول نعم لذلك.
ونعود إلى هذه الفكرة في وقت سابق
حيث لدي منفصلة الجدول للمدربين.
ولكن الآن هذا يشعر قليلا مثل يمكن أن أضع دورة
في الجدول بالطبع ل ومدرب
في الجدول المعلم لكنني بطريقة أو بأخرى يحتاج للربط بين القضيتين.
وكيف أقترح أن نفعل ذلك؟
[ملاحظة غير مسموع]
جيدة. لذلك دعونا نفعل ذلك.
ويمكن أن نسمي هذا الجدول من الناحية النظرية أي شيء.
انا ذاهب الى عمدا سمها ما الكثير
أطر من شأنه نسميها، من بينها،
Laravel كما سترى في بعض الشيء.
أنا ذاهب إلى نسميها دورة يؤكد المدرب.
استخدام المفرد في هذا الحالة لكل من الكلمات
وجميع بأحرف صغيرة مرة أخرى، وأيضا مع -
ثم أبجديا فرز من اليسار إلى اليمين.
هذا هو إجراء تعسفي تماما ولكن انها تميل الى ان تكون اتفاقية
في الكثير من هذه الأطر في PHP بلغات أخرى.
كم عدد الأعمدة التي أحتاجها في هذا ما نسميه انضمام الجدول،
للانضمام اثنين آخرين الجداول معا؟
ثلاثة أعمدة؟
أي واحد - فماذا ستكون؟
[ملاحظة غير مسموع]
موافق. جيدة. يعمل.
واستطعنا من الناحية الفنية قطع زاوية هنا ولكن الكثير
الأطر على وجه الخصوص لا تزال تعطي حتى هذه الصفوف
معرفات فريدة من نوعها على الرغم من لغويا الصف
أننا نكترث أو الأعمدة التي نحن نهتم حقا
هي الأخيرين من حوالي ما قلته، ID الدورة
وID المدرب.
لذلك دعونا نفعل ذلك.
سأتصل هذا الصف فقط الهوية، مثلما فعلنا من قبل.
ولكن هذا واحد انا ذاهب لاستدعاء معرف بالطبع.
هذا واحد انا ذاهب الى استدعاء معرف المدرب.
وانا ذاهب الى تحديد بأن جميع
منهم غير موقعة 'السبب أريد
لتحقيق أقصى قدر من بلدي 4 مليار مجموعة كثافة العمليات.
وينبغي أن يكون أيا منها فارغة.
انا ذاهب الى تحديد أن يجب أن يكون الرقم لا يزال الأولية.
ومرة أخرى، وهذا هو مجرد اتفاقية،
الكثير من الأطر حتى لو كنت لا ترتب
تحتاج في الأساس من معرف فريد للصف،
اتضح انها مريحة لل رمز، SQL التي يجري
أن يكون تلقائيا ولدت بالنسبة لنا.
لذلك سأترك بأنه الأولية.
ولكن الآن، وأنا نوع من لدينا قرار التصميم،
رقم الدورة ومعرف المدرب.
ما إن وجدت الفهارس ينبغي أن تحصل عليه؟
إذا سأترك لم فهارس، ما هي الآثار؟
ما هو ملمحة؟
الأداء كما كان من قبل، أليس كذلك؟
إذا لم يكن هناك مؤشر و أفضل ما يمكنك القيام به هو نوع
من [غير مسموع] من خلال كل شيء يبحث عن الأرقام.
بحيث لا يشعر الذكية.
يجب أن تكون الأولية؟
فلماذا لا؟
لماذا لا الأولية؟
[ملاحظة غير مسموع]
الكمال. لذلك نحن لفة من [الصوتية] الأولية.
اخترنا بالفعل ذلك.
لذلك، يجب أن تكون فريدة من نوعها؟
[ملاحظة غير مسموع]
جيدة. لذلك، إذا كنت تفترض مدرب واحد لكل دورة،
بخير تماما.
وهذا بالتأكيد حالة شائعة
ولكن وضعنا بالفعل مرة واحدة المثال ربما مألوفة.
حصلت CS51 اثنين من المدربين لذلك نحن نوع
من ثمل الآن في هذه الحالة.
إذا فعلنا تسمح فقط مدرب واحد،
يمكننا القيام به في الواقع وسيلة مع انضمام الجدول تماما،
العودة إلى النهج السابق
ووضع لا اسم الشخص ربما ولكن معرف المعلم.
إذا كنت تعرف كل دورة كما فقط مدرب واحد يمكن أن يكون فقط
عمود واحد.
ولكن التغير هو ما حصل لنا في متاعب.
حسنا.
لذلك، يجب أن تكون فريدة من نوعها؟
رقم النص الكامل لا يشعر المعمول بها.
كما قلنا قبل ذلك
لمثل فرعية مطابقة للأوصاف.
فماذا في الفهرس؟
حسنا، ربما هي مؤشر أفضل مرشحنا
الذي يحكي الخلية الأمثل لعمليات البحث على هذا
أو اسمحوا لي أن تضع، تحسين لعمليات البحث أو تنضم
كما سنرى في مجرد لحظة
بحيث انهم أكثر قليلا فعالة
من أي شيء خطي بحتة.
لا أريد أن السيارات بزيادة هذا المجال؟
لذلك لا، لأن صحيح وجود العنصر الأصل
في الجدول الدورات.
هذا حيث انها ذاهب للحصول زائد،
بالاضافة الى انها في الواقع عندما المدرجة.
هنا، وهذا هو كل شيء يجري لإدراجها يدويا
من قبلنا يفترض في التعليمات البرمجية.
لذلك دعونا ببساطة تحديد أن كلا بالطبع ID
وID المدرب ديك الفهارس.
الآن سنذهب إلى الأمام وإنقاذ.
والآن، فقط لاظهار كنت المراسلات
بين ما هو لطيفة واجهة المستخدم الرسومية ودية
واجهة سطر الأوامر.
اسمحوا لي المضي قدما والقيام التالي في هذه المطالبة الخلية.
انا ذاهب الى القول استخدام courses50
وهو الاسم التعسفي أعطيتها لقاعدة البيانات هذه.
والآن، وأنا لا حتى نتذكر ما فعلناه.
لذلك اسمحوا لي اكتب عرض الجداول
وعموما منقوطة وسوف يكون صديقك هنا
لإنهاء الاستعلام.
وهناك هو عليه.
حتى هنا الصفوف أو بالأحرى الجداول التي لدينا هنا.
الآن، أنسى ما دورة يبدو،
لذلك اسمحوا لي لا تصف الدورات والآن أرى نوع من ASCII
أو إصدار ما كان يفعل بريس
وأرى أن الرقم هو عدد صحيح.
غير ان هناك 10.
ماذا يعني ذلك؟
هذا يعني فقط أنه عندما حان عرض انها سوف تتخذ
حتى 10 حرفا على إطار المحطة الطرفية.
هو قبول القيم الخالية؟
رقم هذا هو المفتاح الأساسي.
يمكن أن يكون لها قيمة افتراضية؟
ورقم اضافي وهو خاص الأعلام مثل الزيادة السيارات.
لذلك دعونا لا مجرد زوجين الإدراج من هنا بسرعة.
أنا ذاهب لترتفع ل- دعنا نقول فقط.
دعونا تغيير الدولة إلى شريحة
أين أنا من النوع ما قبل إعداد هذا.
هذا هو ملخص ثم ل كل ثلاثة من هذه الجداول.
أنا بالفعل مجرد يدويا كتابة الأمر الأول.
وهنا، ذهبت إلى الأمام و اكتب الآخرين لك.
هذا هو مجرد الشيء الأسلوبية.
عموما، الكثير من الناس اكتب عبارات SQL في كل مباراة دولية
ثم أسماء الجداول و أسماء الحقول في الحالة الأدنى،
إذا فقط لأنه نوع من المدرجات
ما هو المصطلحات الخاصة بك وما هو بناء الجملة قاعدة البيانات.
حتى هنا لدينا ثلاثة الجداول والدورات والمدربين،
ودورات المدربين.
في الشريحة التي قمت بها في وقت مبكر، لم يكن لدي حقل معرف
ولكن هذا ليس واقعيا شيئا سيئا على الإطلاق.
فإننا نرى مجرد العمود الثالث هناك.
قد فعلت ذلك هنا؟
وحتى الآن اسمحوا لي أن أقترح أن نقوم به حفنة من الإدراج.
حتى هنا بعض البيانات، أنا تكبير.
لذلك أنا ذاهب الى اقتراح أنه في الدورات،
ونحن نتعامل فقط مع ثلاث دورات.
ولقد اخترت هذه الثلاثة 'السبب انهم ممثل
من بعض لطيفة - لديهم بعض الخصائص لطيفة.
CS1، CS50، CS51، فإنها لديهم معرفات زيادة
ولكن ما هو معرف ما هو خارج السياق تماما.
هذا مجرد الترتيب الذي كانت السيارات المدرج بواسطة لي.
ماذا عن المدربين؟
وحتى الآن، وذلك لأن هنري لايتنر يعلم كل CS1 وCS51،
هذا هو نوع من المناسب ضمنا لدينا تصميم.
وجيسي يعلم CS51 ومالان يعلم CS50.
وحتى الآن - أو بالأحرى هذه هي مجرد معرفات هؤلاء الناس الفريد.
والدورات والمدربين، - المدربين بالطبع، لاحظ هنا.
ID1 الدورة التي ويتم تدريس CS1
من قبل مدرب ID1 الذي هو هنري.
ID2 بالطبع، وأنا أعتقد أنه كان يدرس CS50
من قبل مدرب ID2، وهو مالان.
ثم أخيرا، CS51، و تلاحظ لدينا اثنين من الصفوف.
والآن هذا هو السبب في أن انضمام الجدول هو قوية يتم تدريسها
من قبل كل من هنري وجيسي.
لذلك هذا هو كل شيء بخير وجيدة،
ولكن يمكنني بالكاد تذكر من أعلى
رأسي من هو الذي هنا.
كيف يمكن لكم ربما التعامل مع ذلك في التعليمات البرمجية،
دون الحاجة إلى أشياء رمز القرص الثابت؟
حسنا، هذا هو المكان SQL نفسها يبدأ لتصبح صديقنا.
وانا ذاهب الى أقترح أن يمكننا أن اكتب ما يلي.
سأفعل هذا في في موجه الفعلية.
اسمحوا لي أن تمضي قدما و إدراج هذه الأشياء.
لذلك، في جدول الدورات دعونا نفعل بالضبط ما كان لدينا
لحظة مضت.
انا ذاهب الى الأمام وأقول، دعونا إدراج CS1 وCS50.
دعونا إدراج عدد قليل من أكثر الصفوف في آن واحد، CS51.
الآن، اسمحوا لي أن تمضي قدما وحفظ.
كل الحق، لذلك أنا فقط إعادة بأسرع
ما أستطيع العلاقات رأينا فقط على الشاشة.
وحتى هنا لدينا لايتنر، وهنا لدينا مالان.
دعونا نعطي أنفسنا صف آخر، وTOV.
الآن اسمحوا لي أن حفظ هذا.
وأنا أفعل لهم عمدا في نفس النظام.
لا، لقد نسيت أن تعطي هذه الزيادة السيارات.
اسمحوا لي أن إصلاح هذا بسرعة.
أنا في إصلاح هذه رمز الانترنت.
التي فشلت بوصفها جانبا.
حقيقة أنني لم أستطع إدراج ايتنر ومالان
وفشلت TOV، لأنني لم تحديد رقم حتى ولو
انها تتوقع احدة وأنا نسيت أن تحقق الزيادة السيارات،
وهو ما يعني أنهم كانوا جميعا افتراضيا الحصول على صفر.
ولكن هذا يتناقض ثم التي الممتلكات التي قمنا المحدد.
تم انتهاك المفتاح الأساسي لذلك لم أكن حتى اسمحوا لي أن تفعل ذلك.
لذلك اسمحوا لي إصلاح هذا.
الآن، اسمحوا لي أن أعود إلى علامة التبويب إدراج وتحديد هنا
أريد أن ايتنر، مالان و، أكثر واحد صف واحد، TOV.
والآن أخيرا، فقط واحدة أن من الصعب قليلا
هو أن نتذكر بالطبع المدرب.
دعونا الآن أن إدراج بالطبع ID1 هو مدرب ID1
ذلك أن CS1 وهنري.
ID2 بالطبع هو المدرب ID2 وهو CS50 ومالان.
وبعد ذلك مشاركة منها لدينا ما يدعو للقلق هو بالطبع ID3
وهو CS51، يتم تدريسها
بواسطة مدرس المقرر 1، والذي هو هنري.
وكما يدرس أيضا ثلاثة بنسبة 3، وهو TOV.
لذلك نأمل الآن لقد صوغه هذا -
اللعنة، لقد فعلت نفس الشيء.
مدرس المقرر يحتاج الزيادة السيارات.
حسنا.
سأفعل هذا أسرع هذه المرة، بالطبع 1، بالطبع 1، 2، 2.
والآن أخيرا، ونحن نفعل CS51 التي لديها بالطبع ID3 وهنري.
وبالطبع ID3 وجيسي.
التي تبدو جيدة.
موافق. وحتى الآن، دعونا نعود لإطار المحطة الطرفية.
حتى إذا أصف دورات سنرى ذلك.
إذا كنت تريد أن ترى دورات يمكنني تفعل الآن تحديد النجوم من الدورات،
منقوطة، والآن ونحن نرى تلك القيم.
والآن، ماذا لا أريد أن أفعل؟
حدد نجم من المدربين، وهذا كما كنت أتوقع،
وحدد نجم من الدورات - بالطبع تسطير المدرب.
فكيف يمكنني الآن الانضمام هذه الجداول؟
وبالتالي فإن جمال بعد أن اختار قيم معرف بهذه الطريقة هو
أنه إذا كنت تفكر في أخذ الجدول بالطبع
والمدرب جدول ثم إدراج
في ما بين هذين في حياتك عقول مدرس المقرر
الجدول يمكنك النوع من الخط يصل كل من الأعمدة معرف هذه
بحيث يمكنك دمجها عمود واحد الهائل الذي لديه كل
من المعلومات نحن نهتم.
بناء جملة SQL لهذا ليست واضحة بالضرورة،
ولكن دعونا نرى ما اذا كنا نستطيع ان نفعل ذلك.
لذلك حدد نجم من الدورات،
وهناك طريقة قليلة كما يمكننا أن نفعل هذا.
انا ذاهب الى هاهنا فقط ل نوع من الأشياء شكل لطيف،
ولكن هذا السهم هو مجرد أعراض الأداة جانب العميل،
أنه ليس لديه ما تفعل مع SQL نفسها.
لذلك حدد نجم من الدورات.
انا ذاهب للانضمام الآن جدول الدورات
على الطاولة بالطبع المدرب.
كيف؟ على حقل يسمى courses.id يعادل بالطبع
يؤكد المدرب دوت ما هو اسم
من الحقل المقابل هنا أريد أن زوجين.
انها ليست الهوية.
هو - ما، آسف؟
>> رقم المساق.
حسنا، اسمحوا لي أن التصغير.
ولكن أود أن أغتنم هذه خطوة واحدة أخرى.
لقد فعلت هذا الآن الطاولة وهذا واحد.
الآن أريد أن سحب هذا الرجل في كذلك.
لذا، اسمحوا لي مزيد انضمام هذا الشيء كله
على المعلم الجدول على ماذا؟
بالطبع تسطير instructor.instructor معرف
تعادل instructors.id.
ولذا فإننا يمكن ان يكون مكتوب هذا الاستعلام في عدد قليل من الطرق.
الترتيب الذي فعلت هذا ليس كل ما مهم.
أنا مجرد نوع من فعل ذلك في ذهني من اليسار إلى اليمين.
ونحن قد فعلت هذا في عدد قليل من الطرق المختلفة
ولكن إذا أنا الآن لدينا القولون شبه وهاهنا،
إشعار أعود جديدة جدول مؤقت، مجموعة نتائج
إذا جاز التعبير في الكلام قاعدة البيانات.
وماذا لدي في هذا الشيء؟
لدي على الهوية، واسم، وآخر ID، الذي هو نوع من الخلط
بالنسبة لي في الوقت الحالي، هوية بطبيعة الحال،
معرف مدرب، الهوية، والاسم.
لذلك، في نهاية اليوم لدينا بيانات الآن.
أستطيع أن أرى أن تدرس CS1 بواسطة ايتنر، تدرس CS51
بواسطة لايتنر وTOV، و يتم تدريسها من قبل CS50 مالان.
ولكن أنا عصبية قليلا حول هذا الغموض لقد خلق.
ما هو الغموض أنا في اشارة الى؟
نعم؟
[ملاحظة غير مسموع]
هناك أعمدة ID الثلاثة.
حتى نتمكن من إصلاح هذا الواقع و ونحن في طريقنا إلى الذهاب فعلا
تأجيل لإطارنا في نهاية المطاف لمساعدتنا مع هذا،
ولكن اتضح أن هناك كلمة رئيسية في SQL دعا S،
حيث يمكنك تحديد الاسم المستعار، وهو الاسم الجديد لحقل
حتى نتمكن من تجنب هذا الغموض تماما.
ولكن أدركت أنه إذا لم نفعل ذلك تصدي لها بطريقة أو بأخرى كما هو الحال مع
تلك الكلمة الرئيسية أو إطار،
هناك يحتمل هذا الغموض إذا حاولت
للوصول إلى حقل معرف لأن من الواضح أن هناك منها
مع أسماء مكررة هناك.
لذلك هذا هو الانضمام وأعتقد في عين عقلك أفضل وسيلة
للتفكير في الامر حقا هو اتخاذ الجدولين،
خط لهم في بالطريقة التي تريدها.
وهذا هو ما يسمى صلة داخلية بالمعنى
أننا الجمع الجداول هنا.
وهناك أنواع أخرى من ينضم أننا قد تواجهها
مع مرور الوقت مثل صلات خارجية،
ولكن بالنسبة للجزء الأكبر هذا هو على الارجح الاكثر شيوعا
لإعادة بناء البيانات.
ما قمنا به الآن عموما ما يسمى
تطبيع البيانات الخاصة بك، بحيث ليس هناك ازدواجية في أي مكان
في الجداول الخاصة بك.
والازدواجية، وأود أن قد يعني أن النهج الأول.
إذا كنا قد ذكرت لايتنر وTOV في أماكن متعددة
في قاعدة البيانات الخاصة بك، وهذا ليس عموما أفضل قرار
خصوصا إذا كان اسم قوتهم تغيير العمل الإضافي أو في حالة
الزواج، اسم عائلة القوة تغيير نفسها تريد واحد فقط
المكان الكنسي لبعض قيمة البيانات مثل الاسم.
حسنا.
لذلك، إلى خلاصة، لقد كان لدينا قليل من القرارات لجعل التصميم
وأهمها ربما خفضت إلى بعض
من هذه الخيارات من الفهارس.
ولكن اسمحوا لي أن أشير الشيء الآخر كذلك.
إذا أعود إلى بريس،
ميزة واحدة قد لا يكون ل لقد واجهت قبل غير
ما يلي.
اذا ذهبت الى دورة مدرب، أنا بالفعل لم تحدد أن بعض
هذه الأمور الفهارس.
ولكن اسمحوا لي أن انتقل إلى هيكل المفتاح بالطبع المدرب.
اسمحوا لي الآن انقر على فهارس وتلاحظ ما يلي.
لقد المحددة هنا أن هناك مفتاح أساسي
على عمود يسمى معرف.
هذا هو معقد بعض الشيء طريقة تحديد أصل
وهكذا دواليك أنها تشير إلى حجم الحقل بالبايت.
ولكن الآن لدي أيضا آخر الحقل، ID بطبيعة الحال، الذي هو -
رقم الدورة التي يتم مقدما وفريدة من نوعها، OK.
أنا فعلت هذا واحد في تقدم بالنسبة لنا.
لذلك، لماذا هذا - واسمحوا لي قطرة هذا من أجل المناقشة.
أوه، أنت تعرف ماذا فعلت؟
موافق. لذلك، في وقت سابق، واحدة من مخاطر استخدام أداة واجهة المستخدم الرسومية
مثل هذا، عندما كنا وخلق هذا الانضمام الطاولة،
الجدول مدرب بطبيعة الحال، أذكر أنني المحدد
الذي أريد فهرس على هذا المجال
وفهرس على هذا ميدان آخر.
الآثار الجانبية لل فحص كل من هذه الصناديق
على نفس الشاشة هو أن يستدل بريس عن ذلك،
الذي أريد وليس اثنين فهارس مستقلة،
أريد أن مؤشر الانضمام التي عموما مفيدة فقط
أو مفيدة للغاية عندما كنت البحث على حقل واحد لا
ولكن كل من هذه المجالات.
وهذا هو السبب كان لدينا فستؤدي لهم هناك
لذلك أنا أسقطته 'القضية التي لم يكن ما نويت.
بدلا من ذلك، انا ذاهب لإعادة هذا هنا.
انا ذاهب للذهاب إلى دورة ID
وتحت أكثر أنا فقط سأقول إضافة فهرس.
وانا ذاهب للذهاب تحت ID مدرب ويقول إضافة فهرس.
والآن إذا كنا انقر هنا لاحظ لدينا ثلاثة فهارس،
احد أساسي، وكما قلت يقصد واحد لكل
تلك المفاتيح الخارجية.
وأنا أسميها الخارجية بسبب ID بالطبع في هذه الخرائط الجدول
إلى الحقل الذي، لمجرد أن يكون مسح، في جدول آخر.
المفتاح الأساسي يسمى ID، في جدول يسمى الدورات و
ونفس الصفقة لواحدة أخرى.
ولكن الآن، هو اهتمام خدعة وتقنية حقا.
أنا فقط ذهبت إلى الأمام واسمحوا لي تفعل ذلك ببطء أكثر من ذلك بقليل.
في نفس الشاشة، لاحظ تقول الرأي العلاقة هنا.
أنا فوق هذا وإشعار أنا الآن الحصول على القيام ببعض القيود.
لذلك، واحدة من الإيجابيات أيضا
ليس فقط باستخدام المفهوم المفاتيح الخارجية والجداول الأخرى
مثل قمنا فقط على هو أنه من خلال تحديد فهرس
عليها هل يمكن أن يكون مساعدة قاعدة بيانات لك المزيد من
ضمان سلامة هذا الحقل.
على وجه التحديد، يمكنني الآن تحديد عبر هذا الانخفاض
أسفل أن الحقل معرف بالطبع
في الواقع هذا الجدول الخرائط إلى courses.id.
وبالمثل، مدرب تسطير معرف تعيينها إلى instructors.id.
الآن، لماذا هذا مفيد؟
كذلك، لاحظ، على الحق الجانب ما يبدو الآن.
يمكنني تعليم الآن قاعدة أنه إذا كان هنري
على سبيل المثال يتقاعد من أي وقت مضى ويختفي الصف له
من الجدول المعلم تماما مما يجري
حذف، استطيع من خلال هذا المتتالية نهج ضمان
أن أي من المقررات الدراسية يدرس هي لم يعد يرتبط معه.
يمكنني تعليم قاعدة البيانات لحذف الصفوف
في هذا الجدول يسمى الانضمام تلقائيا إذا هنري أو إذا كان أحد
دورات له يختفي.
الآن، لماذا هذا مقنعة؟
نعم؟
[ملاحظة غير مسموع]
أنك لا تملك إلا أن تفعل ذلك مرة واحدة وعلى المدى الطويل، أليس كذلك؟
فإنه من السهل جدا إذا نوع من الناس يأتون ويذهبون، والدورات تأتي
وتذهب، ويمكن أن قاعدة البيانات الخاصة بك مجرد الحصول على تناثرت مع دورات
ومع أعضاء هيئة التدريس التي لم تعد ذات الصلة لمجموعة البيانات.
ويبدأ البيانات الخاصة بك للحصول على فوضوي جدا وقذرة وقديمة،
وحتى هنا يمكننا فرز
من فرض بعض هذه القيود.
نعم؟
[ملاحظة غير مسموع]
كان يعرف عن طريق هذا.
هذا هو الشاشة حيث نحن تحديد الربط
بين المفتاح الخارجي والمفتاح الأساسي.
لذلك كل من التسمية الاتفاقيات أنا ألمح
لفي وقت سابق من الاتفاقيات فقط.
ليس هناك معنى الأصيل.
هذه هي الشاشة وهو أمر مفيد فقط
بعد مؤشرات على المحدد كل من هذه المجالات كما فعلنا.
ولهذا المنسدلة لدينا عدد قليل من الأشياء على سبيل المثال
إذا تم حذف بالطبع يمكنك الواقع أن منع الحذف
من الحدوث إذا كان هناك هو صف في هذا الجدول
بواسطة مجرد القول، تقييد.
وبعبارة أخرى هنري لا يمكن أن يتقاعد
حتى أننا فصل له من CS51 وCS1.
لذلك هذا شيء جيد.
ولكن يمكن أن يؤدي أخطاء في التعليمات البرمجية
إذا كنت لا نتوقع ذلك، أو أننا يمكن أن يكون لها شلال،
شلال مماثلة لمثل أوراق الأنماط المتتالية
والمتتالية شلال يعني أنه إذا كان -
إذا هنري يتقاعد ذلك - عن طريق الحصول على حذف
لذلك سوف التوالي له هنا الحصول على حذف.
لا عمل لا يعني شيئا أو فارغة هو نوع من مفيد إذا كنت النوع
من تريد بعض السجل التاريخي هنري بعد أن تدرس CS51،
ولكن أردت فقط أن الميدان ل أن تكون فارغة بحيث الصفوف هناك
ولكنها ليست أي لفترة أطول يرتبط معه.
لذلك فان هذه هي قوية جدا التقنيات التي يمكن
ويجب أن تستخدم حتى على الرغم ولا سيما في مصلحة
من يوفر لك من نفسك.
لذلك اسمحوا لي أن أذكر ل زوجين من التفاصيل النهائية هنا،
المكونات التي التي قد تكون مفيدة
كما نخطط لتصميم قاعدة البيانات.
لديك أيضا خيار أكثر من مشغل قاعدة بيانات
التي تستخدمها في التعليمات البرمجية.
إذا كنت على دراية من CS161 كنت قد -
أو حتى 61، وكنت قد عموما أن يكون على دراية أنظمة الملفات.
وهناك أشياء مثل، NTFS وHFS +
وX2FS4 [الصوتية] و 3 وهكذا دواليك.
هناك طرق مختلفة من تخزين البيانات على مكتب.
وبالمثل هناك طرق مختلفة لتخزين البيانات
في قاعدة بيانات بشكل افتراضي على الأقل في الأجهزة
مع أحدث إصدار من الخلية.
لقد تم استخدام محرك قاعدة بيانات تسمى، NoDB،
التي تدعم بعض الميزات لطيفة.
ولكن واحدا آخر شائع هو أيضا دعا MYISAM وأخرى
التي يمكن استخدامها هي الذاكرة، وهو ما يعني لا تضع أي شيء
على القرص، والحفاظ فقط أشياء في الذاكرة.
بالنسبة للجزء الأكبر وربما كنت لن تذهب الخطأ بدأت للتو
مع NoDB، ولكن عن أي مشاريع التي تميل إلى إشراك معدلات عالية
من الإدراج على سبيل المثال، مثل الكثير من قطع الأشجار السريعة،
مئات من الأشياء في الثانية أو آلاف من الأشياء.
في أي وقت لديك الكثير من الاشياء تسير
على في قاعدة البيانات ثم هذا النوع
قرارات أقل مستوى تبدأ على المشاركة.
ميزة النص الكامل ل المثال يعمل فقط في MYISAM
بحيث له ضمنا.
ولكن قد تذكرون هذا، دعونا على الأقل تحفيز لماذا نحن نهتم
حول NoDB على وجه الخصوص.
وشروط السباق عموما يشير إلى ماذا؟
كل الحق، وهذا هو إشارة إلى مثال بعض
من كنت قد سمعت في السنوات الماضية سواء 161 أو 50
حيث لديك في الحجرة، كل من تريد حقا الحليب،
واحد منكم يحصل على المنزل الأول يفتح الثلاجة وليس هناك حليب،
إغلاق الثلاجة سيرا على الأقدام عبر الشوارع لCVS والحصول على
في خط لشراء بعض الحليب.
وفي الوقت نفسه، الحجرة الخاصة بك يأتي إلى هنا.
وقالت انها أيضا يحب الحليب.
فتح الثلاجة و لا يدرك الحليب.
هنا ثم تذهب إلى تخزين، ربما CVS الأخرى.
سريع إلى الأمام بضع دقائق كنت أعود في وقت لاحق، والآن كل من
منكم قد اشترى الحليب.
واحد منهم هو ذاهب الآن أن يفسد لأنك لا
مثل الحليب وأن الكثير هذه مشكلة، أليس كذلك؟
لأن كل واحد منكما تفتيشها حالة بعض متغير
واتخاذ قرار يستند على أنه على الرغم من أن الدولة
هذا المتغير كان أساسا في عملية يتم تغييرها،
جميع سواء كان ذلك ببطء على مدى مقدار الوقت الذي يستغرقه
للحصول من وإلى CVS.
فما هو نوع من الغباء الحقيقي الحل العالم لهذه المشكلة؟
ترك مذكرة، أليس كذلك؟
حدث ذلك آخر مرة.
ترك مذكرة دائما أو اغلاقها الشيء حرفيا.
وأنا أقول قفل، ل إذا كنت لا تأخذ أو استغرق CS161،
قفل هو الأساسية الفكرة في هذا النوع من العالم.
لذلك يمكن أن تنشأ ظروف السباق أيضا في العالم قاعدة بيانات
وربما تذكرون ربما من CS50 تمويل إذا أخذت 50،
هذا الرمز أننا فعلا أعطيا يا رفاق في مواصفات
في ذلك الوقت لذلك بأن ما تتمتعون به وتسمى العملية حتى ذرية.
إذا أردت، في هذا حالة، وشراء حصة من الأسهم
وهذا المخزون لديها بعض رمز معين.
قلنا لكم لاستخدام رمز مثل هذا، وذلك لأن عن طريق هذه
على تحديث مفتاح مكرر لغوي، والتي بنيت
في الخلية كنت على نحو فعال به سواء في إدراج
أو في التحديث بعد القيام حدد لرؤية
إذا كان المخزون هو بالفعل هناك.
وبعبارة أخرى، فإن التناظرية في العالم من شراء الأسهم
من الحليب والثلاجة قد يكون، أولا،
قبل شراء حصة جوجل قد ترغب في تحديد
من قاعدة البيانات كل من أسهم جوجل التي تمتلك ديفيد
لمعرفة ما اذا كان يملك صفر أو أكثر.
بمجرد معرفة ما اذا كان يملك صفر أو أكثر لديك
لثم القيام بما يلي.
اما أن يكون للقيام إدراج
إذا كان سبب تملك الصفر ' ليس هناك صف ديفيد بعد،
أو ما عليك القيام به تحديثا إذا نظريا على الأقل تريد
أن يكون صف واحد لكل مستخدم.
هو اختيار المشكلة أن عدد الأسهم
ومن ثم تحديث أو يمكن أن تتم مقاطعة الإدراج
من قبل شخص آخر في آخر محطة الكمبيوتر يحاول شراء
أو بيع بعض ديفيد سهم من الأسهم سواء
لأغراض جيدة أو نوع من أغراض خبيثة.
انها مثل الذهاب الى المتجر عندما يحصل الحجرة الخاصة بك مرة أخرى
ويتحقق الدولة المتغير.
لذلك هذا النحو في ذلك الوقت الذي كان نوعا من المناسبة
لCS50، ويتجنب أن المشكلة تماما.
وأنه فقط يفعل كل ذلك سحر تأمين بالنسبة لك،
ولكن الآن مع هذه الأنواع مشاريع لهذه الدورة
والتي سوف الأرجح إشراك مجموعات البيانات أكثر تعقيدا،
لا يمكنك تحقيق دائما هذا atomicity.
كل شيء يحدث دفعة واحدة أو لا على الاطلاق
دون انقطاع لذلك بأناقة.
وحتى الخلية، وآخر محرك قاعدة البيانات،
الدعم الأشياء تسمى الأقفال،
حيث يمكنك أن تقول هذا القفل الجدول بحيث علاج واحد فقط
وعموما مستخدم واحد فقط يمكن مسها في أي نقطة في الوقت المناسب
لقراءة أو كتابة و ثم يمكنك فتحه.
هذا مثال واحد من من مراجع الخلية نفسها،
حيث إذا كان لديك مثل البنك الحساب الذي كنت تحاول
على اقتطاع أموال من ثم قم بإضافة المال ل.
قد ترغب في تأكد من أن كلا
من تلك الأمور معا
ذلك أنه لا يوجد أخطاء حسابية
وأي خسائر واحد المال، بطريقة أو بأخرى.
المشكلة مع أقفال وإن كان في قاعدة البيانات
أنه يعني عموما تم تأمين الجدول بأكمله،
وهو ما يعني إذا كان لديك مئة شخص يحاول
في القيام بأعمال تجارية مع البنك الذي تتعامل معه على الإنترنت على نفس المبلغ
من مرة واحدة فقط من منهم يمكن أن تذهب في كل مرة.
وهو غبي، لا سيما على خوادم في الوقت الحاضر
التي لديها ثمانية بالطبع، 16 بالطبع، تحتوي على كمية ضخمة
من الذاكرة، وليس هناك سبب لتسلسل جميع
من المعاملات الخاصة بك إذا كانت تلك عملاء تسير فقط
للتفاعل مع صفوف خاصة بهم.
حتى NoDB يسمح لك أن تفعل الأشياء أكثر ذكاء
وهذه عموما سوف يكون اتخاذ نهج لكم في التعليمات البرمجية،
كما يمكنك استخدام شيء دعا الصفقة.
والقيام بذلك بشكل عام في التعليمات البرمجية PHP،
كود روبي، بايثون، أيا كان.
لكن رمز SQL هذا تستخدم في نهاية المطاف هو هذا،
عادة.
بدء المعاملة ثم ل تحديد اثنين أو أكثر من الاستعلامات
الذي تريد تنفيذ تماما
دون انقطاع أو لا على الاطلاق.
يمكن أن يكون هناك حتى بعض حدد البيانات في
أو حذف بعض أو التحديثات.
ولكن الشيء الجميل هو أن وسوف تكون قاعدة بيانات ذكية بما فيه الكفاية
للتأكد من أنه لن يؤدي إلا إلى قفل الصفوف كنها في الواقع
تشارك في هذه التحديثات أو يختار أو الحذف.
حتى إذا كنت حصلت على آلاف من الصفوف وكنت لمس ثلاثة فقط
منهم، إلا أن مجموعة فرعية من الجدول سوف يكون مؤمنا
وهو ما يعني تلك 99 أخرى يمكن للعملاء لمس الصفوف الخاصة بهم
دون تسلسل وتباطأت بفعل لك.
وفي الوقت نفسه، وهذا هو اجمل الجانب على المعاملات.
أنها معاملات في الشعور مثل 161 على نظام الملفات،
انهم المعاملات
مما يعني أنه يمكنك لفة اعادتهم، يمكنك التراجع عنها.
هذا هو مثل الأمر أو السيطرة F قواعد البيانات.
إذا كنت اكتشاف جزء الطريق من خلال جميع
من مختلف عملية البيانات الخاصة بك، تبادل لاطلاق النار، هناك خطأ.
تقوم بتنفيذ حرفيا مختلفة لفة الاستعلام SQL الظهر
وجميع هذه الاتجاه - كل من العبارات كنت أعدم
بعد ان بداية الصفقة تختفي
كما لو أنها لم تحدث أبدا،
وهو مثير للدهشة شيء قوي.
وهذه هي أنواع الأمور بالتأكيد نحن في 50 نوعا
من اكتساح تحت البساط و كنت مجرد نوع من تحمل
ان كل شىء سوف يكون جيدا.
ولكن بمجرد أن تبدأ التفكير في مشاريع حقيقية
والمستخدمين الحقيقية و سلامة قاعدة البيانات الخاصة بك،
هذه هي أنواع من قرارات التصميم
التي ستكون مهمة.