Associ|ative entity
Voor mijn opleiding moet ik een koppeltabel maken voor many to many relaties.
Alleen ik heb geen idee hoe ik dit moet doen.
ik heb dus twee tabellen die ik moet koppelen via zo'n tabel.
Kan iemand mij vertellen:
Waar kan ik een tutorial vinden hierover?
Wilt iemand mij hierbij helpen?( eventueel via mail of skype chat of een prive message hier.)
Of weet iemand een duidelijke site waar ik dit kan leren.
Alles en iedereen is welkom :)
Groet
Ik denk wel dat we je kunnen helpen. Vertel eens iets meer over die twee tabellen die je al hebt? Verder ben ik een beetje verrast door je titel. Hoe kom je aan een omschrijving als Associatieve entity? Heb je al iets in PHP geschreven?
De Associatieve entity heb ik van... Youtube.
- a_id
- a_name
- a_other
Tabel b:
- b_id
- b_name
- b_other
Tabel a_b
- a_id
- b_id
De vetgedrukte kolommen behoren tot de primary key.
Bovenstaande is de meest voorkomende vorm van een koppeltabel.
Code (php)
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
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
persons
-------------------------------------
person_id | name | email
-------------------------------------
1 | Frank | [email protected]
2 | Ger | [email protected]
3 | Rene | [email protected]
-------------------------------------
cars
-------------------------------------
car_id | brand | model
-------------------------------------
1 | Mercedes | sprinter
2 | Peugeot | 206
3 | Volvo | 740
-------------------------------------
persons_cars
-----------------------
person_id | car_id
-----------------------
2 | 1
1 | 2
3 | 2
-----------------------
-------------------------------------
person_id | name | email
-------------------------------------
1 | Frank | [email protected]
2 | Ger | [email protected]
3 | Rene | [email protected]
-------------------------------------
cars
-------------------------------------
car_id | brand | model
-------------------------------------
1 | Mercedes | sprinter
2 | Peugeot | 206
3 | Volvo | 740
-------------------------------------
persons_cars
-----------------------
person_id | car_id
-----------------------
2 | 1
1 | 2
3 | 2
-----------------------
Verkrijg alle JOINS (verbindingen tussen peronen en auto's)
Code (php)
1
2
3
4
2
3
4
SELECT p.person_id, p.name, p.email, c.car_id, c.brand, c.model
FROM persons_cars pc
JOIN persons p ON p.person_id=pc.person_id
JOIN cars c ON c.car_id=pc.car_id
FROM persons_cars pc
JOIN persons p ON p.person_id=pc.person_id
JOIN cars c ON c.car_id=pc.car_id
resultaat:
Code (php)
1
2
3
2
3
"1","Frank","[email protected]","2","Peugeot","206"
"2","Ger","[email protected]","1","Mercedes","Sprinter"
"3","Rene","[email protected]","2","Peugeot","206"
"2","Ger","[email protected]","1","Mercedes","Sprinter"
"3","Rene","[email protected]","2","Peugeot","206"
Verkrijg de Auto's die aan een persoon gekoppeld zijn
Code (php)
1
2
3
4
5
2
3
4
5
SELECT c.car_id, c.brand, c.model, p.person_id, p.name, p.email
FROM cars c
JOIN persons_cars pc ON c.car_id=pc.car_id
JOIN persons p ON p.person_id=pc.person_id
ORDER BY c.car_id
FROM cars c
JOIN persons_cars pc ON c.car_id=pc.car_id
JOIN persons p ON p.person_id=pc.person_id
ORDER BY c.car_id
resultaat:
Code (php)
1
2
3
2
3
"1","Mercedes","Sprinter","2","Ger","[email protected]"
"2","Peugeot","206","3","Rene","[email protected]"
"2","Peugeot","206","1","Frank","[email protected]"
"2","Peugeot","206","3","Rene","[email protected]"
"2","Peugeot","206","1","Frank","[email protected]"
Verkrijg ALLE Auto's
Code (php)
1
2
3
4
5
2
3
4
5
SELECT c.car_id, c.brand, c.model, p.person_id, p.name, p.email
FROM cars c
LEFT JOIN persons_cars pc ON c.car_id=pc.car_id
LEFT JOIN persons p ON p.person_id=pc.person_id
ORDER BY c.car_id
FROM cars c
LEFT JOIN persons_cars pc ON c.car_id=pc.car_id
LEFT JOIN persons p ON p.person_id=pc.person_id
ORDER BY c.car_id
resultaat:
Code (php)
1
2
3
4
2
3
4
"1","Mercedes","Sprinter","2","Ger","[email protected]"
"2","Peugeot","206","1","Frank","[email protected]"
"2","Peugeot","206","3","Rene","[email protected]"
"3","Volvo","740",NULL,NULL,NULL
"2","Peugeot","206","1","Frank","[email protected]"
"2","Peugeot","206","3","Rene","[email protected]"
"3","Volvo","740",NULL,NULL,NULL
Toevoeging op 20/12/2014 13:01:19:
Code (php)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
-- phpMyAdmin SQL Dump
-- version 4.2.13
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Gegenereerd op: 20 dec 2014 om 12:59
-- Serverversie: 5.5.40-MariaDB
-- PHP-versie: 5.4.16
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Databank: `vrienden`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `cars`
--
CREATE TABLE IF NOT EXISTS `cars` (
`car_id` int(11) NOT NULL,
`brand` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`model` varchar(100) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Gegevens worden gexporteerd voor tabel `cars`
--
INSERT INTO `cars` (`car_id`, `brand`, `model`) VALUES
(1, 'Mercedes', 'Sprinter'),
(2, 'Peugeot', '206'),
(3, 'Volvo', '740');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `persons`
--
CREATE TABLE IF NOT EXISTS `persons` (
`person_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
--
-- Gegevens worden gexporteerd voor tabel `persons`
--
INSERT INTO `persons` (`person_id`, `name`, `email`) VALUES
(1, 'Frank', '[email protected]'),
(2, 'Ger', '[email protected]'),
(3, 'Rene', '[email protected]');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `persons_cars`
--
CREATE TABLE IF NOT EXISTS `persons_cars` (
`person_id` int(11) NOT NULL,
`car_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Gegevens worden gexporteerd voor tabel `persons_cars`
--
INSERT INTO `persons_cars` (`person_id`, `car_id`) VALUES
(2, 1),
(1, 2),
(3, 2);
--
-- Indexen voor gexporteerde tabellen
--
--
-- Indexen voor tabel `cars`
--
ALTER TABLE `cars`
ADD PRIMARY KEY (`car_id`);
--
-- Indexen voor tabel `persons`
--
ALTER TABLE `persons`
ADD PRIMARY KEY (`person_id`);
--
-- Indexen voor tabel `persons_cars`
--
ALTER TABLE `persons_cars`
ADD KEY `car_id` (`car_id`,`person_id`), ADD KEY `person_id` (`person_id`);
--
-- AUTO_INCREMENT voor gexporteerde tabellen
--
--
-- AUTO_INCREMENT voor een tabel `cars`
--
ALTER TABLE `cars`
MODIFY `car_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT voor een tabel `persons`
--
ALTER TABLE `persons`
MODIFY `person_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- Beperkingen voor gexporteerde tabellen
--
--
-- Beperkingen voor tabel `persons_cars`
--
ALTER TABLE `persons_cars`
ADD CONSTRAINT `persons_cars_ibfk_2` FOREIGN KEY (`person_id`) REFERENCES `persons` (`person_id`),
ADD CONSTRAINT `persons_cars_ibfk_1` FOREIGN KEY (`car_id`) REFERENCES `cars` (`car_id`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- version 4.2.13
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Gegenereerd op: 20 dec 2014 om 12:59
-- Serverversie: 5.5.40-MariaDB
-- PHP-versie: 5.4.16
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Databank: `vrienden`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `cars`
--
CREATE TABLE IF NOT EXISTS `cars` (
`car_id` int(11) NOT NULL,
`brand` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`model` varchar(100) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Gegevens worden gexporteerd voor tabel `cars`
--
INSERT INTO `cars` (`car_id`, `brand`, `model`) VALUES
(1, 'Mercedes', 'Sprinter'),
(2, 'Peugeot', '206'),
(3, 'Volvo', '740');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `persons`
--
CREATE TABLE IF NOT EXISTS `persons` (
`person_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
--
-- Gegevens worden gexporteerd voor tabel `persons`
--
INSERT INTO `persons` (`person_id`, `name`, `email`) VALUES
(1, 'Frank', '[email protected]'),
(2, 'Ger', '[email protected]'),
(3, 'Rene', '[email protected]');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `persons_cars`
--
CREATE TABLE IF NOT EXISTS `persons_cars` (
`person_id` int(11) NOT NULL,
`car_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Gegevens worden gexporteerd voor tabel `persons_cars`
--
INSERT INTO `persons_cars` (`person_id`, `car_id`) VALUES
(2, 1),
(1, 2),
(3, 2);
--
-- Indexen voor gexporteerde tabellen
--
--
-- Indexen voor tabel `cars`
--
ALTER TABLE `cars`
ADD PRIMARY KEY (`car_id`);
--
-- Indexen voor tabel `persons`
--
ALTER TABLE `persons`
ADD PRIMARY KEY (`person_id`);
--
-- Indexen voor tabel `persons_cars`
--
ALTER TABLE `persons_cars`
ADD KEY `car_id` (`car_id`,`person_id`), ADD KEY `person_id` (`person_id`);
--
-- AUTO_INCREMENT voor gexporteerde tabellen
--
--
-- AUTO_INCREMENT voor een tabel `cars`
--
ALTER TABLE `cars`
MODIFY `car_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT voor een tabel `persons`
--
ALTER TABLE `persons`
MODIFY `person_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- Beperkingen voor gexporteerde tabellen
--
--
-- Beperkingen voor tabel `persons_cars`
--
ALTER TABLE `persons_cars`
ADD CONSTRAINT `persons_cars_ibfk_2` FOREIGN KEY (`person_id`) REFERENCES `persons` (`person_id`),
ADD CONSTRAINT `persons_cars_ibfk_1` FOREIGN KEY (`car_id`) REFERENCES `cars` (`car_id`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Gewijzigd op 20/12/2014 13:04:20 door Frank Nietbelangrijk