为某些字段创建具有多个值的Access数据库

时间:2017-09-28 09:36:52

标签: database ms-access

对于我正在考虑的一个小项目,我正在考虑在Microsoft Access 2016中创建一个数据库来存储电视节目中的角色,以便轻松搜索角色并查看他们可能已经播放过的所有剧集,或者什么剧集的金发女郎等等。

我遇到的问题是弄清楚如何设置我的表来记录人们的剧集,我看到很多人都说在大多数情况下多值字段都是个不好的主意。

我正在看一些可能类似的简单表:

CHARACTER:CharacterName(PK),HairColour,Gender

EPISODE:EpisodeNumber(PK),EpisodeDate,CharacterName(FK)

这里的问题显然是大多数角色出现在多集中,所有剧集都会有多个角色。什么是解决这种多对多关系的好方法?

2 个答案:

答案 0 :(得分:0)

我不会将字符名称用作主键 - 我现在想不到任何内容,但是必定会有不同字符的节目共享相同的名称。在我的头顶......你可以让星际迷航中的柯克船长和(可能)飞行医生中的柯克船长。

至于解决多对多的关系,你需要一个第三个表来保存它。该表将有两个外键引用字符和剧集中的主键,这两个字段将构成表复合主键。

所以:

CharacterName | Episode  
     1        |    1  
     1        |    2  
     2        |    1
     2        |    2

然后,您可以根据以下内容从每个表中提取详细信息:

SELECT  Character.CharacterName, Episode.EpisodeNumber
FROM    (Character INNER JOIN Joining_Tbl ON Character.CharacterName = Joining_Tbl.CharacterName)
                   INNER JOIN Episode ON Joining_Tbl.EpisodeNumber = Episode.EpisodeNumber
WHERE   Character.HairColour = 'Blonde'

注意 - 剧集表格不包含角色详情。它仅包含该剧集特有的信息 - 剧集编号,日期,姓名。您可以将序列号添加到此表中 - 它不是该集的唯一,但它不会更改,可以用作链接到包含系列信息的表的外键。

答案 1 :(得分:0)

所有表格的主键都应该是自动编号字段 你应该避免使用多值字段。

部分答案取决于您要构建的用户界面体验。最后的字符表是一个选择列表。

Episode表应该是Main表单的基础/记录源。然后你需要另一个表:EpisodeCharacter。这个新表是Main表单中子表单的基础,它被设置为从Character表中调用一个记录。

必须构建Character表。然后在剧集中,一个选择剧集或创建一个记录,EpisodeCharacter是它的许多表。

www.CahabaData.com