身份證引發的討論

2021-08-22 07:47:05 字數 476 閱讀 7665

跟同事聊天的時候得知他的身份證號跟別人重號了,而他的身份證恰巧又丟了,所以帶來了很多麻煩,正在考慮如何補辦的問題,同時引發我們的一次討論。

說身份證應該每個人的都不一樣,應該是主鍵才對,為什麼會重呢?至少也應該設定乙個唯一鍵的約束吧,比好比自己的mail做主鍵不就是很好的解決嗎。我考慮之後想大概是這樣的,中國人都知道原來的身份證是15位的,後來才公升級到了18位,原來的時候設計明顯有缺陷,可能那時候覺得同乙個地方同一天的人超過100歲的人不會超過999人吧(忽略性別),而且主鍵肯定不是用的身份證號,後來18位之後由原來的出生日期只有後兩位增加到了4位,末尾加了個機驗碼,雖然我也不知道最後這個碼的用處。現在應該是可以避免重複了,但是由於資料庫中已經有很多身份證重複所以身份證這個欄位是不可以加唯一約束的,可以推斷出15位時的老身份證也沒有唯一約束,也許資料庫設計的時候有這個鍵,但是重複身份證的人太多了,沒有辦法在短時間處理,只好出此下策了。

總之在電視上也見過身份證重號有多麼麻煩,希望大家沒碰見這種事。

身份證正則

身份證正則,不僅要考慮輸入的符合身份證規則,還需考慮最後一位符合驗證需求。身份證15位編碼規則 dddddd yymmdd xx p dddddd 6位地區編碼 yymmdd 出生年 兩位年 月日,如 910215 xx 順序編碼,系統產生,無法確定 p 性別,奇數為男,偶數為女 身份證18位編碼規...

身份證分組

題目描述 18位身份證的編碼規則是 前1 2位數字表示 所在省 直轄市 自治區 的 第3 4位數字表示 所在地級市 自治州 的 第5 6位數字表示 所在區 縣 自治縣 縣級市 的 第7 14位數字表示 出生年 月 日 第15 16位數字表示 所在地的派出所的 第17位數字表示性別 奇數表示男性,偶數...

身份證校驗

int isright string card cout 9 wi sum 11 if p 17 x p 17 x 最後一位為 x 或 x else if id wi p 17 判斷計算出的身份證校驗碼與輸入是否相符 return error 判斷身份證號碼中的年月日是否正確 bool birthd...