如何在Microsoft SQL中创建这样的表?

时间:2010-07-13 19:11:54

标签: sql sql-server

alt text

这是我到目前为止所拥有的:

create table rubro (
  id_rubro int primary key,
  nombre_rubro nvarchar(150)
)
go

create table cliente (
  id_cliente int primary key,
  direccion nvarchar(400),
  telefono int,
  nit int
)

2 个答案:

答案 0 :(得分:2)

您只需要创建缺少的两个表并将它们链接到cliente表:

create table natural (
  id_cliente int primary key,
  nombre nvarchar(50),
  app nvarchar(50),
  apm nvarchar(50),
  ....
)

alter table dbo.natural
  add constraint fk_natural_cliente
      foreign key(id_cliente) references dbo.cliente(id_cliente)

juridico表也一样。

在SQL Server中,这些只是三个常规表,由外键约束链接。使用OR映射器(如Entity Framework)使您能够将这些映射器作为.NET域模型中的后代类进行映射 - 但在数据库级别,这些只是三个常规表 - 对它们没什么“神奇”......

答案 1 :(得分:1)

如果我正确理解了图表,那么它是面向对象的图,而不是关系图。 naturaljuridico是超类cliente的子类。

关系数据库中没有继承这样的概念。映射clas层次结构时,有一些常用模式可供使用:

所有这些都各有利弊。我建议你开始阅读这些内容。