簡體   English   中英

SQL表或字段

[英]SQL table OR field

我有一個概念性的問題。

我的數據庫有一個表,用於存儲有關人員的信息。 其中一個字段是他們的電話號碼(我的國家/地區是8位數字)。

問題是,在某些情況下,兩個或兩個以上的人將擁有相同的電話號碼。

我的問題是:將電話號碼存儲在另一個表上,然后通過外鍵引用而不是僅將其存儲為字段,是否會更好?如果是這樣,無論大小如何,結果都一樣。 DB是?

我不知道這是否會有所作為,但是表格中的記錄不會超過600.000-800.000,而且我猜想碰巧的電話號碼大約占總記錄的10%。

編輯:

-每條記錄最多可以有4個電話號碼(兩行和兩個單元格)

-兩種情況都會發生,有時用戶會尋找所有具有特定號碼的人,有時用戶會想知道一個人擁有的所有電話號碼是什么時候

如果您每人擁有一個以上的電話號碼

有充分的理由來設置新表,例如: id, user_id, phone, type, description

因此type可以是家庭,工作,Office2,老板,妻子,傳真,手機等的列表。

description例如“僅工作時間”,“晚上”,“ 24x7”,“僅緊急情況”等

如果您確實為應用程序管理電話簿,則最好將電話號碼與原始用戶表分開。

從技術上進行標准化,您將有一個單獨的電話號碼表,然后是一個PersonPhonenumber表。

但是,實際上,我很少看到電話號碼和地址的這種結構。 對於一個人來說,很容易犯一個錯誤,並且在您只想更改一個人的addess或電話時,要進行更新。 另一方面,它增加了大多數人似乎不需要的額外聯接。 除了進行少量重復操作外,您進入此級別並不會真正獲得任何收益。

真正的決定者是您如何使用和更新號碼。 如果要經常更新具有相同編號的所有人員,最好完全標准化。 如果您通常一次只想更新一個人,則僅擁有一個Person表和一個PersonPhone Number表可能沒有那么大的風險。

如果您想要歷史記錄,那么我將使用人員表和aPersonPhoneNumber歷史記錄表。 它將包含個人身份,電話號碼,開始日期和結束日期。 因此,當約翰和瑪麗離婚時,他的電話號碼會有結束日期,而她的電話號碼沒有結束日期,您可以清楚地看到誰在何時獲得了電話號碼。

通常電話號碼只是一個數字,沒有人沒有任何意義。 因此,您將其存儲在Person表中。

但是,如果您在一家電話公司工作,那么該電話公司的電話號碼具有不同的含義和用途(例如歷史記錄,電話查詢,帳單),則應將其存儲在單獨的表中。 希望對您有所幫助。

如果兩個人使用相同的電話號碼,則在搜索特定的電話號碼時會遇到問題。 搜索特定的電話號碼有時會返回多個結果(根據您的估計為10%)。 如果您按電話號碼和按人員搜索,則可以要求所有對電話號碼的搜索都包括用戶標識符(名字,姓氏,位置等)。 這取決於您的目標是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM