jak przechowywać kilka rodzaji FOREIGN_KEY w jednej kolumnie

0

mam tablelę media która zawiera klucze obce z tabel do których media moga sie odnosić.
Mianowicie przyjmijmy że mamy wypozyczalnie kaset video
media bedą to zwyczajne przechowywanie zdjeć czyli nazwa zdjecia, ściezka dostępu
uzytkownik i dajmy na to kaseta video moga posiadać takie zdjęcia. Czyli mamy

CREATE TABLE media (
  MEDIA_ID bigint(20) ,

  VIDEO_ID bigint(20) ,
  USER_ID bigint(20) ,

  PATH TEXT,
  
  PRIMARY KEY (MEDIA_ID),

) DEFAULT CHARSET=utf8;

CREATE TABLE video (
  VIDEO_ID bigint(20) ,

  DESC TEXT
  
  PRIMARY KEY (VIDEO_ID),

) DEFAULT CHARSET=utf8;

CREATE TABLE user(
  USER_ID bigint(20) ,

  NAME TEXT
  
  PRIMARY KEY (USER_ID),

) DEFAULT CHARSET=utf8;

 

Jak zauważyliście VIDEO_ID i USER_ID w tabeli media sa kluczami obcymi. Jezeli w tabeli media przechowuję video to VIDEO_ID != null a USER_ID == null.
W miare rozrostu aplikacji (czyli dodawania typów mediów) będe musiał dokładac nową kolumne w media z kluczem obcym.
Jak można to zrobić lepiej i pozbyć sie tych dodatkowych kolumn?
myślałem żeby media wyglądaly coś na zasadzie:

 
CREATE TABLE media (
  MEDIA_ID bigint(20) ,

  TYPE_ID bigint(20) ,
  TYPE_DESCRIPTION bigint(20) ,

  PATH TEXT,
  
  PRIMARY KEY (MEDIA_ID),

) DEFAULT CHARSET=utf8;

ale zupełnie nie wiem jak sie do tego zabrac....
chciałem to zrobić używając JPA

0

Poczytaj o wzorcu Entity Attribute Value.

1 użytkowników online, w tym zalogowanych: 0, gości: 1