2009-11-19 95 views
1

我有一個「學生」表,它應該有名稱列。但是我爲名稱創建了另一個表「StudentsName」,因爲名字有三部分:名字,中間名和姓氏。 現在我的問題是我應該如何關聯這兩個表?關聯數據庫中的兩個表

+2

你爲什麼會在這裏需要2個表有FK?一名學生只能有一個名字。我想這可能是兩個學生可能有相同的名字,中間和姓氏,但不足以分開這些名字。 – Dave 2009-11-19 19:25:03

+0

名字有三個部分?總是?我希望Eno(或者他的出生證上說的Brian Peter George St John Le Baptiste De La Salle Eno)從未註冊過你的課程。另外,一些文化有許多不同的方式來訂購姓名部分:「姓氏」可能是姓氏或名字,這取決於學生的背景。 – APC 2009-11-20 09:56:06

+0

我想你可以爭辯說,你的解決方案解決了我在之前的評論中的反對意見(通過允許任意數量的名稱部分,允許名稱部分的可變順序)。這種靈活性的代價就是性能 - 開放式結合只是爲了找回學生的名字。更不用說數據輸入的額外複雜性了。另一方面,它可以減少在提供數據倉庫時進行數據清理的需要,並提供減少重複條目的句柄。 – APC 2009-11-20 10:06:24

回答

1

如果「學生」表使用從「名」表ID,那麼你想從「學生」到「名」

1

是的,你需要一個表之間的主鍵/外鍵約束。唯一的問題是「哪個桌子是控制的桌子?」它可能是學生表,在這種情況下,名稱是指學生表中的學生ID。或者,它可以是名稱表,學生表在其中記錄學生的當前姓名(並且可能有其他表格記錄學生名字變化的歷史記錄 - 結婚,或者僅僅是法律名稱的變化)。