Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7430293
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T09:06:57+00:00 2026-05-29T09:06:57+00:00

I’ve put together a simple database for storing information on awards and nominations. I’ve

  • 0

I’ve put together a simple database for storing information on awards and nominations. I’ve tried to remove as much data redundancy as possible. Here’s how it’s presently looking:

enter image description here

The reason for the Nominated table is that I realised that one nomination would have many nominees. For example, the award Best Screenplay could go to Ken Levine and David Isaacs or Woody Allen or Joss Whedon, Andrew Stanton, Joel Cohen and Alec Sokolow.

Note: Award.name is the name of the award, e.g. Best Actor.

Thanks for pointing out any possible improvements.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T09:06:58+00:00Added an answer on May 29, 2026 at 9:06 am

    Minor notes

    1. I prefer singular for table and column names so Nominees becomes Nominee, Awards becomes Award, etc.

    2. Renaming the Award table as AwardCategory as @wildplasser suggested in comments.


    Major notees

    As @Olivier points out, the m::n relationships intermediate tables, like the Nominated one, will have a UNIQUE constraint on the compound (NomineeId, NominationId) . So, it’s better to drop the auto generated (surrogate) key and make the compound key the PRIMARY KEY. This is the natural key of the relation and there are several advantages of using it as the Primary Key. The surrogate key serves no purpose at all in this case except for having wider row and one more useless index. The two parts of the natural keys will be used for joining anyway.

    The same thing applies for the Nomination table! The compound (FilmId, AwardCategoryId, EventId) will be a UNIQUE key, to ensure that no film gets 2 nominations for the same award category for the same event, so it’s again better to drop the surrogate key and make this compound the primary key. Rethinking, we may have 2 nominations for the same AwardCategory for the same Film, say for two 'Best Supporting Actor' so we add a NominatioNo in the Primary Key (this can be handy later if we want to restrict the nominations for a certain category or for all to say the constant 5).

    Now, the (funny and interesting) thing is that the Nominated table has to be re-examined and have a compound (NomineedId, FilmId, AwardCategoryId, EventId) Primary Key – and just these 4 columns as attributes.

    I’m not sure of what exactly the Event and Ceremony table are meant to store, but lets assume that the Ceremony table is meant to store information about different ceremonies (e.g. 'Oscar Awards', 'Strawberry Awards') and the Event table is to store information about a year’s ceremony (e.g. ('Oscar', 2011), ('Oscar', 2012), ('Starwberry Awards', 2012)). So i’ll move the Year to the Event table and make the (CeremonyId, EventYear) the Priamry Key of Event. (I could very well be wrong this, you know your data better.).

    So, the Nomination.EventId is replaced by CeremonyId and EventYear and the Primary Keys of both Nomination and Nominated get even longer! (that’s one drawback of using natural keys as Primary Keys). Lets see what we’ve got so far:

    Database Design 1 http://img594.imageshack.us/img594/9592/oscarw.png

    You can easily add a NominationWinner (as a table with 1:1 relationship to Nomination) to store which nomination won which category (a Unique constraint on (CeremonyId, EventYear, AwardCategoryId) would enforce that). The design would be like this:

    Database Design 1 http://img845.imageshack.us/img845/2108/oscar3x.png

    Having so complex primary keys may look clumsy but it helps when joining tables. Imagine you want to find all Winners for the ‘Strawberry Awards’ for the 50s and 60s and only for the ‘Actresses’ categories and also show for what film the award was for. You don’t have to join all intermediate tables. Instead, you can retrive data using only the NominationWinner, Nominee, Ceremony, Film and AwardCategory tables (and using only the Nominated intermediate table):

    SELECT ne.Name                AS Winner
         , wi.EventYear           AS Year
         , aw.AwardCategoryTitle  AS Category
         , fm.Title               AS FilmTitle
    FROM
          NominationWinner AS wi
      JOIN 
          Ceremony AS ce
              ON ce.CeremonyId = wi.CeremonyId 
      JOIN
          AwardCategory AS aw
              ON aw.AwardCategoryId = wi.AwardCategoryId 
      JOIN
          Film AS fm
              ON fm.FilmId = wi.FilmId 
      JOIN
          Nominated nd
              ON  nd.CeremonyId    = wi.CeremonyId 
              AND nd.EventYear     = wi.EventYear 
              AND nd.AwardCategory = wi.AwardCategory 
              AND nd.NominationNo  = wi.NominationNo 
              AND nd.FilmId        = wi.FilmId  
      JOIN
          Nominee AS ne
              ON ne.NomineeId = nd.NomineeId 
    WHERE 
          ce.CeremonyTitle = 'Strawberry Awards'
      AND wi.EventYear BETWEEN 1950 AND 1969
      AND aw.AwardCategoryTitle LIKE '%Actress%'
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have just tried to save a simple *.rtf file with some websites and
That's pretty much it. I'm using Nokogiri to scrape a web page what has
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
Seemingly simple, but I cannot find anything relevant on the web. What is the
I am doing a simple coin flipping experiment for class that involves flipping a
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I have a text area in my form which accepts all possible characters from
I want to construct a data frame in an Rcpp function, but when I
I have a reasonable size flat file database of text documents mostly saved in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.