powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / учесть принадлежность одной записи нескольким авторам
10 сообщений из 10, страница 1 из 1
учесть принадлежность одной записи нескольким авторам
    #38618107
marwell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброго времени суток!
имеется таблица users:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_login` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `user_password` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `user_hash` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  `rule` enum('admin','zavkaf','user') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'user',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_id_2` (`user_id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=14 ;
-- Дамп данных таблицы `users`
--

INSERT INTO `users` (`user_id`, `user_login`, `user_password`, `user_hash`, `rule`) VALUES
(1, 'marsel', '1f32aa4c9a1d2ea010adcf2348166a04', '7923faa5fd7e9b34489a30bad65b865d', 'admin'),
(13, '123', 'd9b1d7db4cd6e70935368a1efb10e377', '535a4755c9e6177d132fcdbc929e3397', 'user');

-- --------------------------------------------------------


и таблица public_journal:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
--
-- Структура таблицы `public_journal`
--

CREATE TABLE IF NOT EXISTS `public_journal` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_author` int(11) NOT NULL,
  `wak` tinyint(1) NOT NULL DEFAULT '0',
  `foreignn` tinyint(1) NOT NULL DEFAULT '0',
  `rins` tinyint(1) NOT NULL DEFAULT '0',
  `rins_impact` int(11) NOT NULL,
  `web_of_science` tinyint(1) NOT NULL DEFAULT '0',
  `web_of_science_impact` int(11) NOT NULL,
  `scopus` tinyint(1) NOT NULL DEFAULT '0',
  `scopus_impact` int(11) NOT NULL,
  `not_wak` tinyint(1) NOT NULL DEFAULT '0',
  `collaborators` text,
  `name_article` text NOT NULL,
  `name_journal` text NOT NULL,
  `year_public` year(4) NOT NULL,
  `number` int(11) NOT NULL,
  `str_begin` int(11) NOT NULL,
  `str_end` int(11) NOT NULL,
  `printer_sheet` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

--
-- Дамп данных таблицы `public_journal`
--

INSERT INTO `public_journal` (`id`, `id_author`, `wak`, `foreignn`, `rins`, `rins_impact`, `web_of_science`, `web_of_science_impact`, `scopus`, `scopus_impact`, `not_wak`, `collaborators`, `name_article`, `name_journal`, `year_public`, `number`, `str_begin`, `str_end`, `printer_sheet`) VALUES
(1, 1, 1, 1, 1, 11, 1, 1, 1, 12, 1, 'соавтор 1, соавтор 2', 'название статьи', 'название журнала', 2014, 777, 969, 696, 12),
(4, 1, 1, 0, 1, 11, 0, 1, 1, 12, 0, 'соавтор 1, соавтор 2', 'название статьи', 'название журнала', 2014, 777, 969, 696, 12),
(7, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, '1', '1', '1', 2011, 1, 1, 1, 1);

-- --------------------------------------------------------


прошу прощения, если названия непонятные...
суть такова: public_journal это публикации, у каждой публикации может быть несколько авторов. Т.е например если у публикации "статья1" два автора - Иванов и Петров, то каждый из этих авторов будет добавлять эту статью в список своих публикаций и в таблице будет две записи. Но статья то у нас по факту одна, и когда буду считать кол-во статей, вместо двух мне надо посчитать одну. Вопрос: как такую схему построить, чтобы можно было учитывать этот момент с несколькими авторами? Помощи прошу, потому что мне эта светлая идея не поддается...
Вариант с простым сравниванием поля "name_article" не подходит, потому что обязательно один из авторов ошибется хотя бы в одном символе при вводе данных...
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618140
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marwell,

если правильно понял.

Храните одну табличку (id_статьи, текст_статьи)
вторую - (id_статьи, id_автора)
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618141
marwell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapokmarwell,

если правильно понял.

Храните одну табличку (id_статьи, текст_статьи)
вторую - (id_статьи, id_автора)

то бишь во второй таблице в моем случае будет две записи с одинаковым id_статьи?
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618219
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marwell,

нет
имелась в виду стандартная реализация многие-ко-многим:
users {id,...}
public_journal {id,...} --тут все статьи будут по одному разу и без поля для автора
usr_to_journal {iduser,idjournal} --а вот тут будет связь статей и авторов
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618220
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, похоже, я ещё толком не проснулся и не понял вашего вопроса. Да, в таблице связи будет 2 записи с одинаковым id_статьи.
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618227
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirХотя, похоже, я ещё толком не проснулся и не понял вашего вопроса. Да, в таблице связи будет 2 записи с одинаковым id_статьи.
или больше если больше авторов
а так же несколько записей с одинаковыми id_автор, т.к. у автора может быть множество статей
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618229
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяили больше если больше авторовну, я отвечал вот на это:marwellТ.е например если у публикации "статья1" два автора - Иванов и Петров, то, потому и два.
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618230
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просто расширил ответ
а так же навания журналов вынес бы в отдельную таблицу
и
авторвторую - (id_статьи, id_автора)
сделал так
вторую - (id_статьи, id_автора,id_журнала)
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618427
marwell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо вам большое! буду пробовать
...
Рейтинг: 0 / 0
учесть принадлежность одной записи нескольким авторам
    #38618615
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marwell,

> о бишь во второй таблице в моем случае будет две записи с одинаковым id_статьи?

да, идея именно в этом. Это стандартный способ реализовывать связь один ко многим (одна статья - много авторов)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / учесть принадлежность одной записи нескольким авторам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]