ความเป็นมา: ใน SQL Server ตารางฐานข้อมูลของฉันมีเพียงสามคอลัมน์เท่านั้น:
DataID (PK, bigint)
ProductName (Nchar20)
Price (float)
ทุกวันมันจะแทรกข้อมูลประมาณ 5,000+ แถวลงในตารางนี้โดยอัตโนมัติ ต่อมาในตารางนี้อาจเพิ่มคอลัมน์เพิ่มเติมเช่น AdjustedPrice (float)
, Discount (float)
...
คำถาม: ฉันรู้ว่าฉันควรจะทำให้ ProductName
เป็น FK ไปยังอีกตารางหนึ่ง (ProductNameTable
ด้วย ProductID (PK,int)
และ ProductName (Nchar)
แต่แล้ว price (float)
ล่ะ? ราคาขึ้นอยู่กับว่าสามารถอยู่ในช่วง 100 - 1,000 ฉันควรทำให้ FK เป็น FK ไปอีกโต๊ะหนึ่งหรือปล่อยทิ้งไว้ อยู่คนเดียวในโต๊ะเหรอ?
มีคำแนะนำจาก DBA หรือไม่? ขอบคุณมากครับ.....
nchar(n)
- สตริงเหล่านี้เป็นสตริง ความยาวคงที่ ซึ่งจะ เสมอ ใช้ความยาวที่กำหนดไว้ (คูณสอง) ของช่องว่าง (มีช่องว่างเสริม) . ใช้nvarchar(n)
(ความยาวผันแปร) แทน! นอกจากนี้: สำหรับราคานี้ ฉันจะไม่ใช้float
- สิ่งนี้ไม่ถูกต้องโดยธรรมชาติและมีแนวโน้มที่จะเกิดข้อผิดพลาดในการปัดเศษ - ใช้decimal(p,s)
แทน! - person marc_s   schedule 21.05.2014