คู่มือเริ่มต้นสำหรับการออกแบบฐานข้อมูล SQL [ปิด]


127

คุณรู้จักแหล่งเรียนรู้วิธีการออกแบบโซลูชัน SQL หรือไม่?

นอกเหนือจากไวยากรณ์ภาษาพื้นฐานแล้วฉันกำลังมองหาสิ่งที่จะช่วยให้ฉันเข้าใจ:

  1. จะสร้างตารางอะไรและจะเชื่อมโยงอย่างไร
  2. วิธีออกแบบสำหรับเครื่องชั่งต่างๆ (แอปไคลเอนต์ขนาดเล็กไปจนถึงเว็บไซต์ขนาดใหญ่)
  3. วิธีการเขียนแบบสอบถาม SQL ที่มีประสิทธิภาพ / มีประสิทธิภาพ / สง่างาม

คำตอบ:


60

ฉันเริ่มต้นด้วยหนังสือเล่มนี้: Relational Database Design Clearly Explained (The Morgan Kaufmann Series in Data Management Systems) (Paperback)โดย Jan L. Harrington และพบว่ามันชัดเจนและเป็นประโยชน์มาก

และเมื่อคุณเร่งความเร็วสิ่งนี้ก็ดีเช่นกันระบบฐานข้อมูล: แนวทางปฏิบัติในการออกแบบการใช้งานและการจัดการ (ชุดวิทยาการคอมพิวเตอร์นานาชาติ) (ปกอ่อน)

ฉันคิดว่าการออกแบบ SQL และฐานข้อมูลแตกต่างกัน (แต่เสริม) ทักษะ


1
การออกแบบฐานข้อมูลเริ่มต้น: จากมือใหม่สู่มืออาชีพ - Clare Churcher?
กระตือรือร้น

40

ฉันเริ่มต้นด้วยบทความนี้

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

ค่อนข้างกระชับเมื่อเทียบกับการอ่านหนังสือทั้งเล่มและอธิบายพื้นฐานของการออกแบบฐานข้อมูล (การทำให้เป็นมาตรฐาน, ประเภทของความสัมพันธ์) ได้เป็นอย่างดี


รักคู่มือนี้ขอบคุณ
MsO

ลิงก์ในคำตอบนี้ใช้งานไม่ได้อีกต่อไป
Grizzly Peak Software

1
ดูเหมือนว่าลิงก์จะใช้งานได้อีกครั้ง
user8576017

1
ลิงก์ไม่ทำงานอีกต่อไป
jat255


28

ประสบการณ์มีความสำคัญเป็นอย่างมาก แต่ในแง่ของการออกแบบโต๊ะคุณสามารถเรียนรู้ได้มากมายจากการทำงานของ ORM เช่น Hibernate และ Grails เพื่อดูว่าเหตุใดจึงทำสิ่งต่างๆ นอกจากนี้:

  1. แยกข้อมูลประเภทต่างๆ - อย่าจัดเก็บที่อยู่ในตารางคำสั่งซื้อของคุณลิงก์ไปยังที่อยู่ในตารางที่อยู่แยกต่างหากเป็นต้น

  2. โดยส่วนตัวแล้วฉันชอบมีคีย์จำนวนเต็มหรือตัวแทนแบบยาวในแต่ละตาราง (ซึ่งเก็บข้อมูลไม่ใช่ข้อมูลที่เชื่อมโยงตารางต่างๆเข้าด้วยกัน e, g., m: n ความสัมพันธ์) ซึ่งเป็นคีย์หลัก

  3. ฉันชอบที่จะมีคอลัมน์เวลาประทับที่สร้างและแก้ไข

  4. ตรวจสอบให้แน่ใจว่าทุกคอลัมน์ที่คุณทำ "โดยที่ column = val" ในแบบสอบถามใด ๆ มีดัชนี อาจจะไม่ใช่ดัชนีที่สมบูรณ์แบบที่สุดในโลกสำหรับประเภทข้อมูล แต่อย่างน้อยดัชนี

  5. ตั้งค่าคีย์ต่างประเทศของคุณ นอกจากนี้ยังตั้งค่า ON DELETE และ ON MODIFY กฎที่เกี่ยวข้องกับการเรียงซ้อนหรือตั้งค่า null ขึ้นอยู่กับโครงสร้างวัตถุของคุณ (ดังนั้นคุณจะต้องลบเพียงครั้งเดียวที่ 'หัว' ของโครงสร้างวัตถุของคุณและวัตถุย่อยทั้งหมดของวัตถุนั้นจะได้รับ ลบออกโดยอัตโนมัติ)

  6. หากคุณต้องการโมดูลาร์โค้ดของคุณคุณอาจต้องการโมดูลาร์สคีมา DB ของคุณเช่นนี่คือพื้นที่ "ลูกค้า" นี่คือพื้นที่ "คำสั่งซื้อ" และนี่คือพื้นที่ "ผลิตภัณฑ์" และใช้ตารางการเข้าร่วม / ลิงก์ ระหว่างพวกเขาแม้ว่าจะมีความสัมพันธ์แบบ 1: n และอาจจะทำซ้ำข้อมูลที่สำคัญ (เช่นชื่อผลิตภัณฑ์รหัสราคาซ้ำกันในตาราง order_details ของคุณ) อ่านข้อมูลเกี่ยวกับการทำให้เป็นมาตรฐาน

  7. คนอื่นจะแนะนำสิ่งที่ตรงกันข้ามกับบางส่วนหรือทั้งหมดข้างต้น: p - ไม่มีทางเดียวที่แท้จริงในการทำบางสิ่งเอ๊ะ!


1
ออมคะแนนของคุณทั้งหมดที่มีการป้องกันฐานข้อมูล
PerformanceDBA

1
การเพิ่มดัชนีไม่ได้หมายถึงความเร็วที่มากขึ้นเสมอไป บางครั้งพวกเขาทำให้การสืบค้นช้าลง ขึ้นอยู่กับแบบสอบถามจริงๆและคุณควรทดสอบexplain analyzeว่าดัชนีมีประโยชน์หรือไม่
ArashM



2

คำถามเหล่านี้เป็นคำถามที่ในความคิดของฉันต้องการความรู้ที่แตกต่างกันจากโดเมนต่างๆ

  1. คุณไม่สามารถรู้ล่วงหน้าว่าจะสร้างตาราง "ไหน" คุณต้องรู้ปัญหาที่คุณต้องแก้ไขและออกแบบสคีมาตามนั้น
  2. นี่เป็นการผสมผสานระหว่างการตัดสินใจในการออกแบบฐานข้อมูลและความสามารถแบบกำหนดเองของผู้จำหน่ายฐานข้อมูลของคุณ (กล่าวคือคุณควรตรวจสอบเอกสารของ (r) dbms ของคุณและในที่สุดก็เรียนรู้ "เคล็ดลับและเทคนิค" บางอย่างสำหรับการปรับขนาด) นอกจากนี้การกำหนดค่าฐานข้อมูลของคุณก็เป็นสิ่งสำคัญสำหรับ การปรับขนาด (การจำลองแบบการแบ่งข้อมูลและอื่น ๆ );
  3. อีกครั้งเกือบทุก rdbms มาพร้อมกับ "ภาษา" เฉพาะของภาษา SQL ดังนั้นหากคุณต้องการคำค้นหาที่มีประสิทธิภาพคุณต้องเรียนรู้ภาษาถิ่นนั้น ๆ --btw อาจเขียนข้อความค้นหาที่สวยงามซึ่งมีประสิทธิภาพก็เป็นเรื่องใหญ่เช่นกัน: ความสง่างามและประสิทธิภาพมักขัดแย้งกันในเป้าหมาย -

ที่กล่าวว่าบางทีคุณอาจต้องการอ่านหนังสือบางเล่มโดยส่วนตัวแล้วฉันเคยใช้หนังสือเล่มนี้ในหลักสูตรมหาวิทยาลัย datbase ของฉัน (และพบหนังสือเล่มหนึ่งที่ดี แต่ฉันไม่ได้อ่านหนังสือเล่มอื่นในสาขานี้ดังนั้นคำแนะนำของฉันคือตรวจสอบ หนังสือดีๆในการออกแบบฐานข้อมูล)


2

เป็นเวลานานแล้วที่ฉันอ่านมัน (ดังนั้นฉันไม่แน่ใจว่ามันยังเกี่ยวข้องมากแค่ไหน) แต่ความทรงจำของฉันคือหนังสือ SQL for Smarties ของ Joe Celko ให้ข้อมูลมากมายเกี่ยวกับการเขียนแบบสอบถามที่สวยงามมีประสิทธิภาพและมีประสิทธิภาพ .


ฉบับที่สี่ 2010 อาจเป็นปัจจุบัน
rleir

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