Dobrý den, předně předesílám že jsem začátečník. Chtěl bych se zeptat ohledně tvorby relationshipů. Trošku jsem studoval a narazil jsem na zdejší seriál o ASP.NET, konkrétně seriál o výpůjčkách od Tomáše Hercega a chtěl bych se zeptat na problematiku relationshipů. Především jak se dnes tvoří a jak je to s primárními klíči. Mám konkrétní problém a doufám, že to dokáži logicky s formulovat. V seriálu se používá k tvorbě relationshipů MS Visual Studio tuším 2008. Já používám 2012 a tam to již nelze naklikat. Proto používám T-SQL. Bohužel nedokážu propojit řádek CategoryId z tabulky Categories s řádkem CategoryId z tabulky Items a následně se mi ani nedaří propojit řádek UserName z tabulky Users s řádkem UserName z tabulky Items. Co jsem tak vysledoval problém je nejspíš v primárních klíčích. Tady mám ukázku kódu, který je špatně. Potřeboval bych vlastně poradit jak se vytvářejí cizí klíče a relationshipy, popřípadě odkázat na nějaké stránky, kde se dá uvedená problematika nastudovat.
CREATE TABLE [dbo].[Users]
(
[UserId] INT IDENTITY(1,1) NOT NULL,
[UserName] VARCHAR(100) NOT NULL,
[PasswordHash] CHAR(86) NOT NULL,
[PasswordSalt] CHAR(5) NOT NULL,
[Email] VARCHAR(100) NOT NULL,
[Comment] TEXT NULL,
[Enabled] BIT NOT NULL,
[DateCreated] DATETIME NOT NULL,
[DateLastLogin] DATETIME NULL,
[DateLastActivity] DATETIME NULL,
[DateLastPasswordChange] DATETIME NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([UserId] ASC),
CONSTRAINT [IX_Users_UserName] UNIQUE NONCLUSTERED ([UserName] ASC)
)
CREATE TABLE [dbo].[Roles]
(
[RoleName] VARCHAR(100) NOT NULL,
CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED ([RoleName] ASC)
)
CREATE TABLE [dbo].[UsersInRoles]
(
[HashId] INT IDENTITY(1,1) NOT NULL,
[UserName] VARCHAR(100) NOT NULL,
[RoleName] VARCHAR(100) NOT NULL,
CONSTRAINT [PK_UsersInRoles] PRIMARY KEY CLUSTERED ([HashId] ASC),
CONSTRAINT [FK_UsersInRoles_Roles] FOREIGN KEY ([RoleName]) REFERENCES [dbo].[Roles]([RoleName]) ON UPDATE CASCADE ON DELETE CASCADE
)
CREATE TABLE [dbo].[Items]
(
[ItemId] INT IDENTITY (1,1)NOT NULL,
[Title] NVARCHAR(200) NOT NULL,
[Description] NVARCHAR(MAX) NULL,
[BeginDate] DATETIME NOT NULL,
[LentTo] NVARCHAR(200) NOT NULL,
[LentToContactInfo] NVARCHAR(MAX) NULL,
[EndDate] DATETIME NULL,
[RealEndDate] DATETIME NULL,
[UserName] VARCHAR(100) NULL,
[CategoryId] INT NOT NULL,
CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([ItemId] ASC)
)
CREATE TABLE [dbo].[Categories]
(
[CategoryId] INT IDENTITY (1,1) NOT NULL,
[Title] NVARCHAR (200) NOT NULL,
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED ([CategoryId] ASC)
)
ALTER TABLE [dbo].[Categories]
(
ADD CONSTRAINT [FK_Items_Categories]
FOREIGN KEY ([CategoryId])
REFERENCES [dbo].[Items]([CategoryId])
ON DELETE SET NUll
)
ALTER TABLE [dbo].[Users]
(
ADD CONSTRAINT [FK_Items_Users]
FOREIGN KEY ([UserName])
REFERENCES [dbo].[Items]([UserName])
)
|