我是一名体育老师,试图为我们的学生和家长创建一个基本的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的运行等
非常感谢任何想法=)
答案 0 :(得分:0)
Races.StudentID
必须是Students
的外键。创建表后运行alter
ALTER TABLE Races
ADD CONSTRAINT FK_Races_Students FOREIGN KEY (StudentID)
REFERENCES Students(StudentID);
您使用VARCHAR
将studentid
存储在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,
...
这将自动增加主键,您可以在插入查询中省略它们。