表格看起来像这样
STUDENTID | FRIEND1 | FRIEND2 | ADDRESS | TUITIONPAID
学生证,朋友1和朋友2将是四个,五个或六个数字和字符的组合
TUITION将是真/假
当然,STUDENTID对于所有行都应该是唯一的。
我使用的是正确的类型吗?
STUDENTID - Varchar (6)
Friend1 - Varchar (6)
Friend2 - Varchar (6)
Address - Varchar (255)
TUITION - BIT (3)
STUDENTID应该是“独特的”还是“主键”?
最后,如果我要构建一个包含三百万行的表,是否建议将其分成三个表?或者1张桌子够好吗?
非常感谢Stack Overflow的数据库专家!
答案 0 :(得分:2)
让我们分开问题。
我使用的是正确的类型吗?
根据我的理解,你可以使用你创建的这个模型。
STUDENTID应该是“独特的”还是“主键”?
主键更好,但它也可以是唯一的,因为你可以让一个学生在很长一段时间后回来学习。
最后,如果我要构建一个包含三百万行的表,是否建议将其分成三个表?或者1张桌子还不错?
尺寸无关紧要(多)。您可以为所有行创建一个表。
Obs:如果你有很多列,你可以考虑将它们分成更多的表。如果您有很多行,请只使用一个表。
答案 1 :(得分:1)
除了TUITION - BIT(3)之外,您使用的是正确的类型。 由于您希望它为真/假使用BOOLEAN
STUDENTID绝对应该是你的主要关键。
使用1个表不应该是一个问题,但你可以做更多。 例如:
表1:STUDENTID 1 - 1,000,000
表2:STUDENTID 1,000,001 - 2,000,000
表3:STUDENTID 2,000,001 +
我仍然没有看到制作更多桌子的重点。对于现代计算机来说,3M行非常容易。
答案 2 :(得分:0)
理想情况下,我认为你想要3个表 -
Student - StudentID (primary key), AddressID, TuitionPaid
Friend - (FriendID (primary key), StudentID (foreign key)
Address (AddressID (primary key), Address)
但是假设学生的任何朋友也是学生。但没有说明。