为MySQL编写表

时间:2014-07-15 19:51:47

标签: mysql sql database mysqli

表格看起来像这样

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的数据库专家!

3 个答案:

答案 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) 

但是假设学生的任何朋友也是学生。但没有说明。