Путаница, использовать ли HAS или BELONGS TO для 1: 1 - PullRequest
0 голосов
/ 10 июня 2018

Я понимаю, где разместить внешние ключи для 1: 1.

Owner(pet_id) [HAS] Pet
Pet(owner_id) [BELONGS TO] Owner

Но рассмотрим пример, подобный:

Profile(section_id) [HAS] MoviesSection
Profile(section_id) [HAS] BooksSection

MoviesSection(profile_id) [BELONGS TO] Profile
BooksSection(profile_id) [BELONGS TO] Profile

Как мне решить, хочу ли я использовать HASили ПОЛУЧАЕТ, например, если я хочу "захватить все разделы профиля для одновременного отображения" .Такое ощущение, что любой из них будет работать?

ИМЕЕТ

profile
---
id movies_section_id books_section_id

movies_section
---
id favorite_movie favorite_actor

books_section
---
id favorite_book favorite_author

против

ПРИНАДЛЕЖИТ

profile
---
id

movies_section
---
id profile_id favorite_movie favorite_actor

books_section
---
id profile_id favorite_book favorite_author

Какие дополнительные вопросы я должен задать, чтобы решить?Например, если MoviesSection не может существовать без профиля, будет ли это иметь значение?

1 Ответ

0 голосов
/ 10 июня 2018

Возможно, не тот ответ, который вам нужен, но я хотел бы выразить его в терминах SQL.Раздел, о котором вы спрашивали:

Profile(section_id) [HAS] MoviesSection
Profile(section_id) [HAS] BooksSection

MoviesSection(profile_id) [BELONGS TO] Profile
BooksSection(profile_id) [BELONGS TO] Profile

будет выглядеть в SQL как:

create table profile (
  profile_id
);

create table moviessection (
  section_id,
  profile_id,
  constraint fk1 foreign key (section_id) references profile (profile_id)
);

create table bookssection (
  section_id,
  profile_id,
  constraint fk2 foreign key (section_id) references profile (profile_id)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...