вроде чуток разобрался,но всеравно есть вопросы.вот например часть из рез-ов того примера:
| Код | SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE [dbo].[Employees]( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [LastName] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [FirstName] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [Title] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [TitleOfCourtesy] [nvarchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [BirthDate] [datetime] NULL, [HireDate] [datetime] NULL, [Address] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [City] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Region] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [PostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Country] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [HomePhone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Extension] [nvarchar](4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Photo] [image] NULL, [Notes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ReportsTo] [int] NULL, [PhotoPath] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE [dbo].[Customers]( [CustomerID] [nchar](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [CompanyName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [ContactName] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactTitle] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Address] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [City] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Region] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [PostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Country] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Phone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Fax] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]
SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE [dbo].[Shippers]( [ShipperID] [int] IDENTITY(1,1) NOT NULL, [CompanyName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [Phone] [nvarchar](24) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]
SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON CREATE TABLE [dbo].[Orders]( [OrderID] [int] IDENTITY(1,1) NOT NULL, [CustomerID] [nchar](5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [EmployeeID] [int] NULL, [OrderDate] [datetime] NULL, [RequiredDate] [datetime] NULL, [ShippedDate] [datetime] NULL, [ShipVia] [int] NULL, [Freight] [money] NULL, [ShipName] [nvarchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ShipAddress] [nvarchar](60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ShipCity] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ShipRegion] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ShipPostalCode] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ShipCountry] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY]
|
после проверки выяснилось,что здесь нижняя таблица зависит от всех перечисленных выше.но как узнать по каким полям? там где есть IDENTITY(1,1) почти понятно.но почему в Employees IDENTITY есть, а в Customers нет?из-за типа поля?выходит их нужно просто сопоставлять по названиям столбцов?мне кажется это нерационально и вообще не правильно... и в Orders нет ни одного столбца из Shippers.как их тогда сопоставлять?
ЗЫ:может это излишне и есть какойто более простой метод? |