上的項目,我有如下表:查找表本地化
create table dbo.Posts
(
Id int identity not null primary key clustered (Id),
Created datetime not null,
);
create table dbo.PostsLocalized
(
Id int identity not null primary key clustered (Id),
PostId int not null,
LanguageId int not null,
PostTypeId int not null,
[Text] nvarchar (max) not null,
Title nvarchar (120) not null,
constraint UQ_PostsLocalized_PostId_LanguageId unique (PostId, LanguageId)
);
create table dbo.PostTypes
(
Id int identity not null primary key clustered (Id),
Name nvarchar (max) not null
);
所以我用PostsLocalized表本地化的職位,但不是PostTypes表。
PostTypes表基本上是一個查找表,就像其他人在我的數據庫中一樣。
你認爲我應該本地化查找表,例如PostTypes?
我會添加一個名爲PostTypesLocalized與本地化名稱的新表。
同樣對於像性別,其他國家的查找表,...
或者我應該只在應用本地化的查找表?
UPDATE
澄清:
一個職位的所有本地化版本具有相同的PostType。
我需要在UI中顯示PostTypes,這就是爲什麼我需要翻譯它們。
所以,我想@dasblinkenlight的回答以下的新方法:
create table dbo.Posts
(
Id int identity not null primary key clustered (Id), -- The id of the localized post
Created datetime not null,
PostId int not null, -- The id of the post
PostTypeId int not null
LanguageId int not null,
[Text] nvarchar (max) not null,
Title nvarchar (120) not null,
constraint UQ_PostsLocalized_PostId_LanguageId unique (PostId, LanguageId)
);
create table dbo.PostTypes
(
Id int identity not null primary key clustered (Id), -- PostType localized id
PostTypeId int not null, -- The id of the post type
Name nvarchar (max) not null
);
考慮到(1)再上崗> PostTypeId應與PostTypes> PostTypeId。
但我該怎麼做?
我還建議您使用有意義的名稱作爲主鍵而不是ID。簡單的ID不明確,迫使你根據他們所在的表格來更改列的名稱。隨着系統變得更大,這是一個非常痛苦的工作。給他們一個有意義的名字並保持一致。 – 2014-09-11 14:09:28
@SeanLange,對不起在哪張桌子? – 2014-09-11 15:01:29
所有這些。例如,您在帖子命名標識中有一列,它在其他表中成爲PostID。只需在每個表格中將其命名爲PostID即可。與所有其他鍵一樣。 – 2014-09-11 15:05:15