我在確定什麼是爲以下(相當複雜的)數據結構創建數據庫表的最佳方法時遇到了一些麻煩,我希望有更多經驗的人比我能幫上忙。我的麻煩的主要原因是規範化和不惜一切代價來避免查詢內部循環。MySQL:複雜的數據結構化和查詢
location 1 (location_group_name, owner_id, admin_id)
location 1.1 (name, address)
location 1.1.1 (name)
// DEVICE LIST
device 1 (manufacturer_id, model_id, serial, purchase_date, service_date)
Battery (manufacturer_id, model_id, purchase_date, service_date)
Accesory 1 (manufacturer_id, model_id, purchase_date, service_date)
Accesory 2 (...)
Accesory n (...)
device 2
Battery
Accesory 1
Accesory 2
Accesory n
device n
// STAFF LIST
person 1 (name, email)
qualification 1 (type, date)
qualification 2 (...)
qualification n (...)
person 2
person n
location 1.1.2
location 1.1.n
location 1.2
location 1.n
location 2
location n
我目前想將每個設備和人的作爲一個序列化多維數組的,但我不知道如何將工作,由於這樣的事實,一個cron作業腳本將檢查service_date
場每如果符合某些標準,則會將自動發送的電子郵件發送給位置組的管理員和所有者。使事情進一步複雜化,設備數據應該可以通過model
進行搜索,以備在召回的情況下或通過serial_number
來快速查找以防用戶有大量設備被添加和/或不完全知道其位置。
如果沒有太多要求,我還希望看到提出的數據結構的查詢示例(僅僅因爲我認爲它可能會使用連接,我對它們很不熟悉)。
此外,如果有任何額外的信息,你需要,請隨時問,我會很樂意詳細說明。
預先感謝您,任何輸入都將超過讚賞!
是否總會有正好3層的位置?也許有一個白板,並開始繪製你認爲你需要的關係(然後迭代它尋找問題)... – ircmaxell 2010-08-06 16:13:38
是的,總是會有3層的位置。我已經繪製了它,但我總是最終在循環內查詢,因爲沒有辦法控制將插入多少個位置/設備/工作人員,除了查詢內部循環有缺陷的事實之外。 – 2010-08-06 16:21:10
我不是SQL專家,我構建了少於10個基於數據庫的應用程序,但我沒有看到需要在這裏查詢內部循環;你的結構幾乎完全是「等級的」(不確定這是否只有一個父母的官方稱號)。你能否詳細說明你預見的問題? – MvanGeest 2010-08-06 16:35:56