Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / учесть принадлежность одной записи нескольким авторам / 10 сообщений из 10, страница 1 из 1
17.04.2014, 22:04:34
    #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
17.04.2014, 22:45:59
    #38618140
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
учесть принадлежность одной записи нескольким авторам
marwell,

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

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

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

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

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

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

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

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


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