SQL中的业务逻辑关系

时间:2011-05-26 10:42:49

标签: sql sql-server rdbms

有谁能告诉我如何在SQL(服务器)中的表之间建立1 to 0..11 to 1..*关系?

非常感谢。

2 个答案:

答案 0 :(得分:5)

1到1 .. *

从父表创建外键到子项的主键(查找表)。

CREATE TABLE  A
(
   id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
   Somecolumn int,
   SomeOtherColumn Varchar(50),
   B_id int CONSTRAINT FOREIGN KEY REFERENCES B(id),
   -- ...other columns
)

CREATE TABLE  B
(
   id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
   Name Varchar(50)
)

1到0..1

创建一个表,主键也定义为父表的外键

CREATE TABLE  [Master]
(
   id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
   Somecolumn int,
   SomeOtherColumn Varchar(50),
   -- ...other columns
)

CREATE TABLE [Child]
(
   id int NOT NULL PRIMARY KEY,
   OtherColumn Varchar(50),
)

ALTER TABLE Child
   ADD  CONSTRAINT FK_Master FOREIGN KEY (id) REFERENCES Master(id)

答案 1 :(得分:1)

一对多

  1. 使用自己的主键
  2. 定义两个表(示例A和B)
  3. 将表A中的列定义为具有基于表B的主键的外键关系
  4. 这意味着表A可以有一个或多个与表B中单个记录相关的记录。

    如果已经有表,请使用ALTER TABLE语句创建外键约束:

    ALTER TABLE A ADD CONSTRAINT FOREIGN KEY fk_b(b_id)引用b(id)

    * fk_b: Name of the foreign key constraint, must be unique to the database
    * b_id: Name of column in Table A you are creating the foreign key relationship on
    * b: Name of table, in this case b
    * id: Name of column in Table B