Как я могу ссылаться на отношения «многие ко многим», используя идентификаторы, состоящие из последовательных чисел с тире?

#sql #database-design #ids

Вопрос:

Одна таблица «Данные» ко многим таблицам «Комментарии». Во многих случаях комментарии применяются к диапазону идентификаторов данных. Например, строка комментариев подключается к идентификаторам data_id (3-60, 90, 100-130). Как должен быть реализован дизайн базы данных, взаимосвязи и типы данных. Должны быть легкодоступные идентификаторы для объединений, поиска и т.д. Стремясь создать такую связь, чтобы хранить несколько идентификаторов data_id в каждой строке таблицы комментариев. Как это будет реализовано с точки зрения структуры базы данных и типов данных?

Комментарии:

1. Пожалуйста, включите некоторые примеры данных из обеих таблиц.

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

3. То, что вы описываете,-это взаимосвязь «многие ко многим» между данными и комментариями. Такие отношения требуют промежуточной таблицы «соединения» или «сопоставления» для реализации отношения «многие ко многим».

4. Как бы это выглядело с точки зрения структуры базы данных и типов данных?

Ответ №1:

Это может помочь вам прочитать/посмотреть о типах отношений SQL: один к одному, один ко многим и многие ко многим.

В вашем случае, если одна строка комментария связана со многими строками данных, но строка данных содержит только одну строку комментария, вы должны поместить идентификатор комментария в строку данных (один ко многим).

Если строка комментария связана со многими строками данных, а строки данных могут быть связаны со многими комментариями, вам следует создать третью таблицу с идентификатором строки данных и идентификатором строки комментария для их связи (многие-ко-многим).

Запрос «Один ко многим»:

 SELECT * FROM data
LEFT JOIN comment ON data.comment_id = comment.id
WHERE comment.id = 1
 

Запрос «Один ко многим»

 SELECT * FROM data
LEFT JOIN data_comment ON data. id = data_comment.data_id
LEFT JOIN comment ON data_comment.comment_id = comment.id
WHERE comment.id = 1
 

«data_comment» — это таблица отношений с data_id и comment_id