อนุสัญญา PostgreSQL Capitalization อย่างเป็นทางการ [ปิด]


14

มีการประชุมอย่างเป็นทางการของ PostreSQL เกี่ยวกับการใช้อักษรตัวพิมพ์ใหญ่ในชื่อฐานข้อมูลตารางและฟิลด์หรือไม่?

ตัวอย่างบนเว็บไซต์อย่างเป็นทางการขอแนะนำตัวพิมพ์เล็กและ_คำแยกและฉันสงสัยว่านโยบายนี้อย่างเป็นทางการ

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
);

1
ตรวจสอบส่วนนี้ของเอกสารเกี่ยวกับตัวระบุ
ypercubeᵀᴹ

คำตอบ:


20

ฉันจะแสดงความคิดเห็นโดยทั่วไปของ Verace และระบุสิ่งนี้ทำให้เป็นทางการ:

ไม่มีแนวปฏิบัติที่ดีที่สุดที่จะครอบคลุมทุกสถานการณ์ สิ่งต่อไปนี้ทำให้สมมติฐานดังต่อไปนี้ (และจะทำอย่างไรถ้าคุณยังไม่ได้ทำ):

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

ดังนั้นส่วนที่เหลือนี้ค่อนข้างให้ความเห็น แต่ขึ้นอยู่กับประสบการณ์

  1. เมื่อพูดถึงชื่อตาราง
    1. คุณควรไปที่ชื่อเอนทิตี้เอกพจน์ (ทำให้เอกสารง่ายขึ้น)
    2. คุณควรใช้ Pascal Case ที่นี่
  2. เมื่อมันมาถึงชื่อเขต
    1. ใช้ camelCase กับชื่อฟิลด์ของคุณ
    2. ใช้ชื่อเอกพจน์สั้น ๆ เว้นแต่คำจำกัดความจะทำให้รู้สึกเป็นพหูพจน์ (มันแทบจะไม่เคย)
  3. เมื่อมันมาถึงฟังก์ชั่นของคุณเองหรือชื่อขั้นตอนการจัดเก็บ
    1. ใช้ underscore_separation
    2. ใช้การตั้งชื่อฟิลด์สำหรับการกำหนดพารามิเตอร์
  4. เมื่อพูดถึงฟังก์ชั่นฐานข้อมูลหรือชื่อภาษา (เช่น SELECT)
    1. ยกเว้นว่ามีความต้องการที่จะใช้ตัวพิมพ์ใหญ่ให้ใช้ตัวพิมพ์ใหญ่ทั้งหมด
    2. รู้ว่า APIs สำหรับภาษาของคุณจะรู้ว่าอะไรเหมาะสมหรือจำเป็น
  5. เมื่อพูดถึงระยะห่าง
    1. ผู้คนจำนวนมากใช้การจัดเรียงคอลัมน์สำหรับคำหลักและการเยื้องสำหรับสิ่งที่ไม่ใช่คำหลัก
    2. ผู้คนจำนวนมากใช้เครื่องหมายจุลภาคที่จุดเริ่มต้นของแถวเมื่อมีการแยกเขตข้อมูลในแต่ละบรรทัด (ซึ่งทำให้ง่ายต่อการใส่ความคิดเห็นของฟิลด์ที่ระบุจากรายการตัวเลือก)
    3. อย่าใช้ช่องว่างเป็นส่วนหนึ่งของชื่อของสิ่งต่าง ๆ แม้แต่ในส่วนหัวของค่าตอบแทน
  6. เมื่อพูดถึงเครื่องหมายวรรคตอน
    1. วงเล็บ - ใช้พวกเขา พวกเขาฟรี ฉันสัญญา.
    2. อัฒภาค - ใช้พวกเขา พวกเขาจะไม่ทำลายคุณ พวกเขาบังคับให้คุณคิดรหัสของคุณ และเป็นสุขอนามัยที่ดี
    3. Carriage Returns - อีกครั้งฟรี ;-) และทำให้โค้ดของคุณอ่านได้

คุณควรตระหนักว่าขณะที่ฉันพยายามช่วยคุณใช้คู่มือสไตล์ทั่วไปชุมชนโดยทั่วไปสำหรับ Postgres ไม่ได้ใช้ camelCase หรือ PascalCase แต่ใช้ underscore_separation แทน บิตที่สำคัญจริงๆคือเพื่อให้แน่ใจว่าคุณสร้างและใช้รูปแบบที่เฉพาะเจาะจงได้ทุกที่เพื่อให้สอดคล้อง


3
+1 สำหรับ "บิตที่สำคัญจริงๆคือให้แน่ใจว่าคุณสร้างและใช้สไตล์เฉพาะทุกที่เพื่อให้สอดคล้องกัน" ความสอดคล้องเป็นกุญแจสำคัญ หากไม่มีคุณต้องคิดเกี่ยวกับสิ่งที่คุณไม่ควรคิด
Max Vernon

4
camelCase และ PascalCase ใน PostgreSQL นั้นค่อนข้างเจ็บปวด คุณต้องพูดเหล่านี้ถ้าคุณจริงๆต้องการที่จะมีชื่อเช่นนั้นมิฉะนั้นระบบเงียบเป็นตัวพิมพ์เล็กพวกเขา (ฉันเกือบเขียน decapitalize สมาคมสิ่งที่มันอาจกระตุ้น)
dezso

ชื่อฐานข้อมูลล่ะ? ฉันควรใช้database_name, database-name, DatabaseName, databaseNameฯลฯ ?
ma11hew28

1
คำตอบนี้เป็นจริงสำหรับ PostgreSQL หรือไม่ หากคุณให้คำแนะนำในการใช้ PascalCase สำหรับชื่อตารางในคำตอบเฉพาะของ PG ฉันคิดว่าคุณควรพูดถึง (a) วิธีจัดการกับข้อเท็จจริงที่ว่าตัวอย่างส่วนใหญ่ใช้คำสำคัญที่เป็นตัวพิมพ์เล็กและ (b) ไม่ว่าจะอ้างชื่อตารางหรือ PG พับให้เป็นตัวพิมพ์เล็ก
AndreKR

@ AndreKR นี่คือสิ่ง: ฉันคาดหวังว่านักพัฒนาซอฟต์แวร์จะเป็นผู้ใหญ่รู้วิธีอ่านเอกสารและพูดคุยกับทีมของพวกเขาเกี่ยวกับวิธีการเขียนรหัสอย่างสม่ำเสมอ คำตอบนี้คือวิกิชุมชนหมายความว่าทุกคนสามารถแก้ไขและปรับปรุงได้ ฉันไม่สามารถพูดได้ว่า "นี่เป็นวิธีเดียว" และเพียงเพราะบางคนให้ตัวอย่างทั้งหมดเป็นตัวพิมพ์เล็กไม่ได้หมายความว่านั่นเป็นวิธีเดียวในชีวิต คุณต้องหาเส้นทางของตัวเองซึ่งเป็นวิญญาณของคำตอบนี้ โปรดแก้ไขคำตอบของชุมชนนี้เพื่อปรับปรุง ขอบคุณ!
jcolebrand

4

Google ฉบับย่อจะเปิดเผยเว็บไซต์จำนวนมากซึ่งบ่งบอกถึงแนวปฏิบัติที่ดีที่สุด ผมจะบอกว่ามีเพียงสองสิ่ง - ไม่เคยใช้ช่องว่าง "ของตารางที่ชื่อ" (ย้ายเป็นไปไม่ได้เนื่องจากกลไกการหลบหนีที่แตกต่างกันเช่นเดียวกับตัวละครใด ๆ ที่ไม่ใช่ตัวเลข) ด้วยกลไกต่าง ๆ เหล่านี้คุณจะต้องเคารพในกรณีเช่นกัน มีตัวอักษรและคำในภาษาอังกฤษ (หรือของคุณเอง) เพียงพอและความยาวของตัวระบุมีความยาวเพียงพอ (ฉันไม่ทราบว่าระบบใด ๆ ที่มีตัวระบุ _length <32, PostgreSQL คือ 64) และไม่เคยใช้คำสำคัญ SQL (ซึ่งแตกต่างกันไปตาม RDBMS) ซึ่งจะทำสิ่งเดียวกัน

รูปปั้นเช่น

SELECT "Field" FROM "Table";

สามารถถูกต้อง! สิ่งที่สำคัญอย่างยิ่งคือการมีการประชุมที่ชัดเจนและค่อนข้างง่าย ผู้คนมีความคิดเห็นที่แตกต่างกันในขณะที่คุณจะพบ - อ่านรอบหัวข้อและเลือกสิ่งที่ "รู้สึก" กับคุณ ดูเว็บไซต์เหล่านี้1 , 2 , 3 , 4 , 5 , ... (มีอีกมากมาย)


ขอบคุณฉันสะดุดหลายครั้งในการค้นหาของฉันเอง ฉันต้องการที่จะรู้ว่ามี styleguide อย่างเป็นทางการใด ๆ
Adam Matan

มีผู้ฝึกหัดจำนวนมากทั้งสองด้านของการถกเถียง (singular_table_name / plural_table_name) ที่มีความคิดเห็นเกี่ยวกับเรื่องอื่นที่ฉันเคารพ ฉันเป็นผู้ชาย "โสด" ตัวเอง - ถ้าคุณกำลังใช้โรงไฟฟ้านิวเคลียร์คุณอาจมีตารางชื่อ catastrophic_meltdown ที่คุณไม่ต้องการเห็นบันทึกเลย! ให้ส่วนต่อท้ายที่คีย์หลักของคุณและอ้างถึงเป็น Parent_Table_Name_FK ในตารางลูก - นั่นคือสิ่งที่ฉันทำ หลังจากนั้นมันก็ง่าย ๆ นะ! สำหรับ caps / no-caps สคริปต์ SQL ของฉันมี camel-case (ไม่ได้ใส่เครื่องหมายอัญประกาศ), statement ของฉันอาจจะใช่หรือไม่ก็ได้
Vérace
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.