คำถามติดแท็ก primary-key

คีย์คือชุดของแอ็ตทริบิวต์ที่ไม่ซ้ำกันและไม่สามารถเป็นโมฆะได้ภายในตาราง

8
วิธีการสร้างคีย์หลักคอมโพสิตอย่างเหมาะสม - MYSQL
นี่คือตัวอย่างที่ชัดเจนของการตั้งค่าที่เข้มข้นที่ฉันกำลังทำงานด้วย table_1และtable_2ทั้งคู่มีคีย์หลักตัวแทนเพิ่มขึ้นอัตโนมัติเป็น ID infoเป็นตารางที่มีข้อมูลเกี่ยวกับทั้งสองและtable_1table_2 table_1 (id, field) table_2 (id, field, field) info ( ???, field) ฉันพยายามที่จะตัดสินใจว่าผมควรจะทำให้คีย์หลักของinfoคอมโพสิตของรหัสจากและtable_1 table_2ถ้าฉันจะทำสิ่งนี้สิ่งใดที่เหมาะสมที่สุด? (ในตัวอย่างนี้ฉันรวม ID 11209 กับ ID 437) INT(9)11209437 (ฉันจินตนาการได้ว่าทำไมสิ่งนี้ถึงไม่ดี) VARCHAR (10) 11209-437 DECIMAL (10,4)11209.437 หรืออย่างอื่น? นี่จะเป็นการดีถ้าใช้นี่เป็นคีย์หลักในฐานข้อมูล MySQL MYISAM?

14
สตริงเป็นคีย์หลักในฐานข้อมูล SQL
ฉันไม่คุ้นเคยกับฐานข้อมูลและทฤษฎีเบื้องหลังการทำงานของพวกเขา มันช้าลงหรือไม่จากจุดยืนประสิทธิภาพ (การแทรก / อัพเดต / การสืบค้น) เพื่อใช้ Strings สำหรับคีย์หลักมากกว่าจำนวนเต็ม?

19
กุญแจสำรองกับคีย์ธรรมชาติ / ธุรกิจ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ที่นี่เราไปอีกครั้งการโต้แย้งเก่ายังคงเกิดขึ้น ... เราจะมีคีย์ธุรกิจเป็นคีย์หลักหรือเราควรมีรหัสตัวแทน (เช่นข้อมูลประจำตัวของ SQL Server) ด้วยข้อ จำกัด เฉพาะในฟิลด์คีย์ธุรกิจหรือไม่ กรุณาให้ตัวอย่างหรือหลักฐานเพื่อสนับสนุนทฤษฎีของคุณ

14
มีความแตกต่างของประสิทธิภาพจริงระหว่างคีย์หลักของ INT และ VARCHAR หรือไม่
มีความแตกต่างของประสิทธิภาพที่วัดได้ระหว่างการใช้ INT กับ VARCHAR เป็นคีย์หลักใน MySQL หรือไม่ ฉันต้องการใช้ VARCHAR เป็นคีย์หลักสำหรับรายการอ้างอิง (คิดว่าสหรัฐฯรหัสประเทศ) และผู้ร่วมงานจะไม่ขยับเขยื่อนไปที่ INT AUTO_INCREMENT เป็นคีย์หลักสำหรับทุกตาราง ข้อโต้แย้งของฉันตามรายละเอียดที่นี่คือความแตกต่างของประสิทธิภาพระหว่าง INT และ VARCHAR นั้นเล็กน้อยเนื่องจากการอ้างอิงคีย์ต่างประเทศทุก INT จะต้องมีการเข้าร่วมเพื่อให้เข้าใจถึงการอ้างอิงคีย์ VARCHAR จะนำเสนอข้อมูลโดยตรง ดังนั้นไม่มีใครมีประสบการณ์กับกรณีการใช้งานเฉพาะนี้และความกังวลเกี่ยวกับประสิทธิภาพที่เกี่ยวข้องหรือไม่

11
แทรกคีย์หลักที่เพิ่มขึ้นอัตโนมัติลงในตารางที่มีอยู่
ฉันพยายามแก้ไขตารางที่ไม่มีคีย์หลักหรือคอลัมน์ auto_increment ฉันรู้วิธีเพิ่มคอลัมน์คีย์หลัก แต่ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะแทรกข้อมูลลงในคอลัมน์คีย์หลักโดยอัตโนมัติ (ฉันมี 500 แถวใน DB แล้วและต้องการให้รหัสพวกเขา แต่ฉันไม่ต้องการทำด้วยตนเอง) . ความคิดใด ๆ ขอบคุณมาก.
157 mysql  primary-key 

9
Entity Framework และ SQL Server View
ด้วยเหตุผลหลายประการที่ฉันไม่มีเสรีภาพที่จะพูดถึงเรากำลังกำหนดมุมมองบนฐานข้อมูล Sql Server 2005 ของเราดังนี้: CREATE VIEW [dbo].[MeterProvingStatisticsPoint] AS SELECT CAST(0 AS BIGINT) AS 'RowNumber', CAST(0 AS BIGINT) AS 'ProverTicketId', CAST(0 AS INT) AS 'ReportNumber', GETDATE() AS 'CompletedDateTime', CAST(1.1 AS float) AS 'MeterFactor', CAST(1.1 AS float) AS 'Density', CAST(1.1 AS float) AS 'FlowRate', CAST(1.1 AS float) AS 'Average', CAST(1.1 AS …

3
ดัชนีจำเป็นสำหรับคีย์หลักใน SQLite หรือไม่
เมื่อคอลัมน์จำนวนเต็มถูกทำเครื่องหมายเป็นคีย์หลักในตาราง SQLite ควรสร้างดัชนีอย่างชัดเจนด้วยหรือไม่ SQLite ดูเหมือนจะไม่สร้างดัชนีสำหรับคอลัมน์คีย์หลักโดยอัตโนมัติ แต่บางทีมันอาจทำดัชนีได้ตามวัตถุประสงค์? (ฉันจะค้นหาในคอลัมน์นั้นตลอดเวลา) สถานการณ์จะแตกต่างไปจากคีย์หลักของสตริงหรือไม่

5
SQL - คีย์หลักของตารางหลายต่อหลายตาราง
คำถามนี้เกิดขึ้นหลังจากอ่านความคิดเห็นในคำถามนี้: การออกแบบฐานข้อมูล เมื่อคุณสร้างตารางแบบกลุ่มต่อกลุ่มคุณควรสร้างคีย์หลักแบบผสมในคอลัมน์คีย์นอกสองคอลัมน์หรือสร้างคีย์หลัก "ID" ตัวแทน "ที่เพิ่มขึ้นอัตโนมัติ" และใส่ดัชนีในคอลัมน์ FK สองคอลัมน์ของคุณ (และอาจ ข้อ จำกัด เฉพาะ)? อะไรคือผลกระทบต่อประสิทธิภาพในการแทรกระเบียนใหม่ / การจัดทำดัชนีใหม่ในแต่ละกรณี? โดยทั่วไปสิ่งนี้: PartDevice ---------- PartID (PK/FK) DeviceID (PK/FK) เทียบกับสิ่งนี้: PartDevice ---------- ID (PK/auto-increment) PartID (FK) DeviceID (FK) ผู้แสดงความคิดเห็นกล่าวว่า: การทำให้สอง ID เป็น PK หมายถึงตารางถูกเรียงลำดับทางกายภาพบนดิสก์ตามลำดับนั้น ดังนั้นหากเราแทรก (Part1 / Device1), (Part1 / Device2), (Part2 / Device3) ดังนั้น (Part …

3
ความยาวอักขระสูงสุด UUID
เรากำลังใช้ UUID เป็นคีย์หลักสำหรับออก oracle DB และพยายามกำหนดความยาวอักขระสูงสุดที่เหมาะสมสำหรับ VARCHAR เห็นได้ชัดว่านี่คือ 36 อักขระ แต่เราสังเกตเห็น UUID'S สร้างขึ้นซึ่งยาวกว่านี้ - ยาวได้ถึง 60 อักขระ มีใครทราบความยาวอักขระสูงสุดที่เหมาะสมสำหรับ UUID หรือไม่?
115 primary-key  uuid 

2
ฉันจะกำหนดคีย์หลักแบบผสมใน SQL ได้อย่างไร
ฉันจะกำหนดคีย์หลักแบบผสมที่ประกอบด้วยสองฟิลด์ใน SQL ได้อย่างไร ฉันใช้ PHP เพื่อสร้างตารางและทุกอย่าง ฉันต้องการที่จะทำให้ชื่อของตารางvotingที่มีเขตข้อมูลQuestionID, และMemeberID voteและคีย์หลักแบบผสมประกอบด้วยฟิลด์QuestionIDและMemberID. ฉันควรทำอย่างไร?

9
เหตุใดจึงใช้หลายคอลัมน์เป็นคีย์หลัก (คีย์หลักแบบผสม)
ตัวอย่างนี้จะนำมาจาก w3schools CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) ) ความเข้าใจของฉันคือทั้งสองคอลัมน์ร่วมกัน ( P_IdและLastName) Personsเป็นคีย์หลักสำหรับตาราง ถูกต้องหรือไม่ เหตุใดบางคนจึงต้องการใช้หลายคอลัมน์เป็นคีย์หลักแทนที่จะเป็นคอลัมน์เดียว สามารถใช้คอลัมน์ร่วมกันเป็นคีย์หลักในตารางได้กี่คอลัมน์

8
เป็นคีย์ต่างประเทศเป็นคีย์หลักได้หรือไม่?
ฉันมีสองโต๊ะ: ผู้ใช้ (ชื่อผู้ใช้รหัสผ่าน) โปรไฟล์ (profileId, เพศ, วันเกิด, ... ) ขณะนี้ฉันกำลังใช้แนวทางนี้: แต่ละระเบียนโปรไฟล์มีฟิลด์ชื่อ "userId" เป็นคีย์ต่างประเทศซึ่งเชื่อมโยงไปยังตารางผู้ใช้ เมื่อผู้ใช้ลงทะเบียนบันทึกโปรไฟล์ของเขาจะถูกสร้างขึ้นโดยอัตโนมัติ ฉันสับสนกับคำแนะนำของฉันเพื่อน: จะมีฟิลด์ "หมายเลขผู้ใช้" เป็นชาวต่างชาติและหลักที่สำคัญและลบฟิลด์ "profileId" แนวทางไหนดีกว่ากัน?

11
คีย์หลักและดัชนี sql
สมมติว่าฉันมีแถว ID (int) ในฐานข้อมูลที่ตั้งเป็นคีย์หลัก หากฉันค้นหา ID บ่อยๆฉันจำเป็นต้องทำดัชนีด้วยหรือไม่? หรือว่าเป็นคีย์หลักหมายความว่ามีการจัดทำดัชนีแล้ว? เหตุผลที่ฉันถามเป็นเพราะใน MS SQL Server ฉันสามารถสร้างดัชนีบน ID นี้ได้ซึ่งตามที่ฉันระบุไว้คือคีย์หลักของฉัน แก้ไข: คำถามเพิ่มเติม - การจัดทำดัชนีคีย์หลักเพิ่มเติมจะเป็นอันตรายหรือไม่

3
การอัปเดตคีย์หลัก MySQL
ฉันมีตารางที่user_interactionsมี 4 คอลัมน์: user_1 user_2 type timestamp คีย์หลักคือ(user_1,user_2,type) และฉันต้องการเปลี่ยนเป็น(user_2,user_1,type) สิ่งที่ฉันทำคือ: drop primary key ... add primary key (user_2,user_1,type)... และ voila ... ปัญหาคือฐานข้อมูลอยู่บนเซิร์ฟเวอร์ ดังนั้นก่อนที่ฉันจะสามารถอัปเดตคีย์หลักได้มีรายการที่ซ้ำกันจำนวนมากได้พุ่งเข้ามาและมีการคืบคลานเข้ามาอย่างต่อเนื่อง จะทำอย่างไร? สิ่งที่ฉันต้องการทำตอนนี้คือลบรายการที่ซ้ำกันและเก็บรายการที่ซ้ำกันไว้ล่าสุดtimestamp(ซึ่งเป็นคอลัมน์ในตาราง) จากนั้นอัปเดตคีย์หลักอีกครั้ง
104 mysql  primary-key 

13
ADO.NET Entity Framework: Update Wizard จะไม่เพิ่มตาราง
ฉันเพิ่ม ADO.Net Entity Data Model ใหม่ในโครงการของฉันและใช้Update Wizardเพื่อเพิ่มตารางลงในโมเดล ตารางที่เลือกห้าตารางถูกเพิ่มลงในพื้นผิวการออกแบบ อีกสองโต๊ะจะไม่เพิ่ม ฉันเลือกสิ่งเหล่านี้ในวิซาร์ดและคลิกเสร็จสิ้น แต่ก็ไม่ปรากฏบนพื้นผิวการออกแบบ นี่เป็นข้อบกพร่องหรือมีบางสถานการณ์ที่ไม่สามารถเพิ่มตารางลงในโมเดลได้ (โดยการออกแบบ)? UPDATE: XML (* .edmx) เปิดเผยปัญหา <!--Errors Found During Generation: warning 6013: The table/view 'FooBar.dbo.Roles' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the …

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