我們在10多年前使用了一張強加給我們的結構表。我們被允許添加列,但敦促不要更改現有的列。MySQL Datefields:重複或計算?
某些欄目旨在表示日期,但放在不同的格式。除其他:
* CHAR(6): YYMMDD
* CHAR(6): DDMMYY
* CHAR(8): YYYYMMDD
* CHAR(8): DDMMYYYY
* DATE
* DATETIME
因爲我們現在希望做一些更復雜的查詢,採用了先進的日期功能,我的經理建議複製這些問題列使用日期或日期時間格式的正確FORMATTED_OLDCOLUMNNAME列。
這是要走的路嗎? 每次我們訪問列時,我們不能只使用STR_TO_DATE函數嗎?爲避免每個查詢都需要複製粘貼功能,我仍然可以使用視圖或存儲過程,但是複製數據以避免重新計算聽起來錯誤。
解決方案我看到(我想我更喜歡2.2.1)
1. Physically duplicate columns
1.1 In the same table
1.1.1 Added by each script that does a modification (INSERT/UPDATE/REPLACE/...)
1.1.2 Maintained by a trigger on each modification
1.2 In a separate table
1.2.1 Added by each script that does a modification (INSERT/UPDATE/REPLACE/...)
1.2.2 Maintained by a trigger on each modification
2. On-demand transformation
2.1 Each query has to perform the transformation
2.1.1 Using copy-paste in the source code
2.1.2 Using a library
2.1.3 Using a STORED PROCEDURE
2.2 A view performs the transformation
2.2.1 A separate table replacing the entire table
2.2.2 A separate table just adding the date-fields for the primary keys
我說的對說這是更好的重新計算,而不是存儲?並且查看是一個很好的解決方案嗎?