如何使用Microsoft访问规范化数据

时间:2013-09-08 18:16:40

标签: ms-access

我目前有一个课程表,其布局如下所示。

course_title, course_subject, course_number, instructor, course_id

我需要创建一个新表,然后推送instructor_id,这样我就可以通过外键ID来访问表了,但是我不确定如何从课程表中获取数据转到诸如讲师之类的新表,并在课程表中创建instructor_id字段。我希望这个问题有道理。我正在从microsoft excel导入一个平面文件。

1 个答案:

答案 0 :(得分:1)

让我们首先定义输出表的模式。 courses表应该是这样的:

title varchar(100) not null
subject varchar(100) not null
[number] varchar(5) not null unique
id long primary key
instructor_id long not null references instructors (id)

instructors表应该是:

id autoincrement primary key
[name] varchar(100) not null unique

让我们调用您当前的表courses_old。我可能会稍微离开,但我相信你可以根据自己的需要进行调整。

问题是从courses_oldcoursesinstructors。首先我们填写instructors表:

insert into instructors ([name])
select distinct instructor
from courses_old

然后我们使用来自courses的匹配教师填充instructors

insert into courses (
  title
, subject
, [number]
, id
, instructor_id
) select
  co.course_title
, co.course_subject
, co.course_number
, co.course_id
, i.id
from courses_old as co
inner join instructors as i
on co.instructor = i.[name]

应该这样做。但显然你需要验证。最后,删除courses_old表并压缩DB文件!

如果您愿意为他们提供所有新ID,则可以选择将courses.id设为自动增量字段。这应该是对上述内容的简单调整。