StalkerClasses
Новичок
Заметил что есть проекты, в которых например при редактировании новости есть поле выбора нескольких страниц или нескльких категорий.
При выборе одной страницы в новости - это можно характеризовать как M:1.
Но когда выбирается несколько страниц - то пишется список ID-шек 1,5,15,25,40 (своего рода M:M) - т.е. значения через запятую записываются в поле новости. Промежуточная таблица не используется.
Я даже поиск могу составить:
Выбрать все новости у которых категория 5, 25
Или лучше использовать
FIND_IN_SET-функцию
Тип поля ENUM использовать нет, возможности, т.к. в поле типа ENUM нужно перечислить жесткий список.
А страницы - это динамически каждый раз разное кол-во ID-шек.
Понимаю что это не революционность (реляционность) - но все же это связь... Какая?
При выборе одной страницы в новости - это можно характеризовать как M:1.
Но когда выбирается несколько страниц - то пишется список ID-шек 1,5,15,25,40 (своего рода M:M) - т.е. значения через запятую записываются в поле новости. Промежуточная таблица не используется.
Я даже поиск могу составить:
Выбрать все новости у которых категория 5, 25
PHP:
SELECT * FROM news
WHERE
(
fieldpagestop = Like '5,%' OR // ищем в начале строки
fieldpagestop = Like '%,5' OR // ищем в конце строки
fieldpagestop = Like '%,5,%' OR // ищем в середине строки
fieldpagestop = 5 // ищем точное совпадение
)
AND
(
fieldpagestop = Like '25,%' OR // ищем в начале строки
fieldpagestop = Like '%,25' OR // ищем в конце строки
fieldpagestop = Like '%,25,%' OR // ищем в середине строки
fieldpagestop = 25 // ищем точное совпадение
)
FIND_IN_SET-функцию
PHP:
->whereRaw('FIND_IN_SET(?,Tags)', [$colname])
->whereRaw("FIND_IN_SET(?, categories) > 0", [$q_category])
SQL:
CREATE TABLE tickets (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
priority ENUM('Low', 'Medium', 'High') NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
The priority column will accept only three values Low, Medium and High. Behind the scenes, MySQL maps each enumeration member to a numeric index. In this case, Low, Medium, and High are map to 1, 2 and 3 respectively.
Понимаю что это не революционность (реляционность) - но все же это связь... Какая?
Последнее редактирование: