As for the primary key, my suggestion is to auto-increment it. Do not use business-related names, just use id. All efficiency issues can be solved with indexes. Because of the immutable nature of the primary key, if you choose it incorrectly, it will cause unpredictable problems in the future. For example, if you use int type as the ID of an article, but if the number of articles exceeds the maximum value of unsigned integer in the future, you will not be able to change the primary key to bigint. Or in order to give the user a unique ID, an auto-incrementing primary key is used, but if other project users want to be merged in the future, he will do the same. At this time, in order to distinguish different projects, a prefix may be added before the user ID. At this time, the value of the primary key cannot be modified. The reason why the primary key is called the primary key cannot be changed at any time, so the best solution is to use an auto-incrementing numeric ID as the primary key, and do not give this primary key a business-related meaning.