【发布时间】:2013-05-04 20:59:53
【问题描述】:
我正在使用 access 2010 来执行此操作。
我已经创建了两个表,我想将其一对一地设置,但我似乎没有将其设置为一对一的关系。
CREATE TABLE Person(
ID VARCHAR(1) UNIQUE,
Name VARCHAR(30),
PRIMARY KEY (ID)
);
CREATE TABLE Passport(
ID VARCHAR(1) UNIQUE,
Country VARCHAR(30),
PRIMARY KEY (ID),
FOREIGN KEY (ID) REFERENCES Person(ID)
);
据我所知,这应该是一对一的关系,但它是一对多的。如何通过 ACCESS 一对一获取?
我已经尝试了大多数可以在书中找到的东西,但没有成功。
请帮忙。
【问题讨论】:
-
你怎么知道它是一对多的?如果真的是一对一的,那么所有的数据都应该在同一个表中。此外,
id varchar(1)只为您提供 256 条可能的记录。这就是你想要的吗? -
好的,所以它不会在关系中显示为一对一,但实际上是一对一,但它显示的是一对多。
-
您所拥有的是
one to zero or one,它与您在大多数关系数据库产品中所获得的一样接近,而无需整合到单个表中。 -
顺便说一句,对主键列有唯一约束是多余的;主键已经被要求是唯一的。
-
一个人完全有可能拥有不止一本护照,并且他们有护照历史(例如更新护照时),因此您可能需要一对多的关系。您只需要知道哪些当前有效。