在数据库系统中的不同表之间建立连接

时间:2012-07-17 10:13:51

标签: sql database database-design create-table

我在数据库系统中创建了不同的表..现在我需要在它们之间建立关系我的意思是一个表中的主键应该连接到另一个表中的外键。我应该在创建时使用它表格本身或它在插入数据时它们将连接在一起它们是否相同?

例如,当我创建两个表时,我会执行以下操作:

CREATE TABLE employee (
  fname    varchar(15),
  minit    varchar(1),
  lname    varchar(15),
  ssn      char(9),
  bdate    date,
  address  varchar(50),
  sex      char,
  salary   decimal(10,2),
  superssn char(9),
  dno      number(4)
);

CREATE TABLE department (
  dname        varchar(25),
  dnumber      number(4),
  mgrssn       char(9), 
  mgrstartdate date
);

这里dno应连接到dnumber,而ssn应连接到mgrssn。

2 个答案:

答案 0 :(得分:0)

添加数据不会对表上的约束做任何特殊处理,您的数据库如何知道值是相同的?它们看起来可能相同但在不同的地方有不同的含义。

如果你的表声明包含对你的另一个表的外键引用,那就是它的全部内容。

如果没有(我在你的例子中没有看到),那么你应该添加一个以保持参照完整性。

您可以在添加数据后添加约束,但如果任何数据无效(如外键字段中的空值),那么您将无法添加约束。

答案 1 :(得分:0)

数据库表关系是需要创建的约束。你不应该只依赖数据。

  

数据库约束是允许您限制的用户定义结构   列的行为。

PRIMARY KEY CONraint

  

PRIMARY KEY约束检查列值是否唯一   在表中的所有行中,不允许空值。因此,一个   PRIMARY KEY具有NOT NULL和UNIQUE约束的行为。   PRIMARY KEY可以跨越两列或更多列。多列PRIMARY   KEY被称为复合键或复合键,可能会令人困惑   但基本上这些术语仅表示密钥跨越列。

FOREIGN KEY Constraint

  

FOREIGN KEY约束限制a中可接受的值   列或列的列到列表中的那些值   用于定义主键的列或列组。依赖的   在实现上,这可能会也可能不会强加一个NOT NULL列   对外键的所有成员的约束。如果执行   使列或列集必须,然后它使   FOREIGN KEY中列的基数为强制,或1..1为   首要的关键。但是,默认情况下FOREIGN KEY为0..1   PRIMARY KEY,表示可以在表中插入一行   FOREIGN KEY列。至少,它可以完成,只要   约束列或列集是空值。

以下是使用SQL Server 2008创建这些约束的useful link