#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