让主键说,我有两个表,用户和语言在多对多表
user (Table Name)
-----------------
user_id (PK)
user_name
mobile
...
....
language (Table Name)
---------------------
lang_code (PK)
lang_name
...
....
的问题是,如果我想增加用户和语言表(多对多)之间的关系,这是一个正确的方法 ?
solution 1
user_language (Table Name)
--------------------------
user_id (FK)
lang_code (FK)
or solution 2
user_language (Table Name)
--------------------------
user_id (PK)
lang_code (PK)
or solution 3
user_language (Table Name)
--------------------------
user_lang_id (PK)
user_id (FK)
lang_code (FK)
我看到很多人在多桌上添加主键,但我认为这并不重要,并且浪费空间。所以哪个是对的?
BTW我使用PostgreSQL的
复合主键(user_id,lang_code),两者都是外键。 – Esailija
考虑一下我在昨天发布在[这个相关答案](http://stackoverflow.com/a/13259085/939860)中的n:m关系的完整代码示例。这就是你通常这样做的方式。 –