1

我正在使用 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 一对一获取?

我已经尝试了大多数可以在书中找到的东西,但没有成功。

请帮忙。

4

2 回答 2

1

您可能只是被“关系”窗口中显示关系的方式误导了。我运行了您的确切 DDL,当我在“关系”窗口中查看关系时,它看起来像是一对多...

gui.png

...但是当我右键单击连接两个表的行并选择“编辑关系...”时,对话框显示它实际上是一对一的:

细节.png

于 2013-05-04T22:25:30.033 回答
0

我相信事实上你已经如你所愿地建立了一对一的关系。

  1. 个人 ID 是唯一的
  2. 护照ID是唯一的
  3. 护照ID(唯一)等于一个人ID(也是唯一的)。
  4. 所以它是一对一的

但是,为个人和护照设置不同的 id 以进行更清晰的设计应该是更好的设计。像这样的东西:

   CREATE TABLE Person(
    PERSONID VARCHAR(1) UNIQUE,
    Name VARCHAR(30),

    PRIMARY KEY (PERSONID)
   );

   CREATE TABLE Passport(
   PASSPORTID VARCHAR(1) UNIQUE,
   Country VARCHAR(30),
   PERSONID VARCHAR(1),
   PRIMARY KEY (PASSPORTID),
   FOREIGN KEY (PERSONID) REFERENCES Person(PERSONID)
   );

这也将适用于拥有多本护照的人的情况。

于 2013-05-04T22:51:59.377 回答