Рекомендуемая структура базы данных и поиск с использованием C # - PullRequest
0 голосов
/ 05 июня 2019

У меня есть ситуация, когда у меня есть таблица записей, которая выглядит примерно так (подробности удалены для краткости):

CREATE TABLE Records (
    RecordsId int,
    Description varchar(255)
);

Я хочу добавить несколько комментариев для каждой записи, используя другую таблицу, такую ​​как:

CREATE TABLE Comments (
    CommentsId int,
    Comment varchar(255)
);

Мне известно, что я могу связать таблицы, используя оператор соединения, но как мне эффективно получить информацию, если бы была одна запись с несколькими прикрепленными комментариями, без установленного количества комментариев?

Например,

RecordsId
Description
    - Comment 1
    - Comment 2
    - Comment 3
    - Comment .....

Мне известно, что я могу выполнить запрос, чтобы получить значение первой таблицы, а затем выполнить второй запрос для второй таблицы, но это будет очень медленно, когда яиметь большое количество записей.Я пытаюсь заполнить объект C # значениями.

1 Ответ

1 голос
/ 05 июня 2019

// добавление нескольких комментариев для каждой записи //

Вам необходимо добавить ФК из комментария обратно в запись.

CREATE TABLE dbo.Record (
    RecordKey int,
    Description varchar(255)
);

CREATE TABLE dbo.Comment (
    CommentsKey int,
    RecordKey int NOT NULL,
    Comment varchar(255)
);


ALTER TABLE [dbo].[Comment]
    ADD CONSTRAINT [FK_Comment_To_Record]
    FOREIGN KEY (RecordKey)
    REFERENCES [dbo].[Record] (RecordKey)

..

Другие вещи:

Используйте имя схемы для создания таблиц / объектов.«dbo» является встроенным по умолчанию.

Я предпочитаю единственное существительное для имени таблицы.это священная войнаЯ думаю, что таблица должна быть именем ENTITY.«Запись» и «Комментарий» являются именами сущностей.Опять же, это священная война.

Я предпочитаю MyObjectKey против "Id".

Подумайте об этом.Что такое "EmployeeId"?Это db-суррогатный ключ?Или это значение на значке, который работник носит на своей рубашке?«Ид» является неоднозначным.«Ключ» понятнее ИМХО.

......

Согласно вашему комментарию, «что бы я использовал с новым кодом?»

Я бы использовал DapperORM, который является микро-формой, но действительно очень хорошо работает.

Эта статья поможет вам:

https://medium.com/dapper-net/handling-multiple-resultsets-4b108a8c5172

Обратите внимание на этот комментарий:

Во избежание двухкратных обращений к базе данных для раздельного получения данных о клиентах и ​​заказах можно использовать функцию множественных результатов:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...