Sql server 2008 如何创建学生成绩数据库?

Sql server 2008 如何创建学生成绩数据库?,sql-server-2008,ms-access-2007,Sql Server 2008,Ms Access 2007,我正试图建立一个学生成绩数据库。每个学生都有许多课程,每门课程都有不同的分数。 实例 约翰: 数学Q1=80,Q2=90,Q3=77 艺术 Q1=75,Q2=85,Q3=80 等等 我构建了3个表,其关系如下 学生姓名等级 CourseSourseid coursename 标记SID-courseid-Q1-Q2-Q3 我的工作对吗?因为我将把它升级为SQL,所以我需要知道报表和表单的表和关系是否相同?好的,但您应该重命名一些字段:coursesid、name、marksstu\u id、co

我正试图建立一个学生成绩数据库。每个学生都有许多课程,每门课程都有不同的分数。 实例 约翰:

数学Q1=80,Q2=90,Q3=77 艺术 Q1=75,Q2=85,Q3=80

等等 我构建了3个表,其关系如下 学生姓名等级 CourseSourseid coursename 标记SID-courseid-Q1-Q2-Q3


我的工作对吗?因为我将把它升级为SQL,所以我需要知道报表和表单的表和关系是否相同?

好的,但您应该重命名一些字段:coursesid、name、marksstu\u id、course\u id、Q1、Q2、Q3

SQL我使用PostgreSQL,但我认为其他DBMS也类似

CREATE TABLE students
(
id integer NOT NULL,
fname varchar(20),
lname varchar(20),
grade integer,
PRIMARY KEY (id)
);

CREATE TABLE courses
(
id integer NOT NULL,
name varchar(20),
PRIMARY KEY (id)
);

CREATE TABLE marks
(
stu_id integer REFERENCES students(id),
course_id integer REFERENCES courses(id),
Q1 double,
Q2 double,
Q3 double,
PRIMARY KEY (stu_id, course_id)
);


希望您的帮助

您应该在标记表中使用复合键。这将不会限制你只有3个问题

用于创建表的Ms Sql查询如下所示-

/****** Object:  Table [dbo].[students]    Script Date: 11/11/2014 16:20:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[students](
    [id] [int] NOT NULL,
    [fname] [varchar](20) NULL,
    [lname] [varchar](20) NULL,
    [grade] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO




/****** Object:  Table [dbo].[courses]    Script Date: 11/11/2014 16:19:59 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[courses](
    [id] [int] NOT NULL,
    [name] [varchar](20) NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



/****** Object:  Table [dbo].[marks]    Script Date: 11/11/2014 16:19:37 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[marks](
    [stu_id] [int] NOT NULL,
    [course_id] [int] NOT NULL,
    [q_id] [int] NOT NULL,
    [mark] [numeric](18, 0) NOT NULL,
 CONSTRAINT [PK_marks] PRIMARY KEY CLUSTERED 
(
    [stu_id] ASC,
    [course_id] ASC,
    [q_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[marks]  WITH CHECK ADD  CONSTRAINT [FK_marks_courses] FOREIGN     KEY([course_id])
REFERENCES [dbo].[courses] ([id])
GO

ALTER TABLE [dbo].[marks] CHECK CONSTRAINT [FK_marks_courses]
GO

ALTER TABLE [dbo].[marks]  WITH CHECK ADD  CONSTRAINT [FK_marks_students] FOREIGN     KEY([stu_id])
REFERENCES [dbo].[students] ([id])
GO

ALTER TABLE [dbo].[marks] CHECK CONSTRAINT [FK_marks_students]
GO
/****** Object:  Table [dbo].[students]    Script Date: 11/11/2014 16:20:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[students](
    [id] [int] NOT NULL,
    [fname] [varchar](20) NULL,
    [lname] [varchar](20) NULL,
    [grade] [int] NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO




/****** Object:  Table [dbo].[courses]    Script Date: 11/11/2014 16:19:59 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[courses](
    [id] [int] NOT NULL,
    [name] [varchar](20) NULL,
PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



/****** Object:  Table [dbo].[marks]    Script Date: 11/11/2014 16:19:37 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[marks](
    [stu_id] [int] NOT NULL,
    [course_id] [int] NOT NULL,
    [q_id] [int] NOT NULL,
    [mark] [numeric](18, 0) NOT NULL,
 CONSTRAINT [PK_marks] PRIMARY KEY CLUSTERED 
(
    [stu_id] ASC,
    [course_id] ASC,
    [q_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[marks]  WITH CHECK ADD  CONSTRAINT [FK_marks_courses] FOREIGN     KEY([course_id])
REFERENCES [dbo].[courses] ([id])
GO

ALTER TABLE [dbo].[marks] CHECK CONSTRAINT [FK_marks_courses]
GO

ALTER TABLE [dbo].[marks]  WITH CHECK ADD  CONSTRAINT [FK_marks_students] FOREIGN     KEY([stu_id])
REFERENCES [dbo].[students] ([id])
GO

ALTER TABLE [dbo].[marks] CHECK CONSTRAINT [FK_marks_students]
GO