Я работаю над модулем рецептов (ASP.NET MVC, структура сущностей, сервер sql), и одна из сущностей, которые мне нужно настроить в базе данных, - это ингредиенты, их характеристики и переводы на ряд языков.
Я думал о создании двух таблиц следующим образом:
Table Ingredient
Id, nvarchar(20), primary key
EnergyInKCal, float
... other characteristics
Source, nvarchar(50)
Table IngredientTranslation
Id, nvarchar(20), primary key
LanguageCode, nvarchar(2)
Name, nvarchar(200)
Таким образом, каждый ингредиент будет определен один раз в таблице ингредиентов с уникальным кодом в качестве их первичного ключа, например:
'N32-004669', 64, 368, 'NUBEL'
и переведено в таблицу IngredientTranslation, например
* * 1010
Я думаю, что запрос к ингредиентам становится таким простым ... как вы думаете, будет ли хорошей идеей использовать код (который является nvarchar (20)) в качестве первичного ключа? Или просто bigint лучше, но тогда я должен использовать JOINS в своих запросах. Может быть, другие подходы, которые лучше - производительность мудрее?
РЕДАКТИРОВАТЬ: после прочтения ответов я изменил таблицы следующим образом:
Table Ingredient
Id, bigint, primary key
ExternalId, nvarchar(20)
EnergyInKCal, float
... other characteristics
Source, nvarchar(50)
Table IngredientTranslation
Id, bigint, primary key
IngredientId, bigint (relation with Id of Ingredient table)
LanguageCode, nvarchar(2)
Name, nvarchar(200)
Спасибо,
L