create database achievement;use achievement;create table admin(id int primary key auto_increment,username varchar(15),password varchar(15));insert into admin values(1,'admin','admin');create table teacher(id int primary key auto_increment,username varchar(15),password varchar(15),sex varchar(15),shortname varchar(15));create table student(id int primary key auto_increment,username varchar(15),password varchar(15),sex varchar(15),shortname varchar(15));insert into student values(1,'stu','stu','男','张三');/*
create table course(id int primary key auto_increment,name varchar(15),description varchar(15), varchar(15),credit varchar(15));create table (studentid int,courseid int,record int);alter table  add constraint fk_studentid
foreign key (studentid)
references student(id)
on update cascade;alter table  add constraint fk_courseid
foreign key (courseid)
references course(id)
on update cascade;
*/create table course(id int primary key auto_increment,studentname varchar(15),studentshortname varchar(15),name varchar(15),record int);这上面是我设计的一个表,感觉自己设计得不够完善,嗯,这个网页大体上我写出来了,但是有一点问题就是我的数据库设计得不好,有没有那位能够给个比较好的数据库设计给我。因为我的这个数据库的话,如果老师要添加课程的话,我希望在学生那块能够显示教师新添加的课程,并且教师在给学生成绩的时候那个学号必须存在也就是外简约束,但是这个我不是蛮会使用。哪位能给个数据库我,就直接给分,越复杂的数据库越好。

解决方案 »

  1.   

    误区:
    1、数据库中的表不是越复杂越好。最好是能建成瞄一眼就能看懂的。
    2、表与表之间的关系要清晰。
    3、并不一定要设置外键,但是如果在java代码中要把插入数据的先后顺序,修改数据的先后顺序描述清晰。
    原因:表少的话如果有外键还无所谓。如果庞大的数据库里,表与表之间的关系都用外键维护的话,你想下,想要删除或者修改一条记录的话....会崩溃。综上所述:在动笔之前先要想好角色与角色之间的关系。画画ERM图。