Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
9 / 9 / 8
Регистрация: 03.07.2015
Сообщений: 219
1

Relation n:m

21.12.2015, 18:53. Показов 556. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плиз с примером. Существует в реляцинных базах данных, такое отношение как напиример много-много.
Т.е. много учеников из таблицы "Ученики" к множеству учителей из таблицы "Учителя". Данная реляция обычно используестя редко и для для этого, чтобы ее не использовать, вставляем вспомагательную таблицу между таблицами "Ученики" и "Учителя". Да вот что-то не могу придумать этой вспомогательной(промежуточной) таблицы(пусть хотя бы на этом примере).Идеи то есть но не знаю правильны ли они. Например введем промежуточную таблицу "Класс", тогда каждый ученик к одному классу(1:n) и каждый учитель к множеству классов т.е. снова (n:m).Помогите с примером промежуточной таблицы плиз, либо какой-либо другой пример тоже будет к стати.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2015, 18:53
Ответы с готовыми решениями:

Написать query для relation algebra
Привет. На кону моя судьба, помогите пожалуйста с решением моей лабораторной

Как создать Internal relation в таблице MYISAM на языке SQL
В некоторых версиях PHPMyAdmin есть ссылка "связи". С помощью нее устанавливается Internal...

DataSet порядок Relation
Пример есть DataSet. В нем 2 таблицы. Код Наименование ID --------------------- ID...

Relation HasMany doesn't work
нужно отобразить количество задач (name в таблице ) для каждого проекта ( projects в таблице...

1
23 / 23 / 9
Регистрация: 09.07.2014
Сообщений: 95
22.12.2015, 10:40 2
Дамп примера:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
SET FOREIGN_KEY_CHECKS=0;
 
-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `year` INT(11) NOT NULL,
  `letter` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES ('1', '1', 'a');
INSERT INTO `class` VALUES ('2', '1', 'b');
INSERT INTO `class` VALUES ('3', '1', 'c');
INSERT INTO `class` VALUES ('4', '2', 'a');
INSERT INTO `class` VALUES ('5', '2', 'b');
INSERT INTO `class` VALUES ('6', '2', 'c');
INSERT INTO `class` VALUES ('7', '3', 'a');
INSERT INTO `class` VALUES ('8', '3', 'b');
INSERT INTO `class` VALUES ('9', '3', 'c');
 
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  `class_id` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
 
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', 'Aomori Kouji', '1');
INSERT INTO `student` VALUES ('2', 'Kimura Aoi', '3');
 
-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', 'Suzuki Minami');
INSERT INTO `teacher` VALUES ('2', 'Aoi Kaori');
INSERT INTO `teacher` VALUES ('3', 'Ishikawa Kyousuke');
 
-- ----------------------------
-- Table structure for teacher_class_map
-- ----------------------------
DROP TABLE IF EXISTS `teacher_class_map`;
CREATE TABLE `teacher_class_map` (
  `teacher_id` INT(11) NOT NULL,
  `class_id` INT(11) NOT NULL,
  PRIMARY KEY (`teacher_id`,`class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
 
-- ----------------------------
-- Records of teacher_class_map
-- ----------------------------
INSERT INTO `teacher_class_map` VALUES ('1', '1');
INSERT INTO `teacher_class_map` VALUES ('1', '2');
INSERT INTO `teacher_class_map` VALUES ('1', '4');
INSERT INTO `teacher_class_map` VALUES ('2', '1');
INSERT INTO `teacher_class_map` VALUES ('2', '4');
INSERT INTO `teacher_class_map` VALUES ('2', '6');
INSERT INTO `teacher_class_map` VALUES ('3', '1');
INSERT INTO `teacher_class_map` VALUES ('3', '2');
INSERT INTO `teacher_class_map` VALUES ('3', '3');
Примеры запросов:

Распределение классов по учителям

SQL
1
2
3
4
5
6
SELECT
    teacher.`name`,
    CONCAT(class.`year`, class.`letter`) AS class_name
FROM teacher_class_map AS tcmap
INNER JOIN teacher ON teacher.id = tcmap.teacher_id
INNER JOIN class ON class.id = tcmap.class_id
Узнаем, у каких учителей есть ученики

SQL
1
2
3
4
5
6
7
8
SELECT
    teacher.`name` AS teacher_name,
    CONCAT(class.`year`, class.`letter`) AS class_name,
    student.`name` AS student_name
FROM teacher_class_map AS tcmap
INNER JOIN teacher ON teacher.id = tcmap.teacher_id
INNER JOIN class ON class.id = tcmap.class_id
INNER JOIN student ON student.class_id = class.id
1
22.12.2015, 10:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2015, 10:40
Помогаю со студенческими работами здесь

Set Relation! проблема в Лотусе?
Не удается отобразить на одной форме главный документ и ответы именно на этот документ. Взял...

Ошибка при подключении к Postgresql: relation does not exist
Доброго времени суток, создал форму и написал к ней код, но подключатся не хочет. Может кто...

Вывод из таблицы базы данных и ошибка "relation does not exists"
Доброе времени суток. Нужно сделать программу работающий с БД, созданная при помощи postgresql...

pgAdmin - Ошибка: relation "Tablename" already exists
Я совсем новичок в работе с базами данных. Но работа требует их освоения. Причем, освоения именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru