2

我正在使用Flask-SQLAlchemy,但我想這個問題跨越不同的數據庫實現平臺。一個字段可以同時充當同一個表中的外鍵和主鍵嗎?

假設我有兩個錶款結構爲:

User(包含字段:user_id爲PRIMARY KEY,usernameemailpassword)和

UserDetails(與字段:f_namel_namedobgenderaddress,contact,biouser_id作爲FOREIGN KEY)。

難道是好有user_idUserDetails表作爲PRIMARY KEY只是因爲它是在同一個表是唯一的唯一列外鍵,而無需創建一個單獨的user_details_id場爲了這個目的?

+0

Foriegn鍵允許重複,但主鍵不允許。所以我想,你不應該那樣做。你爲什麼要爲此做出不同的表格?爲什麼不把它們合併? – Nivedita

+0

可能的重複:http://stackoverflow.com/questions/17636106/can-a-foreign-key-act-as-a-primary-key – Nivedita

+0

@Nivedita實際上有幾個原因做這樣的事情 - 看我的以下回答一些例子。 – Mureinik

回答

2

總之 - 是的。使用與主鍵和外鍵相同的字段來創建1:0..1的關係。

用戶可能只有一個記錄的詳細信息,但不能有多個記錄的詳細信息,並且不能提供不存在的用戶的詳細信息或與用戶沒有關聯的詳細信息(即null userId)。

如果您有許多用戶沒有詳細信息(因此將細節分離到不同的表格)或者細節非常沉重並且您不希望他們使用戶膨脹表的存儲,在這裏需要很多快速查詢。

+0

@Miureinik:你的答案是現貨!謝謝 –

相關問題