多年前,我在MS Excel中创建了一个数据库来跟踪我的照片。我设计它的方式如下。我有一张主表,每张照片都有一个主键,序列号为ID。然后我在工作簿中有几张包含同一主题的特定照片的表格,例如景观(LS),海景(SC),日落(SS)等。这些表中的每一个都具有主键,其对该主题中的照片ID进行排序。当我需要输入新照片时,我编写了一个打开的表单。打开表单时,它将确定主表中的最后一条记录,并将主键增加到序列中的下一个数字。然后我会选择什么表(phto类型 - LS,SC,SS等),它将确定该特定表单上的最后一个记录号,并递增到下一个数字,并将其输入到表单中。然后我可以输入有关该照片的详细信息,如曝光设置,位置,拍摄日期,关键词等。然后,它将在主表和特定主题表中写入所有这些信息。不是最优雅,但它对我有用。
我想在MS Access中复制此内容但我无法确定如何在打开主表单的同时增加主照片编号和主题照片编号。
在MS Access中,我创建了一个主表,其中包含Excel工作簿中主表中存在的所有字段。主表和主题表之间的唯一区别是主表有两个附加列,一个用于主键(主照片编号),另一个用于特定照片的主题。下一栏包含特定主题照片编号。因此,例如,主表中的两个连续记录可以如下:slideID = 1245 subject = LS subjectID = 245,然后slideID = 1246 subject = SS subjectID = 127.在主题表中,subjectID是唯一的唯一标识符。关于照片的所有其他相关信息在主表和主题表中都是重复的。
所以在MS Access中,我有一个Master表。我有一张表格用于输入照片信息。我怎样才能让它增加主照片ID号码,当前是表格的主键码,还可以在我从表格中选择主题时增加主题ID号码?
答案 0 :(得分:2)
由于您是唯一输入数据的人,因此使用DMax是安全的,因为没有其他人可以获取相同的数字。您甚至可以在文本框的默认值中使用DMax,这意味着每次创建新记录时都会建议该数字,如果创建了记录,建议的数字将变为实际数字。
=DMax("[slideID]","TableNameHere")+1
如果您打算学习数据库设计,还有更多工作需要完成,因为您的表需要规范化,您可能希望阅读Fundamentals of Relational Database Design, Paul Litwin, 2003
答案 1 :(得分:1)
您的主照片表应包含您为任何给定照片所需的所有信息。如果您只想查看“风景”,只需创建一个按主题过滤主表的查询。这消除了重复输入。可以将主题表中有关照片的任何字段/数据移动到主表。
如果您希望照片有多个主题,则需要Photo_Subject表。它需要的唯一字段是:Photo_Subject_ID(自动编号),PhotoID(来自主表),SubjectID(或只是放置主题的名称)。这样,您可以根据需要多次输入相同的照片,并根据需要为其添加任意数量的照片。您可以在PhotoID&上添加索引。避免重复输入的SubjectID。 (是的,我建议避免使用复合主键)。
答案 2 :(得分:0)
您是否研究过可以形成的不同类型的关系?例如,一对多的关系。您目前在Access中设置了哪些关系?