два вопроса относительно наилучшей производительности дизайна базы данных - PullRequest
0 голосов
/ 22 июня 2019

Я проектирую базу данных, но у меня есть некоторые сомнения относительно структуры и как ее оптимизировать.

первый вопрос относительно ключа varchar / string, у меня следующая структура таблицы

public class WordEntry
    {
        public Guid Id { get; set; }
        public string word { get; set; }

        public virtual List<DefinitionEntry> Definitions { get; set; }
        public virtual List<ExampleEntry> Examples { get; set; }
        public virtual List<SynonymEntry> Synonyms { get; set; }
        public virtual List<AntonymEntry> Antonyms { get; set; }
        public virtual PronunciationEntry Pronunciation { get; set; }
    }

где, как вы можете сказать, для целей SEO, я буду чаще запрашивать эту таблицу, используя фактическое слово, будет ли удаление ключа Guid и замена его строкой лучшей идеей для более быстрого запроса?подойдет ли это как FK для остальных таблиц в ef core?Будет ли лучше использовать индекс navchar (100) для фактического слова?

Второй вопрос, касающийся следующих двух таблиц:

public class SynonymEntry
{
    public Guid Id { get; set; }
    public Guid WordEntryId { get; set; }
    public Guid SynonymWordId { get; set; }
    public InformationSource Source { get; set; }

    public virtual WordEntry WordEntry { get; set; }
    public virtual WordEntry SynonymWord { get; set; }
}

public class AntonymEntry
{
    public Guid Id { get; set; }
    public Guid WordEntryId { get; set; }
    public Guid AntonymWordId { get; set; }
    public InformationSource Source { get; set; }

    public virtual WordEntry WordEntry { get; set; }
    public virtual WordEntry AntonymWord { get; set; }
}

они имеют идентичную структуру, и я не уверен, какаябудет лучше, если они будут отдельными таблицами, а не одной таблицей со столбцом дискриминации (который, насколько мне известно, будет индексом кластеризации, вы можете понять, почему он меня смущает)

Ценю ваш вклад в это иизвините, если он дублируется, но я не знал, как его искать.

...