У меня довольно распространенная проблема, но я не знаю, как решить ее на практике и объяснить свой выбор / решение.
У меня есть ситуация, когда в базе данных есть две таблицы: Учетная запись и Контакт . Они оба представляют одни и те же данные, потому что один человек (Учетная запись) может иметь в списке контактов только тех людей, которые также имеют учетные записи в созданной системе. Так что это классическая связь один-ко-многим между таблицей Account и Contact.
Я решил использовать такую модель, что вместо одной есть две таблицы, ссылающиеся на себя. Я не уверен, что выбрал хорошо.
Вот как выглядят эти таблицы:
CREATE TABLE account (
id INT NOT NULL AUTO_INCREMENT,
login VARCHAR(20) NOT NULL,
firstName VARCHAR(15) NOT NULL,
lastName VARCHAR(40) NOT NULL,
passwordHash CHAR(50) NOT NULL,
PRIMARY KEY(id));
CREATE TABLE contact (
ownerid INT NOT NULL,
contactid INT NOT NULL,
PRIMARY KEY (ownerid, contactid),
FOREIGN KEY (ownerid) REFERENCES account(id),
FOREIGN KEY (contactid) REFERENCES account(id));
Моя проблема в том, что я не знаю, как создавать классы сущностей, используя аннотации. Возможно, я использовал несколько мастеров IDE, но это не решение для меня, потому что я даже не мог проверить, все ли правильно. Я бы предпочел полностью понять тему.
Моя цель - создать такую ситуацию, чтобы каждая учетная запись имела список контактов. Когда я удаляю контакт из этого списка, учетная запись не удаляется из таблицы учетных записей.
Я прочитал кое-что о обратный и каскад , но, к сожалению, я этого не чувствую.
Пожалуйста, покажите мне правильный путь для решения этой проблемы.