โปรแกรมเมอร์ที่มีประสบการณ์ควรรู้แบบสอบถามฐานข้อมูลหรือไม่ [ปิด]


35

มีโปรแกรมเมอร์จำนวนมากที่ยังเป็นผู้เชี่ยวชาญในการเขียน Query และการออกแบบฐานข้อมูล

นี่ควรเป็นข้อกำหนดหลักสำหรับการเป็นโปรแกรมเมอร์ผู้เชี่ยวชาญหรือวิศวกรซอฟต์แวร์หรือไม่?

แม้ว่าจะมีความคล้ายคลึงกันมากมายในวิธีการพัฒนาแบบสอบถามและรหัส แต่ความคิดเห็นส่วนตัวของฉันคือแบบสอบถามดูเหมือนจะมีโครงสร้างที่แตกต่างจากรหัสและอาจเป็นเรื่องยากสำหรับท่านอาจารย์ทั้งคู่ในเวลาเดียวกันเนื่องจากวิธีการที่แตกต่างกัน


2
คุณหมายถึงอะไรโดย "โครงสร้าง"? หากคุณกำลังพูดถึงซีแมนทิกส์มากกว่าการเข้าใจซีแมนทิคแบบใหม่ไม่ควรเป็นปัญหาสำหรับ " ผู้เชี่ยวชาญ " ตามคำจำกัดความ OTOH มีนักพัฒนาเพียงไม่กี่คนเท่านั้นที่สัมผัสกับฐานข้อมูลและภาษาคิวรีส่วนที่เหลือของเราไม่สนใจเลย
SK-logic

3
ฉันคิดว่านี่เป็นข้อผิดพลาดที่ผิดพลาด: "มีโปรแกรมเมอร์จำนวนมากที่ยังเป็นผู้เชี่ยวชาญในการเขียน Query และการออกแบบฐานข้อมูล" มีโปรแกรมเมอร์ค่อนข้างน้อยที่เชี่ยวชาญในสิ่งเหล่านี้: DBA! = SE
แอชลีย์

1
มันยากแค่ไหนที่จะเขียนแบบสอบถามฐานข้อมูล?
Captain Sensible

@CaptainShakespeare จริงๆแล้วมันจะค่อนข้างยากเมื่อคุณได้รับการดำเนินการ CRUD ที่ผ่านมา Ty ทำรายงานที่ซับซ้อนบางครั้ง แล้วดูที่แบบสอบถามการปรับประสิทธิภาพ
HLGEM

คำตอบ:


69

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

ดังนั้นหากฉันพบโปรแกรมเมอร์ที่ไม่รู้วิธีเขียนแบบสอบถามฐานข้อมูลฉันคาดหวังหนึ่งในสองสิ่งนี้:

  1. พวกเขามักจะไม่มีประสบการณ์
  2. พวกเขามีความเชี่ยวชาญสูงในสาขาอื่น (เช่นระบบฝังตัว) และไม่จำเป็นต้องเรียนรู้

การสืบค้นฐานข้อมูลนั้นแตกต่างจากภาษาการเขียนโปรแกรมมาตรฐานมากขึ้น พวกเขาเกี่ยวกับพีชคณิตและตั้งใจที่จะทำงานกับข้อมูลเชิงสัมพันธ์ในขณะที่ C # หรือ Java มีความจำเป็นและดำเนินการเกี่ยวกับดิสก์หน่วยความจำอินพุตของผู้ใช้ ฯลฯ แม้แต่ภาษาที่ใช้งานได้เช่น LISP หรือ Haskell ที่มีพีชคณิตมากกว่า

แก้ไข:ตามที่ได้รับการชี้ให้เห็นในความคิดเห็นของฉันและคนอื่น ๆ มีเหตุผลที่ถูกต้องว่าทำไมนักพัฒนาที่มีประสบการณ์อาจไม่ทราบแบบสอบถามฐานข้อมูลที่ดี:

  • ทีมของพวกเขาใช้ ORM / NoSQL
  • ทีมของพวกเขามีโปรแกรมเมอร์ DB
  • ความซับซ้อนของแอปพลิเคชั่นอยู่ในตรรกะทางธุรกิจและการสืบค้น DB นั้นเล็กน้อย
  • ทีมของพวกเขาแบ่งปันงานดังกล่าวซึ่งโปรแกรมเมอร์บางคนไม่ได้เขียนแบบสอบถาม

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

โดยสรุปการพัฒนาที่มีประสบการณ์มากที่สุดควรรู้สืบค้นฐานข้อมูล


1
ดังนั้นถ้ามีคนทำโครงการที่ไม่สำคัญที่ใช้ฐานข้อมูลเขาคาดว่าจะคุ้นเคยกับคำสั่งใช่ไหม
Shamim Hafiz

3
@ Shamim ฉันคาดหวังว่าบุคคลนี้จะมีประสบการณ์ในระดับปานกลางกับข้อความค้นหาเว้นแต่บุคคลนี้จะเป็นรุ่นน้องหรือระดับเริ่มต้น บางทีคนนี้อาจมีประสบการณ์เพียงไม่กี่ปีและได้รับการปกป้องจากทีมที่มีความเชี่ยวชาญสูง?
maple_shaft

12
@ ธรรมฉันอาจคาดหวังเช่นนั้น พวกเขายังคงสามารถเป็นโปรแกรมเมอร์ที่ดี คำถามเช่นนี้ตอบยากมากเพราะมันมีข้อแม้มากมาย: บางทีทีมอาจมีโปรแกรมเมอร์ดีบี บางทีความไม่เป็นทางการของแอพพลิเคชั่นอาจอยู่ในตรรกะทางธุรกิจและการสืบค้นฐานข้อมูลอาจไม่สำคัญ บางทีพวกเขาอาจแบ่งงานที่โปรแกรมเมอร์ของคุณไม่ทำงานกับแบบสอบถาม ฯลฯ
Matthew Rodatus

4
ทีมพัฒนาของฉันทุ่มเทโปรแกรมเมอร์ PL / SQL เป็นส่วนหนึ่งของโครงการ ดังนั้นในขณะที่โปรแกรมเมอร์. Net สามารถทำแบบสอบถามง่ายๆพวกเขาอยู่ที่นั่นเพื่อตรวจสอบและพัฒนาแบบสอบถามที่ซับซ้อนมากขึ้น ยิ่งกว่านั้นด้วยการเพิ่มจำนวนของ ORM (และ NOSQL) ทำไมคุณถึงคิดว่านักพัฒนาที่ไม่ใช่ SQL จะต้องรู้คำสั่งที่ซับซ้อน
softveda

2
@ Matthew Rodatus: ฉันเคยทำงานในสถานที่ที่มีห้องสมุดที่จัดการกับการสืบค้นดังนั้นในทางทฤษฎีมันจะเป็นไปได้ที่จะทำงานที่นั่นโดยไม่เข้าใจ SQL แบบง่าย ๆ ฉันเชื่อว่านักพัฒนาซอฟต์แวร์ทุกคนมีความสามารถในทางปฏิบัติ
David Thornley

23

วิศวกรซอฟต์แวร์ใด ๆ ควรมีความเข้าใจพื้นฐานของฐานข้อมูลและวิธีการจัดเก็บและดึงข้อมูลโดยใช้ SQL อย่างน้อยถึงระดับที่พวกเขามีความเข้าใจในสิ่งที่สิ่งนี้สามารถนำมาใช้สำหรับ (และโดยที่ฉันจะรวมถึงความเข้าใจของคีย์ ขั้นตอนการจัดเก็บและทริกเกอร์)

ไม่ใช่วิศวกรซอฟต์แวร์ทุกคนที่จะต้องมีความเชี่ยวชาญและระดับความเชี่ยวชาญที่ต้องการนั้นขึ้นอยู่กับประเภทของซอฟต์แวร์ที่พวกเขามุ่งเน้น ซอฟต์แวร์ฝังตัวไดรเวอร์ฮาร์ดแวร์และระบบปฏิบัติการไม่ค่อยใช้ SQL แต่ซอฟต์แวร์แอปพลิเคชัน (ไม่ว่าจะเป็นเว็บหรือเดสก์ท็อปหรือบริการ / daemon) ใช้ฐานข้อมูลตลอดเวลา


1
โชคดีที่ทุกวันนี้ก็สามารถใช้งานแอพพลิเคชั่นได้โดยไม่ต้องมี RDBMS เลย งานส่วนใหญ่ไม่ต้องการหรือไม่สามารถแมปกับโมเดลเชิงสัมพันธ์ได้อย่างเพียงพอ มีตัวเลือกการจัดเก็บข้อมูลไม่สัมพันธ์มากมาย
SK-logic

8
สรุปความคิดเห็นของฉันเช่นกัน ผู้เชี่ยวชาญ? เลขที่ความรู้? ใช่.
Wayne Molina

2
@ SK-logic, ตัวเลือกประเภทใดที่คุณรู้สึกว่าสร้างฐานข้อมูลเชิงสัมพันธ์ที่ไม่เกี่ยวข้อง? คลังข้อมูลมีความเชี่ยวชาญเกินกว่าที่การวิเคราะห์จะมีประโยชน์ในระบบการทำธุรกรรม และอย่าให้ฉันเริ่มต้นกับทุกสิ่งที่ผิดกับ OODBMS
maple_shaft

1
@maple_shaft มีโซลูชั่นสตอเรจที่เน้นโดเมนเป็นจำนวนมาก RDBMS พยายามทั่วไปและล้มเหลวอย่างรุนแรง ในบางกรณีแม้แต่ DBMS เชิงลำดับชั้นแบบโบราณก็ดีกว่าความสัมพันธ์
SK-logic

6
ซอฟต์แวร์เดสก์ท็อปบางตัวไม่ใช้ฐานข้อมูลดังนั้นโปรดระวังเมื่อคุณบอกว่ามันเกิดขึ้นตลอดเวลา
อดัมเลียร์

18

มีบางพื้นที่ของความเชี่ยวชาญ (เช่นระบบฝังตัว) ซึ่งไม่จำเป็นต้องมีความรู้เกี่ยวกับฐานข้อมูล แต่แอปพลิเคชันทางธุรกิจส่วนใหญ่ใช้ฐานข้อมูลบางประเภทและหากคุณไม่เข้าใจวิธีการใช้อย่างถูกต้องคุณสามารถสร้างระเบียบประสิทธิภาพที่ยากต่อการแก้ไข การปรับโครงสร้างฐานข้อมูลอาจเป็นกระบวนการที่ซับซ้อนและยากลำบากและหลายแห่งเลือกที่จะไม่แก้ไขปัญหาเชิงโครงสร้างเนื่องจากปัญหานั้นและขุดลึกลงไปในหลุม หากคุณมีความรู้เกี่ยวกับฐานข้อมูลการออกแบบนั้นง่ายกว่าและมีแนวโน้มที่จะทำงานได้ดีเมื่อเวลาผ่านไป

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

ถ้าฉันมีโครงการที่มีแบ็กเอนด์ฐานข้อมูลผู้เชี่ยวชาญด้านฐานข้อมูลจะเป็นผู้พัฒนารายที่สองที่ฉันจะจ้าง (หลังจากผู้พัฒนาแอปพลิเคชันเริ่มต้น) ฐานข้อมูลโดยทั่วไปจะไม่ได้รับการทิ้งขยะข้อมูลนั้นจะยังคงอยู่ในรูปแบบเดียวกันในอีก 20 ปีต่อมาและจ่ายให้กับผู้เชี่ยวชาญในระยะเริ่มต้น

โครงการมักประสบปัญหาเพราะพวกเขาไม่ได้จ้างคนเหล่านี้จนกว่าฐานข้อมูลจะมีระเบียน 100,000,000 รายการและทำงานช้า หรือพวกเขาตำหนิเครื่องมือสำหรับการไม่ดี (ไม่มี SQL Server ไม่ช้าถ้าคุณออกแบบอย่างถูกต้อง) ไม่ใช่ความสามารถในการออกแบบของพวกเขา


4
+1 สำหรับการกล่าวถึงว่าสถานะของ ORM ไม่ได้แทนที่ความต้องการที่จะรู้ SQL (หรือปัจจัยพื้นฐานในประเภทของฐานข้อมูลที่คุณใช้อยู่)
RHSeeger

4
+1 และฉันหวังว่าจะให้คุณเพิ่มอีก 100 รายการ! ฉันรู้ว่า Corellation! = สาเหตุ แต่มันชัดเจนกว่าสำหรับฉันว่าผู้พัฒนาแอปพลิเคชันที่มีประสิทธิภาพที่สุดที่ฉันเคยทำงานด้วยมีความเข้าใจอย่างถ่องแท้ถึงวิธีการเขียนแบบสอบถาม SELECT มาตรฐาน ฉันควรจะสามารถพัฒนารูปแบบข้อมูลและ "คำถาม" เกี่ยวกับข้อมูลให้กับนักพัฒนาที่ดีและในที่สุดบุคคลนั้นก็ควรจะสามารถเขียนแบบสอบถามที่ "ตอบ" คำถามของฉัน
maple_shaft

1
+1 เห็นด้วยทั้งหมด ฉันไม่ได้ซื้อคำอธิบายที่ว่า "เราใช้ ORM" หรือ "เรามีโปรแกรมเมอร์ที่อุทิศตนเพื่อสิ่งนั้น" หากมีคนมีประสบการณ์จริงพวกเขาจะได้รับบทบาทของนักพัฒนาฐานข้อมูลในจุดหนึ่ง นั่นคือสิ่งที่ประสบการณ์
GrandmasterB

15

คำตอบที่ถูกต้องทางการเมือง: ขึ้นอยู่กับ ความรู้เกี่ยวกับ SQL นั้นไม่มีค่าอะไรเลยหากนักพัฒนาไม่สามารถทำงานกับฐานข้อมูลเชิงสัมพันธ์ได้

ประการที่สองเมื่อมี DBA หรือนักเขียนแบบสอบถามแบบเต็มเวลา (ไม่ว่าชื่อจะเป็นอะไร) การทำความเข้าใจก็มีความสำคัญน้อยกว่าเช่นกัน

เป็นเรื่องสำคัญมากหากนักพัฒนาซอฟต์แวร์จำเป็นต้องเป็น jack-of-all-trading และมีความต้องการในโครงการของเขาสำหรับการใช้ฐานข้อมูลเชิงสัมพันธ์ (ตัวอย่างเช่นในเว็บแอปพลิเคชันที่ล้าสมัยหรือเชื่อมต่อกับฐานข้อมูลที่มีอยู่)

ความคิดเห็นส่วนตัวของฉัน: ไม่นักพัฒนาซอฟต์แวร์ที่มีประสบการณ์ควรจะสามารถเรียนรู้ทักษะใหม่ (เช่น SQL) หากและเมื่อพวกเขาต้องการไม่ใช่ 'โดยค่าเริ่มต้น' ความยืดหยุ่นและความสามารถในการเรียนรู้และเข้าใจคือสิ่งที่แตกต่างจากนักพัฒนาที่ดีจากโอเค กฎ 'ค้อนทองคำ' ก็มีผลเช่นกัน - ถ้าคุณมีนักพัฒนาที่มีความรู้เกี่ยวกับ SQL อย่างกว้างขวางเป็นไปได้มากว่าผู้พัฒนารายนี้จะดึงเครื่องมือที่เขารู้จักดีที่สุด - ฐานข้อมูลเชิงสัมพันธ์ - เพื่อพยายามแก้ไขปัญหาทุกข้อ เพื่อเป็นทางออกที่ดีที่สุด แน่นอนว่าสิ่งนี้ใช้ได้กับผู้สนับสนุน NoSQL,;)

การเลือกเครื่องมือที่เหมาะสมสำหรับงานที่ถูกต้องคือสิ่งที่โปรแกรมเมอร์ผู้มีประสบการณ์ควรรู้


ฐานข้อมูล NoSQL จะไม่ประมวลผลข้อมูลมากกว่าหรือเร็วกว่าฐานข้อมูลเชิงสัมพันธ์ ผมไม่ทราบว่าที่คุณได้ยินมาว่า แต่มันโจ๋งครึ่มอันตรายที่ไม่ถูกต้อง
Aaronaught

@Aaronaught - แก้ไขแล้วขอบคุณสำหรับการคาดเดาล่วงหน้าของฉัน :)
คธูลู

7

ลองอ่านวิกิพีเดียเกี่ยวกับการเขียนโปรแกรมคอมพิวเตอร์:

การเขียนโปรแกรมคอมพิวเตอร์ (มักย่อมาจากการเขียนโปรแกรมหรือการเข้ารหัส) เป็นกระบวนการของการออกแบบการเขียนการทดสอบการดีบัก / การแก้ไขปัญหาและการบำรุงรักษาซอร์สโค้ดของโปรแกรมคอมพิวเตอร์ ซอร์สโค้ดนี้เขียนด้วยภาษาการเขียนโปรแกรม วัตถุประสงค์ของการเขียนโปรแกรมคือการสร้างโปรแกรมที่แสดงพฤติกรรมที่ต้องการ

แบบสอบถามฐานข้อมูลมีภาษาของตัวเองพวกเขาสามารถออกแบบทดสอบ debbuged และ mantained วัตถุประสงค์ของแบบสอบถามฐานข้อมูลคือการอนุญาตให้คุณรับข้อมูลที่คุณต้องการในแบบที่คุณต้องการ

ดังนั้นฉันคิดว่ามันคือการเขียนโปรแกรมแน่นอน


7

วิศวกรซอฟต์แวร์ที่ดีที่มีพื้นหลังในแอปพลิเคชันระดับองค์กรและธุรกิจ (EDIT: โดยเฉพาะในโครงการที่ใช้ RDBMS) ควรมีความรู้จากผู้เชี่ยวชาญในการเขียนแบบสอบถามฐานข้อมูลเชิงสัมพันธ์ในรูปแบบมาตรฐาน นอกจากนี้พวกเขาควรจะสามารถเข้าใจสคีมาที่ซับซ้อนและเสนอการออกแบบสคีมาที่ซับซ้อนอย่างน้อยปานกลาง

การออกแบบคีมาขั้นสูงหรือซับซ้อนมากควรเป็นขอบเขตของตัวสร้างข้อมูลหรือสถาปนิกที่ใช้งานได้

นี่ไม่ได้หมายความว่า Database โปรแกรมเมอร์ไม่มีสถานที่เช่นกัน ขั้นตอนการจัดเก็บที่ซับซ้อนคำสั่งที่ซับซ้อนและมีประสิทธิภาพและการออกแบบซอฟต์แวร์ระดับฐานข้อมูลและสถาปัตยกรรมที่เน้นเครื่องมือที่ไม่ซ้ำใครและข้อเสนอของผู้จำหน่ายฐานข้อมูลเดียว (เช่น Oracle, MySQL, SQLServer และอื่น ๆ ) ควรเป็นซอฟต์แวร์ที่ดีที่สุด วิศวกรที่มีประสบการณ์กับข้อเสนอพิเศษและซับซ้อนเหล่านี้

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


2
-1: ไม่เห็นด้วยอย่างยิ่งที่วิศวกรซอฟต์แวร์ "ดี" ควรเป็นผู้เชี่ยวชาญในการสืบค้นฐานข้อมูลเชิงสัมพันธ์
John Saunders

3
คุณจะยังไม่เห็นด้วยไหมถ้าฉันบอกว่าวิศวกรซอฟต์แวร์แอพพลิเคชั่นเอ็นเตอร์ไพรส์หรือธุรกิจที่ดี (ต่างจากระบบสมองกลฝังตัว ฯลฯ ... ) และถ้าฉันบอกว่าบุคคลนี้ควรเป็นผู้เชี่ยวชาญในการสืบค้นฐานข้อมูลเชิงสัมพันธ์ STANDARD เฉพาะเช่นแบบสอบถามวิเคราะห์และชอบ)? ความเข้าใจอย่างถี่ถ้วนเกี่ยวกับคำสั่ง SQL SELECT, การรวมทุกชนิด, ยูเนี่ยน, ปริภูมิและการผสาน, มุมมองแบบอินไลน์, เงื่อนไข, การเรียงลำดับและการจัดกลุ่มชุดผลลัพธ์ควรมีความเข้าใจอย่างถี่ถ้วนและแสดงให้เห็นโดยวิศวกรซอฟต์แวร์
maple_shaft

4
Meh ฉันทำงานกับ บริษัท ซอฟต์แวร์ขนาดใหญ่และเราไม่จัดการกับ RDBMS ใด ๆ งานล่าสุดของฉันในการพัฒนาซอฟต์แวร์เดสก์ท็อปก็ไม่จำเป็นต้องใช้ SQL ฉันไม่แน่ใจว่าคุณกำหนดแอพพลิเคชั่นระดับองค์กรและธุรกิจได้อย่างไร แต่สำหรับฉันแล้วมุมมองของคุณในเรื่องต่าง ๆ นั้นแคบไปหน่อย
อดัมเลียร์

2
ฉันยืนตามสิ่งที่ฉันพูด ในทางทฤษฎีถ้าแอปพลิเคชันนั้นมีการจัดระดับและส่วนประกอบได้ดีแล้วก็ไม่จำเป็นต้องมี แต่ในประสบการณ์การทำงานระดับมืออาชีพทั้งหมดของฉันทีมของฉันและฉันจะได้รับการจมถ้าเราไม่ใช่ผู้เชี่ยวชาญที่ SQL บางทีฉันอาจล้าสมัยหรือมีโชคในอาชีพของฉัน?
maple_shaft

3
@maple_shaft ใช่ไม่ใช่ว่าแอปพลิเคชันที่ฉันเคยทำงานนั้นมีส่วนประกอบเพียงพอแล้ว เป็นเพราะพวกเขาไม่ได้ใช้ RDBMS เป็นระยะเวลา ฉันคิดว่าเขตข้อมูลอื่น ประเด็นคือคุณไม่สามารถพูดได้ว่านักพัฒนาธุรกิจ / องค์กรทุกคนต้องเก่งใน SQL มันไม่จริงเลย ทำตัวให้ดีถ้าคุณใช้มัน ไม่ต้องกังวลมากเกินไปหากคุณไม่ต้องการจนกว่าคุณจะต้องการมันเช่นเดียวกับภาษาหรือเทคโนโลยีอื่น ๆ
อดัมเลียร์

6

คนอื่น ๆ ได้ตอบคำถามของคุณเกี่ยวกับการสืบค้นฐานข้อมูลแล้ว

การออกแบบฐานข้อมูลเป็นการออกแบบเฉพาะประเภท ไม่ใช่เรื่องยากที่จะเรียนรู้ แต่ผู้ออกแบบฐานข้อมูลทั่วไปไม่ได้รับโอกาสมากมายในการออกแบบฐานข้อมูล

สถานที่ที่ฉันทำงานอยู่ตอนนี้มีการออกแบบฐานข้อมูลแบบเดียวกับที่มีในปี 1970 เราได้ย้ายฐานข้อมูลจาก IDMS ไปเป็น DB2 แต่เป็นการออกแบบฐานข้อมูลเครือข่ายเดียวกัน ฉันมีโอกาสสร้างตาราง DB2 ใหม่ 5 ตารางใน 9 ปีที่ฉันทำงานที่นี่

ฉันสงสัยว่ามีสถานที่ทำงานน้อยมากที่มีผู้ออกแบบฐานข้อมูลเฉพาะ ดังนั้นฉันจึงสรุปได้ว่าการออกแบบฐานข้อมูลถือเป็นส่วนหนึ่งของละครของนักวิเคราะห์อาวุโส


5

ฉันค่อนข้างประหลาดใจตรงไปตรงมาที่พวกเราหลายคนคิดว่าการพัฒนาทุกรอบฐานข้อมูลและฐานข้อมูล SQL ที่

คนอื่น ๆ ได้กล่าวถึงหลาย ๆ วิธีที่เราสามารถหลีกเลี่ยง nitty-gritty ของ SQL ในงานของเราได้แม้ในขณะที่เรากำลังทำงาน (โดยอ้อม) กับฐานข้อมูล แต่สิ่งที่เกี่ยวกับนักพัฒนาทั้งหมดที่เขียนเฟิร์มแวร์สำหรับผลิตภัณฑ์ไฟฟ้า 101 รายการ มี? แล้วผู้ชายที่เชี่ยวชาญเรื่องการติดตามเรียลไทม์ล่ะ?

ฉันขอแนะนำว่านักพัฒนาส่วนใหญ่ในปัจจุบันจะมีทักษะ SQL ในระดับที่แตกต่างกันไป แต่มันก็ยังห่างไกลจากความสามารถของบารอมิเตอร์


5

ฉันคิดว่าคุณประเมินค่าความสำคัญของฐานข้อมูลในซอฟต์แวร์มากเกินไป

แอปพลิเคชั่นหลายประเภทไม่ได้เป็นฐานข้อมูล

เราต้องการ DBMS ในโปรแกรมประมวลผลคำและโปรแกรมแก้ไขรูปภาพหรือไม่? แล้วระบบรู้จำเสียงพูดและการมองเห็นด้วยคอมพิวเตอร์จะมีการสืบค้นฐานข้อมูลมากมาย

แล้วเครื่องมือตัดต่อวิดีโอเชิงเส้นและเอ็นจิ้นวิดีโอเกมแบบฟิสิกส์ล่ะ


5

ฉันคาดหวังว่าผู้พัฒนาทั่วไปจะมีความรู้เกี่ยวกับเทคโนโลยีฐานข้อมูลอย่างน้อย (สัมพันธ์หรืออย่างอื่น) และสามารถพูดคุยข้อดีข้อเสียของการใช้พวกเขา มิฉะนั้นฉันจะกลัวสิ่งที่พวกเขารู้ว่าจะทำอย่างไรข้อมูลสิ่งที่เป็นไฟล์แบน


4

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

อย่างไรก็ตามหากโปรแกรมเมอร์นี้สามารถเขียนแบบสอบถามชนิด "select * from tblxxxx" ได้ฉันจะไม่ถือว่าโปรแกรมเมอร์นี้เป็นผู้เชี่ยวชาญ ในทำนองเดียวกันหากฐานข้อมูลที่ออกแบบโดยโปรแกรมเมอร์นี้วางความสัมพันธ์แบบหนึ่งต่อหลายคนลงในตารางเดียวแทนที่จะเป็นสองตารางฉันจะไม่ถือว่าโปรแกรมเมอร์นี้เป็นผู้เชี่ยวชาญ

นี่คือวิธีที่ฉันอธิบายสิ่งนี้กับผู้คนที่ไม่ใช่ฝ่ายไอที ผู้เชี่ยวชาญด้านไอทีมีความเชี่ยวชาญในด้านต่าง ๆ เช่นเดียวกับช่างไม้ช่างไฟฟ้าและช่างประปาในสาขาที่มีความเคารพ พวกเขามีแนวโน้มที่จะซ้อนทับทักษะบางอย่าง แต่ไม่ใช่ผู้เชี่ยวชาญในทุกด้าน ช่างไฟฟ้าสามารถทำงานช่างไม้อย่างง่ายได้ด้วยความมั่นใจ แต่จะไม่เป็นลางดีพยายามจัดการโครงสร้างที่ซับซ้อน

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


3

มองไปรอบ ๆ ในแผนกของเรามันขึ้นอยู่กับ:

  • เราพัฒนาเดสก์ทอป / เว็บ / เซิร์ฟเวอร์ อย่างน้อยต้องมีการเขียนข้อความพื้นฐานถึงข้อความหยาบคายขั้นสูงขึ้นอยู่กับความสามารถพิเศษของพวกเขา สำหรับการเพิ่มประสิทธิภาพเรามีผู้ดูแลฐานข้อมูลเฉพาะสองสามคน
  • เราเขียนโปรแกรมฝังตัว ค่อนข้างน้อยไม่เคยผ่านมา "select * from mytable" อย่างไรก็ตามนั่นก็เปลี่ยนไปในช่วงสองสามเดือนที่ผ่านมานี้ด้วยการแนะนำsqlliteให้กับโครงการของพวกเขา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.