Junction tables are a standard practice in relational database design.
If you have a many-to-many relationship between two entities, the standard way to represent them is with three tables.
Two of the tables are entity tables, with a primary key. A junction table lies between them (logically) and contains two foreign keys, one that references each entity table. Often, these two foreign keys will be the only two columns in the junction table.
Демек, това е таблица, която осигурява логическата свързаност между други две таблици, и обикновно съдържа само техните Primary keys.
Има три типа релации в релационните бази данни:
- One to one, когато на даден запис от т.н. parent таблица отговаря само един запис от т.н. child таблица.
- One to mаny – когато на даден запис от т.н. parent таблица отговаряш N на брой записа от т.н. child таблица
- Many to many – когато на даден запис от т.н. parent таблица съответстват както N на брой записи от т.н. child таблица. Но също и даден запис от т.н. child таблица съответстват N на брой записи от т.н. parent таблица. За какъв практически пример се сещам…
Имаме таблица orders и таблица order_items. Ясно е коя какво съдържа – за дадена поръчка – N на брой items. Но всеко от тези items на дадената поръчка, могат да са част и от друга поръчка.
По принцип, many to many релация става с точно такава таблица. Не знам как можеш да обединиш две таблици в many to many релация директно. То по принцип тази релация не на практика директно непостижима в релационните бази, всичко се разлага винаги до one to many така или иначе.