Почему связи в таблице функционируют некорректно?

Как настроить связи между таблицами в базе данных, чтобы пользователи могли создавать и лайкать участки кода, сохраняемые в бд? Как можно избежать ошибки, которую ты описал и которая связана с циклическими или множественными путями каскадного удаления? Вот мой контекст базы данных и модели.
  • 17 июня 2024 г. 13:31
Ответы на вопрос 2
Для правильного функционирования связей между таблицами в базе данных, необходимо корректно определить типы связей и правила их обновления и удаления. 

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

1. Таблица "Пользователи" с полями:
   - user_id (PRIMARY KEY)
   - username
   - email
   - password

2. Таблица "Участки кода" с полями:
   - code_id (PRIMARY KEY)
   - user_id (FOREIGN KEY от таблицы "Пользователи")
   - code_text

3. Таблица "Лайки" с полями:
   - like_id (PRIMARY KEY)
   - user_id (FOREIGN KEY от таблицы "Пользователи")
   - code_id (FOREIGN KEY от таблицы "Участки кода")

Таким образом, у вас будет связь между пользователем, участком кода и лайками. Чтобы избежать ошибок при удалении, примените правила обновления и удаления:

- Для связи между таблицами "Пользователи" и "Участки кода" используйте тип связи "Один ко многим". При удалении пользователя, участки кода останутся в базе данных.
- Для связи между таблицами "Пользователи" и "Лайки", также используйте тип связи "Один ко многим". При удалении пользователя, его лайки также останутся в базе данных.
- Для связи между таблицами "Участки кода" и "Лайки", используйте тип связи "Многие ко многим". При удалении участка кода, удаляются только связанные с ним лайки, но не пользователи.

Таким образом, вы сможете настроить связи между таблицами в базе данных таким образом, чтобы избежать ошибок и обеспечить корректное функционирование вашего приложения.
Господи, изучите сначала теорию о работе с базами данных, перед тем как задавать такие вопросы, потому что это просто смешно уже... <br/> <br/> Во первых, если вам нужно установить связь между этим <br/> <pre><code class="cs">public List&lt;CodeSnippet&gt; LikedCodeSnippets { get; set; } = new List&lt;CodeSnippet&gt;();</code></pre> <br/> <br/> И этим <br/> <pre><code class="cs">public List&lt;User&gt; UsersWhoLiked { get; set; } = new List&lt;User&gt;();</code></pre> <br/> <br/> Вам нужна дополнительная таблица. Почему? Потому что тут связь <b>много-ко-многим</b> . Вот она: <br/> <pre><code class="cs">public sealed class UserCodes
{
    public int UserId { get; set; }
    public User User { get; set; }

    public int CodeId { get; set; }
    public CodeSnippet Code { get; set; }
}</code></pre> <br/> <br/> Через эту таблицу далее конфигурируете связь <a href="https://www.learnentityframeworkcore.com/configuration/many-to-many-relationship-configuration" rel="nofollow">много-ко-многим</a> <br/> <br/> Что значит эта запись? <br/> <code class="cs">public User User { get; set; } = null!;</code> <br/> <br/> В чём смысл говорить, что она <code>null</code> и ставить <code>!</code> как обозначение того, что она <code>not null</code> ?
Похожие вопросы