Централизованная идентификационная таблица и связь всей таблицы с одной таблицей в SQL - PullRequest
0 голосов
/ 01 марта 2019

У меня есть представление о структуре в SQL, и я не понимаю, хорошая она или плохая, помогите мне.

В моем приложении много таблиц с похожими столбцами (creatorUserId, creationDate, type, ...)и все они (таблицы) имеют отношение n к n с другими и самим собой.

Кажется, что все таблицы получены из базовой таблицы, которая включает в себя аналогичные столбцы и один столбец идентификаторов.Я назвал базовую таблицу Content и добавил таблицу с 2 столбцами (ContentParent_Id, ContentRelated_Id) для отношений «Содержимое».

Столбец идентификатора в таблице содержимого является идентификатором, а все остальные таблицы имеют один к одномусвязь по таблице содержимого.

Также добавлено несколько таблиц для управления общими свойствами всех таблиц, такими как порядок отображения, состояние удаления, статус проверки, количество посещений и т. д.

db diagram sample Вопросы:

  1. Должен ли я добавить отношение «один к одному» и таблицу и ContentTable, и не является ли это перегрузкой для SQL?

  2. Когда я выполняю запрос, в котором выбрано Чтение, связанное с человеком, это происходит медленнее, чем при добавлении отношения n2n с человеком и чтением.Почему?

  3. При выполнении запроса с Entity Framework с этим кодом и просмотре результата в SQL Server Profiler, эта таблица показывает множество столбцов, которые не используются.Почему?

     DB.Set<T>()
       .Include(q => q.Content)
       .Include(q => q.Content.ContentOrder)
       .Include(q => q.Content.ContentDelete)
       .Where(q => q.Content.ContentDelete.isDelete != 1)
    
  4. Пожалуйста, поделитесь любыми предложениями, которые повысят производительность этой структуры

Спасибо.

...