代码之家  ›  专栏  ›  技术社区  ›  atkayla

混淆是使用has还是属于1:1

  •  0
  • atkayla  · 技术社区  · 6 年前

    我知道在哪里放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
    

    我如何决定是否要使用“拥有”或“属于”,例如,是否要使用 “抓取配置文件的所有部分立即显示” . 感觉两种方法都有效?

    profile
    ---
    id movies_section_id books_section_id
    
    movies_section
    ---
    id favorite_movie favorite_actor
    
    books_section
    ---
    id favorite_book favorite_author
    

    VS

    属于

    profile
    ---
    id
    
    movies_section
    ---
    id profile_id favorite_movie favorite_actor
    
    books_section
    ---
    id profile_id favorite_book favorite_author
    

    我应该问哪些其他问题来决定?例如,如果没有配置文件,电影节就不能存在,那会有什么不同吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   The Impaler    6 年前

    也许不是你想要的答案,但我想用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)
    );