The main benefit of a primary key has nothing to do with foreign keys. A primary key allows you to identify a single record in that table. Presumably, the system will have multiple articles. If all your application ever does is show a list of articles, then a primary key won't be much use. As soon as you want to show just a single, specific article, the primary key becomes mandatory.
When showing a single record to the end user, do not assume an index within the result set is enough. Consider a case when a user chooses to view article number 2. While viewing the list of articles, someone adds another article. Depending on how you sort the result set, showing "article 2" might end up showing article number 3.
Primary keys are also necessary for discrete, accurate updates. The primary key would be a discriminator value used in the UPDATE statement in order to ensure you don't accidentally update the wrong record (or no record at all).
update articles
set ...
where id = 5;
Same thing for DELETEs.
You need primary keys on a table if you want to reliably:
- View a single record
- Update a single record
- Delete a single record
Changing data without referencing the primary key value is risky in most use cases, and I do not recommend doing it.
having identical rows is not a problem because two or more articles can have the same title and content
ironically, this IS actually a problem if you don't set a primary key colum. In a table without a primary key, when two or more rows have identical values in all of their fields, the DBMS has no way to diferentiate one from the other, so in the end they will be treated as the same row and, for example, trying to update one will either update all of them, or cause an error as the DBMS is unable to identify which one you're actually trying to update