How to store several lists and their items The app I'm working on revolves around projects. Each project can contain several lists, and each list is made up of several items.  Each list relates to a single project.

Is it better to have one listitem table structured as such: id, list_id, event_id, content or 2 tables; one containing the relationship between project and list, and the other containing only list items and their relationship to a particular list?

Is it better to have just one table of which each row would be a list item, including that item's relationship to a project and the name of the list it belongs to:

list_item(id, project_id, list_name, content, &lt;&lt;other attributes&gt;&gt;)


or, have one list item table for all of the list items in the app and and a separate list table:

list(id, project_id, name, description, &lt;&lt;other attributes&gt;&gt;)
list_item(id, list_id, content, &lt;&lt;other attributes&gt;&gt;)
It sounds like you want three tables


PROJECT( project_id, &lt;&lt;other attributes&gt;&gt;)
LIST( list_id, project_id, &lt;&lt;other attributes (e.g. the name of the list)&gt;&gt; )
LIST_ITEMS( list_item_id, list_id, &lt;&lt;other attributes&gt;&gt;)


Combining the LIST and LIST_ITEM tables wouldn't be appropriate because then you'd be storing attributes of the list (i.e. the list's name and description) in multiple rows of the LIST_ITEM table rather than just once in a single row of the LIST table.