บิดาแห่งโครงการ SQL: สร้าง SQL และข้อมูลการจำลองอย่างรวดเร็ว ปรับปรุงประสิทธิภาพการพัฒนาและการทดสอบอย่างมาก!
โปรเจ็กต์ฟูลสแต็คส่วนหน้าและส่วนหลังโดยโปรแกรมเมอร์ Yupi
มันไม่ง่ายที่จะทำ โปรดอย่าใช้เพื่อการค้าหรือขายต่อ! - -
ประสบการณ์ออนไลน์: http://sqlfather.yupi.icu
วิดีโอสาธิต (บทช่วยสอนการใช้งาน): https://www.bilibili.com/video/BV1eP411N7B7/
หากคุณคิดว่าโครงการนี้มีประโยชน์ การให้เจ้าของ UP ติดตามและลิงก์ติดต่อกันสามลิงก์ถือเป็นการสนับสนุนที่ยิ่งใหญ่ที่สุด ขอขอบคุณ!
ที่เก็บโค้ดส่วนหน้า: https://github.com/liyupi/sql-father-frontend-public
ที่เก็บโค้ดแบ็กเอนด์: https://github.com/liyupi/sql-father-backend-public
️ ฉันได้ให้คำอธิบายโดยละเอียดเกี่ยวกับความคิดสร้างสรรค์ + การเลือกเทคโนโลยี + การออกแบบระบบ + การตีความซอร์สโค้ด + วิธีการเขียนเรซูเม่ของโครงการนี้ในโลกความรู้ด้านการเขียนโปรแกรมของฉันเอง หากคุณต้องการเขียนโครงการนี้ในเรซูเม่ของคุณหรือศึกษาเชิงลึก ยินดีต้อนรับเข้าร่วม My Planet เพื่อรับชม
ต้นกำเนิดของโปรเจ็กต์คือการที่ Yupi ต้องการแก้ปัญหาในการเขียน SQL ซ้ำๆ เพื่อสร้างตารางและสร้างข้อมูลเมื่อพัฒนาโปรเจ็กต์ อย่างไรก็ตาม มันเป็นแบบโอเพ่นซอร์สเพื่อให้ทุกคนเรียนรู้และปรับปรุงร่วมกัน~
ลองนึกภาพ: เมื่อฉันทำงานในโปรเจ็กต์ใหม่ ฉันไม่จำเป็นต้องเขียน SQL เพื่อสร้างตารางหรือสร้างข้อมูล แต่สามารถรับตารางที่มีข้อมูลปลอมได้โดยตรง จะดีแค่ไหน?
นักเรียนบางคนถามว่าทำไมโครงการจึงไม่เรียกว่า SQL Mother? ถ้าอย่างนั้นให้ฉันถามคุณว่าทำไมมรดกถึงเรียกว่าชั้นผู้ปกครอง?
ไม่ว่าคุณจะเป็นส่วนหน้า แบ็คเอนด์ การทดสอบ การพัฒนาข้อมูล วิทยาศาสตร์ข้อมูล หรือนักศึกษาวิจัย ฉันเชื่อว่าเครื่องมือนี้จะเป็นประโยชน์กับคุณ!
สถานการณ์การใช้งานหลักมีดังนี้:
1) โดยการกรอกแบบฟอร์มภาพ สร้างคำสั่งสร้างตาราง จำลองข้อมูลและโค้ดอย่างรวดเร็ว และบอกลาการทำงานซ้ำซาก!
2) รองรับวิธีการนำเข้าด่วนหลายวิธี ตัวอย่างเช่น หากคุณมีตารางข้อมูลสำเร็จรูปอยู่แล้ว คุณสามารถนำเข้าคำสั่งการสร้างตารางได้โดยตรงและสร้างข้อมูลจำลองได้ด้วยคลิกเดียว คุณยังสามารถนำเข้าตาราง Excel โดยตรงเพื่อสร้างตารางให้เสร็จสมบูรณ์ได้อย่างรวดเร็ว และยังรองรับการนำเข้าอัจฉริยะอีกด้วย ตารางและข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติโดยการป้อนคำไม่กี่คำ!
3) รองรับกฎหลายข้อสำหรับการสร้างข้อมูลการจำลอง เช่น ค่าคงที่ ค่าสุ่ม นิพจน์ทั่วไป ค่าส่วนเพิ่ม และยังรองรับการเลือกคำศัพท์เพื่อสร้างค่าสุ่มภายในช่วงที่กำหนด!
4) รองรับคำศัพท์ การออกแบบตาราง และการแชร์ข้อมูลภาคสนาม คุณสามารถเรียนรู้หรืออ้างอิงถึงการออกแบบตารางห้องสมุดของนักเรียนคนอื่นๆ หรือใช้ตารางและฟิลด์ห้องสมุดสำเร็จรูปโดยตรงเพื่อสร้างหรือดำเนินการพัฒนาระดับรองได้ด้วยคลิกเดียว
5) คุณสามารถใช้พจนานุกรมสำเร็จรูปโดยตรงเพื่อสร้างพจนานุกรม หรือใช้เป็นชุดข้อมูลสำหรับการวิจัย และสนับสนุนการปรับปรุงพจนานุกรมขั้นที่สอง!
ตัวโปรเจ็กต์มีฟังก์ชันที่สมบูรณ์ (แบ่งออกเป็นส่วนหน้าผู้ใช้และส่วนหลังการจัดการ) ตรงตามมาตรฐานออนไลน์ มีการออกแบบสถาปัตยกรรมที่ชัดเจน และโครงสร้างไดเร็กทอรีที่ได้มาตรฐาน
ส่วนหน้าใช้รูปแบบที่ซับซ้อน & ไดนามิก & ยุบได้ และโปรแกรมแก้ไขโค้ด ส่วนแบ็คเอนด์ใช้รูปแบบการออกแบบทั่วไปที่หลากหลาย การรับรองความถูกต้องด้าน AOP ฯลฯ ซึ่งคุ้มค่าแก่การเรียนรู้จากเพื่อน ๆ
รบกวนขอคำแนะนำจากพี่ๆ น้องๆ หน่อยได้ไหมครับ?
เทคโนโลยีหลัก:
ไลบรารี่ที่ต้องพึ่งพา:
เทคโนโลยีหลัก:
ไลบรารี่ที่ต้องพึ่งพา:
ติดตั้งการพึ่งพา:
npm run install
วิ่ง:
npm run dev
หีบห่อ:
npm run build
โดยส่วนใหญ่จะแบ่งปันสถาปัตยกรรมโดยรวมและการออกแบบหลักของระบบ และไม่แนะนำมากเกินไปเกี่ยวกับส่วนการพัฒนาเว็บแบบเดิม
แนวคิดการออกแบบหลัก: รวมวิธีการป้อนข้อมูลแต่ละวิธีไว้ใน Schema ที่ชัดเจน และสร้างเนื้อหาประเภทต่างๆ ตาม Schema
แผนภาพการออกแบบสถาปัตยกรรมมีดังนี้ นั่นคือ อินพุตใดๆ => รวม Schema => เอาต์พุตใดๆ:
ระบบแบ่งออกเป็นโมดูลหลักดังต่อไปนี้ โดยแต่ละโมดูลมีหน้าที่ชัดเจน:
รหัสของโมดูลหลักอยู่ในไดเร็กทอรีหลักส่วนหลัง
คลาสหลัก: TableSchemaBuilder ซึ่งมีหน้าที่รวมพารามิเตอร์ต่างๆ เข้ากับออบเจ็กต์ TableSchema
ประกอบด้วยวิธีการดังต่อไปนี้:
ในหมู่พวกเขา buildFromSql (การสร้าง Schema ตาม SQL) ใช้ตัวแยกวิเคราะห์ไวยากรณ์ที่มาพร้อมกับพูลการเชื่อมต่อฐานข้อมูล Druid ซึ่งมีประสิทธิภาพมาก (โดยทั่วไป คุณไม่ควรเขียนสิ่งต่าง ๆ เช่น parsers ด้วยตัวเอง คุณสามารถทำหลาย ๆ โปรเจ็กต์ได้ในเวลานี้ และการเขียนพวกมันก็ใช้งานไม่ง่ายเหมือนคนอื่น ๆ )
ใช้ในการบันทึกข้อมูลตารางและเขตข้อมูล มีโครงสร้างดังนี้
{
"dbName" : "库名" ,
"tableName" : " test_table " ,
"tableComment" : "表注释" ,
"mockNum" : 20 ,
"fieldList" : [{
"fieldName" : " username " ,
"comment" : "用户名" ,
"fieldType" : " varchar(256) " ,
"mockType" : "随机" ,
"mockParams" : "人名" ,
"notNull" : true ,
"primaryKey" : false ,
"autoIncrement" : false
}]
}
กำหนดประเภทบิลด์แต่ละประเภทเป็น Builder (ไดเร็กทอรี core/builder):
ในหมู่พวกเขาสำหรับตัวสร้างโค้ด SQL (SqlBuilder) ภาษาถิ่นจะถูกใช้เพื่อรองรับฐานข้อมูลประเภทต่างๆ (โหมดกลยุทธ์) และโหมดซิงเกิลตัน + โหมดโรงงานจะใช้เพื่อสร้างอินสแตนซ์ภาษาถิ่น
สำหรับ Java ตัวสร้างโค้ดส่วนหน้า (JavaCodeBuilder, FrontendCodeBuilder) จะถูกสร้างขึ้นโดยใช้กลไกเทมเพลต FreeMarker รหัสเทมเพลตมีดังนี้:
กฎการสร้างแต่ละกฎถูกกำหนดให้เป็น Generator และใช้ DataGeneratorFactory (โหมดโรงงาน) เพื่อสร้างและจัดการอินสแตนซ์ Generator หลายอินสแตนซ์อย่างสม่ำเสมอ
ใช้ไลบรารี dataFaker เพื่อใช้การสร้างข้อมูลแบบสุ่ม (RandomDataGenerator)
ใช้ไลบรารี Generex เพื่อใช้การสร้างข้อมูลนิพจน์ทั่วไป (RuleDataGenerator)
ใช้รูปแบบส่วนหน้าเพื่อรวมประเภทการสร้างต่างๆ และจัดเตรียมวิธีการเรียกและการตรวจสอบการสร้างแบบรวมศูนย์:
รวมถึงอรรถาภิธาน ข้อมูลตาราง และการแชร์ข้อมูลภาคสนาม จริงๆ แล้วเป็นบริการบนเว็บสำหรับการเพิ่ม ลบ ปรับเปลี่ยน และสอบถามเอนทิตีเหล่านี้ ดังนั้นฉันจะไม่ลงรายละเอียด
หากคุณต้องการได้รับคำอธิบายที่สมบูรณ์และละเอียดของโครงการนี้ ยินดีต้อนรับเข้าร่วม Programming Knowledge Planet ของ Yupi นี่คือแวดวงการเรียนรู้การเขียนโปรแกรมของ Yupi ในแวดวงนี้ ฉันจะพาทุกคนวิเคราะห์และตีความโปรเจ็กต์นี้ตั้งแต่ 0 ถึง 1 และตอบคำถามของทุกคนแบบตัวต่อตัว ไม่เพียงแต่คุณจะสามารถทำอย่างใดอย่างหนึ่งได้อย่างอิสระ แต่ยังจะสอนวิธีใส่โปรเจ็กต์นี้ในเรซูเม่ของคุณด้วย
เพื่อนๆ ทุกคนสามารถมีส่วนร่วมได้ และโปรดอ่านข้อมูลต่อไปนี้อย่างละเอียดก่อน:
แหล่งคำศัพท์บางส่วน: https://github.com/fighting41love/funNLP
แหล่งข้อมูลตารางตัวอย่าง: https://open.yesapi.cn/list1.html