学校跑步俱乐部 - mySQL数据库设计

时间:2014-12-10 10:55:55

标签: mysql database

我是一名体育老师,试图为我们的学生和家长创建一个基本的mySQL数据库,以查看他们的运行结果。我一直在做一些阅读,我希望我走在正确的轨道上!

这些表似乎合适吗?

CREATE  TABLE IF NOT EXISTS `Students` (
  `StudentID` INT NOT NULL ,
  `Firstname` VARCHAR(45) NULL ,
  `Surname` VARCHAR(45) NULL ,
  `DOB` DATE NULL ,
  `Class` VARCHAR(45) NULL ,
  `Year` VARCHAR(45) NULL ,
  `House` VARCHAR(45) NULL ,
  PRIMARY KEY (`StudentID`) )

CREATE  TABLE IF NOT EXISTS `Races` (
  `RunID` INT NOT NULL ,
  `StudentID` VARCHAR(45) NULL ,
  `Date` DATETIME NULL ,
  `Distance` INT NULL ,
  PRIMARY KEY (`RunID`) )

最终游戏是查询以下类型的结果: 每周排名前十的选手

每周 - 哪个班级/房屋/年级的孩子参加的人数最多,而且大多数公里都在运行

总KM的运行等

非常感谢任何想法=)

1 个答案:

答案 0 :(得分:0)

Races.StudentID必须是Students的外键。创建表后运行alter

ALTER TABLE Races
ADD CONSTRAINT FK_Races_Students FOREIGN KEY (StudentID)
REFERENCES Students(StudentID);

您使用VARCHARstudentid存储在Races表中,这会在加入两个表时出现性能问题。相反,将Races.StudentID设为int,然后输入外键alter script。

您也可以考虑将AUTO_INCREMENT添加到主键字段。

CREATE  TABLE IF NOT EXISTS `Students` (
  `StudentID` INT NOT NULL AUTO_INCREMENT,
...

CREATE  TABLE IF NOT EXISTS `Races` (
`RunID` INT NOT NULL AUTO_INCREMENT,
...

这将自动增加主键,您可以在插入查询中省略它们。