You could have those 1000 records, but you should not have them because 1000 users have listed the exact same item. You should only have that if 1000 different stores each sell an item call "paint" at different prices. And even if two different stores sell the exact same item at the exact same price using the exact same name, you should have one item entry per store (and going with the suggested db schema above, you will), since it's possible that one store changes the price in the future while the other doesn't.
All you'd need to do is add the constraints, both primary keys and foreign keys
Store
- id
- store_name
PRIMARY KEY(id)
lists
- id
- store_id -- I would remove this, since each item has a store_id
- user_id
- item_id
- name
- dt
PRIMARY KEY(id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (item_id) REFERENCES (id)
The same thing should of course be done for items and members. Looking at "FOREIGN KEY (item_id) REFERENCES (id)" above, this means that a member can't add a non-existing item to their list. Furthermore, it also prevents deleting this item unless all references to this item are deleted from "lists".
You could modify this behaviour by using
FOREIGN KEY (item_id) REFERENCES (id) ON DELETE CASCADE
which would mean that you could now delete an item from items and the DBMS would automatically remove all references to it in the lists table (assuming no other table has any references to this item, or that all such references also have ON DELETE CASCADE)
But since you also said that members can create multiple lists, you should also normalize the lists table
lists
- id
- member_id
- name
- dt
lists_items
- list_id,
- item_id
- dt -- if you want/need to know both when each individual item was added
and once again, foreign keys for lists.member_id, lists_items.list_id and lists_items.item_id.