2010-09-03 19 views
4

我正在寫一個程序,用戶名稱爲RFC標識的用戶。在墨西哥,這個RFC是一個13個字符的字符串,用於識別我國的納稅人。全國沒有人擁有相同的RFC,所以我認爲這將是一個完美的自然主鍵。此RFC將作爲其他表中的外鍵。你認爲這是一個自然主鍵嗎?

事情是,我關心繫統性能。你認爲使用與每個RFC相關的自動遞增整數值會更好嗎?

乾杯!

+0

13字節與int無符號4字節 - 這是不容易的。 – 2010-09-03 18:07:58

回答

1

你確定只有墨西哥納稅人會成爲這個系統的用戶嗎?也就是說,你是否確定只有具有RFC的個人現在和將來纔會成爲這個系統的用戶?

出於這個原因和(同樣重要),性能方面的原因,我想我會去的自增整數ID。

+0

謝謝!我很高興大家都幫助我理解性能問題在這一點上如何不重要。 – expora 2010-09-03 17:54:48

8

在擔心執行功能之前,請考慮一下隱私。墨西哥的RFC與美國的社會保障一樣嗎?如果是這樣,你肯定不想建立一個依賴於它的系統,因爲你可能會被迫以不同的方式對待它/加密它。

我會建議一個自動增加的整數鍵並存儲RFC您的隱私需求。

+0

這也是一個好點。 – Hammerite 2010-09-03 17:43:19

+0

確實不錯。謝謝。 – expora 2010-09-03 17:49:14

1

作爲一般規則,我寧願使用一個自動遞增的整數作爲行ID作爲主鍵和外鍵。這並不是說你不會爲了快速搜索而在RFC上編制索引。但是你可能遇到RFC不正確並且需要改變的情況...如果它的主鍵和外鍵,那麼它必須在整個地方被改變。

使用自動遞增的整數不會改變你的查詢看起來不太像,並在實用方面,小尺寸(以字符)數字可能會使調試更加方便。

+0

謝謝。我也會考慮這個。我使用MySQL InnoDB,我想我可以很容易地更新關聯,這要歸功於這個引擎的特性,但是,你有一個好點! – expora 2010-09-03 17:53:52

4

我的想法是,任何受政治喜好,包括「哇,再也不會有使用這個人數超過一個人」是一個用於創建自己的主鍵(自動增加INT)紅旗。

0

看來,在西班牙有可能即將105,000人共享同一個「獨一無二」的身份證與別人數(出約4500萬人口)。當人們死亡時,他們的身份證號碼可能會被重複使用,所以這也可能是您的數據集的問題。然後有些人根本沒有身份證號碼。

我會親自去UUIDs。但是別忘了寫一些測試:最近我在Python 2.5中被implementation bug咬了。

0

這實際上是一個信息需求問題,而不是數據庫設計問題。
您是否需要通過RFC來識別相關人員?您是否需要輸入沒有RFC的人員,或者其RFC已被分配給以前輸入的其他人員?

或者你是否可以自由設定自己的要求?

一旦你知道了要求,設計就會很容易地流動。

+0

你是對的這是一個分析問題,但在做出這個決定時,我想考慮這些細節。 – expora 2010-09-06 17:12:25

0

您聲明「全國沒有人擁有相同的RFC」。一個人在一生中可能有多個RFC嗎?不知道墨西哥,但在新西蘭,我們的稅務部門在宣佈破產時向其發放新的稅號。這意味着他們有2個或更多的號碼。只是別的你要檢查。

+0

墨西哥的一個人不可能擁有一個以上的人,因爲這是非法的。這部分數據中的一些數字包括您的生日信息,政府增加更多信息以獲取每個人的唯一ID。如果您因開設新公司而需要支付更多稅費,政府要求您獲得不以您名下的不同RFC,而是您公司的名稱。 – expora 2010-09-06 17:18:35

相關問題