Вопрос о проектировании БД

Печать / RSS
+1
1. php (07.05.19 / 02:59)
Пацак
Интересный вопрос у меня возник: как можно сохранить в БД несколько значений для одной сущности? Например, мне нужно сохранить для одного имени кол-во книг на полке, а у него их несколько. Как можно организовать бд с учетом таких обстоятельств?

Добавлено через 03:21 сек.
Причем, если у кого-то могут быть общие? oy.gif
0
2. Кевин Митник (07.05.19 / 06:33)
Айсберг Визави
Это связи один-ко-многим. Реализация очень простая: используя внешний ключ сущности, мы указываем его для каждого атрибута.
0
3. Андрей (07.05.19 / 08:22)
Землянин
@php, ты не думал хранить инфу обработаную к примеру serialize(), а на выходе его прочитывать
0
4. php (07.05.19 / 08:59)
Пацак
Типа того, только организовать архитектуру бд таким образом, чтобы можно было без нее обойтись.
Не создавать же по таблице для всего подряд?
0
5. php (07.05.19 / 15:51)
Пацак
Может быть я и так уже все сделал, только сам пока об этом не догадываюсь? D.gif
INSERT INTO BooksAuthors
(ArticleId, AuthorId)
VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 4),
(7, 5),
(7, 6),
(7, 7),
(7, 8)


Это запрос к таблице-посреднику между таблицами со статьями и с авторами. Эта таблица устанавливает соответствие между статьями и авторами посредством идентификаторов. Вопрос-то на самом деле следующий: при такой структуре я могу сделать выборку авторов, например, тех у кого >=5, >= 10 статей? Мне просто хватит алгоритма. Или бд спроектирована неправильно для этого? Вот решить этот вопрос затрудняюсь(
0
6. JustZero (07.05.19 / 16:03)
Оранжевые штаны
@php, наверное лучше счётчик сделать в авторов)
0
7. php (07.05.19 / 16:45)
Пацак
@JustZero, бл@ ну и гемор! Тип SERIAL подойдет для этого?

Добавлено через 03:08 сек.
Я могу счетчик сделать с помощью пхп кода и добавлять его в бд, когда что-то новое появляется, а чиста средствами mysql это можно замутить как-нибудь? Кстати, в таблице с авторами не получится счетчик сделать, ведь автоинкрементный тип только один должен быть.
0
8. JustZero (07.05.19 / 17:02)
Оранжевые штаны
@php, какой гемор? Поле типа int в которое плюсуешь при написании или минус при удалении?
0
9. php (07.05.19 / 17:25)
Пацак
@JustZero, ну да, поле с автоинкрементом может быть только одно, для счетчика чего либо отдельную таблицу делать надо тогда наверное.
М.б. выборку лучше придумать типа: select такое-то поле from такой-то таблица и вывести количество title_id у каждого из авторов?
0
10. php (07.05.19 / 19:23)
Пацак
Кому интересно если, так сделал:
SELECT * FROM `co_auth` WHERE `title_id` IN (SELECT `author_id` FROM `co_auth` GROUP BY `author_id` HAVING COUNT(title_id) < 5)
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск