簡體   English   中英

當名稱中的名稱可能略有不同時(例如“ Matt”與“ Mathew”),在Mysql中管理名稱

[英]Managing Names in Mysql when they can be slightly different (e.g. “Matt” vs “Mathew”)

我有一個程序可以從多個來源提取體育數據並將其聚集在一個中央位置。

我正在使用mysql來管理數據,並且使用帶有.csv文件的加載命令輸入了很多數據。

但是,當不同的來源在相同名稱的常用拼寫之間切換時,例如“ Matthew”和“ Matt”,或“ Michael”和“ Mike”,我遇到了問題。

我當時想讓程序在數據庫加載后通過數據庫,然后手動將每個名稱更改為某種標准格式,例如firstInitial.LastName.Team,因此XYZ團隊中的“馬特·約翰遜”將變成“ M.Johnson.XYZ” ”。 這應該可以,但是似乎很不客氣,讓我願意在同一支球隊中有兩名球員具有相同的firstInitial.LastName組合的情況下(不太可能,但仍然如此)。

只是想知道我是否還有其他想法。

您需要為允許使用別名的名稱添加一些比較邏輯。 確切的組織將取決於您希望實施的操作。

這是兩個可能的示例:

根據已知別名為特定人員檢查姓名

在這里,您可以按搜索字詞(姓,名,年份等)將搜索范圍縮小到一個或多個人,然后檢查您的姓名與您的姓名相匹配。

此處可能的別名處理接口是:

check_name(test_name,suspected_person_id) -> boolean

可能的實現:

create table aliases
alias varchar(max),
person_id int foreign key references persons;

該功能將檢查test_name針對與相應的行person_id 要包括處理多個人匹配的情況(即模棱兩可)-至少使代碼引發異常,直到您在實踐中實際遇到這種情況並可以決定如何處理為止。

通過可能的別名猜測“引用”名稱

在這里,您需要一些給定名稱的替代形式的參考數據庫 ,以及其所需的任何結構。

您的功能將查詢該數據庫,然后檢查結果中是否有存儲在數據庫中的名稱。 接口幾乎相同,不同之處在於您不需要自己存儲別名:

guess_name(test_name,possible_candidates) -> person_id or multiple ids/error if ambiguous

暫無
暫無

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

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