История изменений
Исправление MOPKOBKA, (текущая версия) :
Зачем так много таблиц? Нужно завести одну таблицу, назову ее t_entity
ID INTEGER AUTO_INCREMENT,
ENTITY TEXT,
NAME TEXT,
LINK_SRC INTEGER,
LINK_DST INTEGER
Теперь можно создавать группы и альбомы, создаешь исполнителя AC/DC, просто вставляя строку с такими значениями столбцов (неуказанные пусть будут NULL)
ID=1
ENTITY=artist
NAME=AC/DC
Создаешь альбом Highway to Hell
ID=2
ENTITY=album
NAME=Highway to Hell
Даешь альбому авторство AC/DC
ID=3
ENTITY=link_author
NAME=Исполнитель
LINK_SRC=2
LINK_DST=1
А теперь можно теперь создать не только дополнительных авторов, но и студию
ID=4
ENTITY=studio
NAME=Roundhouse
И привязать ее к альбому
ID=5
ENTITY=link_author
NAME=Студия
LINK_SRC=2
LINK_DST=4
И даже не пришлось менять структуру таблицы, а ведь такое ты явно заранее не продумал, да?
Выбрать все альбомы группы AC/DC можно так
SELECT t_entity.* FROM t_entity
INNER JOIN t_entity t_entity_link_author
ON t_entity.ENTITY = "album"
AND t_entity_link_author.ENTITY = "link_author"
AND t_entity.ID = t_entity_link_author.LINK_SRC
AND t_entity_link_author.LINK_DST=1;
Исправление MOPKOBKA, :
Нужно завести одну таблицу, назову ее t_entity
ID INTEGER AUTO_INCREMENT,
ENTITY TEXT,
NAME TEXT,
LINK_SRC INTEGER,
LINK_DST INTEGER
Теперь можно создавать группы и альбомы, создаешь исполнителя AC/DC, просто вставляя строку с такими значениями столбцов (неуказанные пусть будут NULL)
ID=1
ENTITY=artist
NAME=AC/DC
Создаешь альбом Highway to Hell
ID=2
ENTITY=album
NAME=Highway to Hell
Даешь альбому авторство AC/DC
ID=3
ENTITY=link_author
NAME=Исполнитель
LINK_SRC=2
LINK_DST=1
А теперь можно теперь создать не только дополнительных авторов, но и студию
ID=4
ENTITY=studio
NAME=Roundhouse
И привязать ее к альбому
ID=5
ENTITY=link_author
NAME=Студия
LINK_SRC=2
LINK_DST=4
И даже не пришлось менять структуру таблицы, а ведь такое ты явно заранее не продумал, да?
Выбрать все альбомы группы AC/DC можно так
SELECT t_entity.* FROM t_entity
INNER JOIN t_entity t_entity_link_author
ON t_entity.ENTITY = "album"
AND t_entity_link_author.ENTITY = "link_author"
AND t_entity.ID = t_entity_link_author.LINK_SRC
AND t_entity_link_author.LINK_DST=1;
Исходная версия MOPKOBKA, :
Нужно завести одну таблицу, назову ее t_entity
ID INTEGER AUTO_INCREMENT,
ENTITY TEXT,
NAME TEXT,
LINK_SRC INTEGER,
LINK_DST INTEGER
Теперь можно создавать группы и альбомы, создаешь исполнителя AC/DC
ID=1
ENTITY=artist
NAME=AC/DC
Создаешь альбом Highway to Hell
ID=2
ENTITY=album
NAME=Highway to Hell
Даешь альбому авторство AC/DC
ID=3
ENTITY=link_author
NAME=Исполнитель
LINK_SRC=2
LINK_DST=1
А теперь можно теперь создать не только дополнительных авторов, но и студию
ID=4
ENTITY=studio
NAME=Roundhouse
И привязать ее к альбому
ID=5
ENTITY=link_author
NAME=Студия
LINK_SRC=2
LINK_DST=4
Выбрать все альбомы группы AC/DC можно так
SELECT t_entity.* FROM t_entity
INNER JOIN t_entity t_entity_link_author
ON t_entity.ENTITY = "album"
AND t_entity_link_author.ENTITY = "link_author"
AND t_entity.ID = t_entity_link_author.LINK_SRC
AND t_entity_link_author.LINK_DST=1;