คำถามติดแท็ก naming-convention

19
การเพิ่มส่วนนำหน้า 'tbl' ลงในชื่อตารางเป็นปัญหาหรือไม่
ฉันดูวิดีโอบางส่วน Brent Ozar ( เช่นนี้ตัวอย่างเช่น ) และเขาก็แสดงให้เห็นไม่ prefixing ตารางที่มีหรือ‘tbl’‘TBL’ บนอินเทอร์เน็ตฉันพบว่ามีบางบล็อกที่บอกว่าไม่ได้เพิ่มอะไรลงไปในเอกสารประกอบและนอกจากนี้“ มันใช้เวลาในการอ่านนานกว่า” คำถามและข้อควรพิจารณา มันเป็นปัญหาหรือไม่? เพราะฉันเติมตารางด้วย 'tbl' ตั้งแต่งาน dba แรกของฉัน (DBA อาวุโสบอกให้ฉันทำแบบนั้นกับองค์กร) นี่เป็นสิ่งที่ฉันต้องกำจัดหรือไม่ ฉันทำการทดสอบคัดลอกตารางที่มีขนาดใหญ่มากและให้คำนำหน้า 'tbl' ในขณะที่รักษาอีกอันไว้โดยไม่มีมันและฉันไม่ได้สังเกตเห็นปัญหาเรื่องประสิทธิภาพใด ๆ

10
ทำไมคนไม่แนะนำให้ใช้ชื่อ“ Id” สำหรับคอลัมน์ข้อมูลประจำตัว
ฉันถูกสอนไม่ให้ใช้ชื่อIdสำหรับคอลัมน์ข้อมูลประจำตัวของตารางของฉัน แต่เมื่อเร็ว ๆ นี้ฉันเพิ่งใช้มันอย่างไรก็ตามเพราะมันง่ายสั้นและอธิบายมากเกี่ยวกับข้อมูลจริง ๆ ฉันเคยเห็นคนแนะนำคำนำหน้าIdด้วยชื่อตาราง แต่ดูเหมือนว่าจะทำให้การทำงานมากขึ้นสำหรับผู้ที่เขียนคำสั่ง SQL (หรือโปรแกรมเมอร์ถ้าคุณใช้ ORM เช่น Entity Framework) โดยเฉพาะชื่อตารางที่ยาวขึ้นเช่นCustomerProductIdหรือAgencyGroupAssignementId หนึ่งในผู้จัดจำหน่ายของบุคคลที่สามที่เราได้รับการว่าจ้างในการสร้างบางสิ่งบางอย่างสำหรับเราจริงชื่อคอลัมน์ตัวตนของพวกเขาทั้งหมดเพียงเพื่อหลีกเลี่ยงการใช้Ident Idตอนแรกฉันคิดว่าพวกเขาทำอย่างนั้นเพราะIdเป็นคำหลัก แต่เมื่อฉันดูมันฉันพบว่าIdไม่ใช่คำหลักใน SQL Server 2005 ซึ่งเป็นสิ่งที่เราใช้ เหตุใดผู้คนจึงไม่แนะนำให้ใช้ชื่อIdสำหรับคอลัมน์ข้อมูลประจำตัว แก้ไข:เพื่อชี้แจงฉันไม่ได้ถามแบบแผนการตั้งชื่อที่จะใช้หรือหาข้อโต้แย้งที่จะใช้แบบแผนการตั้งชื่อแบบหนึ่งเหนืออีกแบบ ฉันแค่อยากรู้ว่าทำไมจึงไม่แนะนำให้ใช้Idสำหรับชื่อคอลัมน์ข้อมูลประจำตัว ฉันเป็นโปรแกรมเมอร์ตัวเดียวไม่ใช่ dba และสำหรับฉันแล้วฐานข้อมูลเป็นที่สำหรับเก็บข้อมูลของฉัน เนื่องจากฉันมักจะสร้างแอพขนาดเล็กและโดยทั่วไปจะใช้ ORM สำหรับการเข้าถึงข้อมูลชื่อฟิลด์ทั่วไปสำหรับฟิลด์ข้อมูลประจำตัวจึงทำงานได้ง่ายกว่ามาก ฉันต้องการที่จะรู้ว่าสิ่งที่ฉันพลาดในการทำเช่นนี้และถ้ามีเหตุผลที่ดีจริงๆสำหรับฉันที่จะไม่ทำเช่นนี้

11
ฉันจะตั้งชื่อช่องเวลาที่ดีที่สุดได้อย่างไร
เมื่อฉันต้องการสร้างเขตข้อมูลบันทึกเวลา (หรือเขตข้อมูลสไตล์วันที่ / เวลา) เป็นวิธีที่ดีที่สุดในการตั้งชื่อเขตข้อมูลเหล่านั้นคืออะไร ฉันควรใส่ record_timestamp หรือไม่


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

5
การใช้ชื่อแทนตารางเป็นแนวทางปฏิบัติที่ไม่ดี
ฉันจำได้ว่าเรียนรู้ที่จะทำสิ่งนี้ในหลักสูตร DBMS สำหรับนักเรียนปริญญาโทสาขาบริการข้อมูล ในการช่วยตัวเองให้พิมพ์คุณสามารถพิมพ์: SELECT t1.id, t2.stuff FROM someTable t1 INNER JOIN otherTable t2 ON t1.id=t2.id ; แต่ ... ทำไมจึงเป็นที่ยอมรับในขั้นตอนการจัดเก็บและเช่นนี้? ดูเหมือนว่าทั้งหมดจะเป็นอันตรายต่อความสามารถในการอ่านของคำสั่งในขณะที่ประหยัดเวลาน้อยมาก มีเหตุผลการทำงานหรือเหตุผลในการทำเช่นนี้? ดูเหมือนว่าจะเพิ่มความกำกวมมากกว่าลบออก; เหตุผลที่ยอมรับได้เพียงอย่างเดียวที่ฉันเห็นสำหรับการใช้รูปแบบนี้คือถ้าคุณเพิ่มนามแฝงที่มีความหมายเชิงความหมาย - ตัวอย่างเช่นFROM someTable idsTable- เมื่อชื่อตารางไม่อธิบายเพียงพอ การใช้ชื่อแทนตารางเป็นวิธีปฏิบัติที่ไม่ดีหรือเป็นเพียงการใช้ระบบที่เป็นประโยชน์ในทางที่ผิด

5
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง
ฉันควรทำตามมาตรฐานใดเมื่อตั้งชื่อตารางและมุมมอง ยกตัวอย่างเช่นเป็นความคิดที่ดีที่จะวางบางสิ่งเช่น tbl_ ไว้ที่จุดเริ่มต้นของชื่อตารางหรือไม่ ฉันควรกำหนดตารางรหัส / ค้นหาในบางวิธีเช่น ct_, lut_ หรือ codes_ หรือไม่ มีคนอื่นทำหรือไม่? ฉันใช้ MS SQL Server และมีฐานข้อมูลจำนวนมากที่มีตารางจำนวนมากดังนั้นมันก็ดีที่มีสิ่งที่เราสามารถใช้เป็นมาตรฐานที่มีเหตุผลสนับสนุนบางอย่าง

3
แบบแผนการตั้งชื่อชื่อคอลัมน์และแนวปฏิบัติที่เหมาะสมที่สุด
ฉันต้องการความคิดเห็นของผู้เชี่ยวชาญบางประการเกี่ยวกับการปฏิบัติที่ดีที่สุดเมื่อมันมาถึงการตั้งชื่อคอลัมน์ พื้นหลังเป็นไปตาม Wikipedia , ไวยากรณ์ต่อไปนี้ SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID); มีประสิทธิภาพมากกว่า SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID); อย่างไรก็ตามJOIN ... USINGไวยากรณ์ทำงานเฉพาะของคอลัมน์ที่สำคัญทั้งหมดหลักมีชื่อซ้ำกันทั่วโลก ดังนั้นฉันสงสัยว่านี่เป็นสิ่งที่ถูกต้องที่จะทำ ส่วนตัวผมมักจะใช้ในการสร้างตารางที่มีคอลัมน์ PK และคอลัมน์ที่สำคัญต่างประเทศid othertable_idแต่วิธีการมันเป็นไปไม่ได้ที่จะใช้หรือUSINGNATURAL JOIN การเชื่อมโยงใด ๆ กับสไตล์การออกแบบหรือแนวทางปฏิบัติที่ดีที่สุดสำหรับการออกแบบตารางจะได้รับการชื่นชมเช่นกัน!

1
การตั้งชื่อความขัดแย้งระหว่างฟังก์ชั่นพารามิเตอร์และผลลัพธ์ของการเข้าร่วมกับการใช้ข้อ
รับการตั้งค่านี้ใน Postgres ปัจจุบัน 9.4 ( จากคำถามที่เกี่ยวข้อง ): CREATE TABLE foo (ts, foo) AS VALUES (1, 'A') -- int, text , (7, 'B'); CREATE TABLE bar (ts, bar) AS VALUES (3, 'C') , (5, 'D') , (9, 'E'); นอกจากนี้ยังมีซอ Fiddleจากคำถามก่อนหน้านี้ ฉันเขียนSELECTด้วยFULL JOINเพื่อให้บรรลุวัตถุประสงค์ของคำถามอ้างอิง ย่อ: SELECT ts, f.foo, b.bar FROM foo f FULL …

2
อนุสัญญา PostgreSQL Capitalization อย่างเป็นทางการ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มีการประชุมอย่างเป็นทางการของ 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
ปัญหาเกี่ยวกับแบบแผนการตั้งชื่อตารางและการจัดการนโยบายใน SQL Server 2016
ใน SQL Server 2012 ฉันมีชุดนโยบายที่ไม่อนุญาตให้มีช่องว่างในชื่อตาราง อย่างไรก็ตามเมื่อฉันใช้นโยบายเดียวกันใน SQL Server 2016 ฉันได้รับข้อผิดพลาด นี่คือรหัสสำหรับเงื่อนไข: DECLARE @condition_id INT EXEC msdb.dbo.sp_syspolicy_add_condition @name=N'No Spaces', @description=N'No spaces in table names.', @facet=N'IMultipartNameFacet', @expression=N'<Operator> <TypeClass>Bool</TypeClass> <OpType>NOT_LIKE</OpType> <Count>2</Count> <Attribute> <TypeClass>String</TypeClass> <Name>Name</Name> </Attribute> <Constant> <TypeClass>String</TypeClass> <ObjType>System.String</ObjType> <Value>% %</Value> </Constant> </Operator>', @is_name_condition=4, @obj_name=N'% %', @condition_id=@condition_id OUTPUT SELECT @condition_id นี่คือรหัสสำหรับนโยบาย: DECLARE @object_set_id INT …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.