[英]How do I track changes and store calculated content in Nermalization?
我正在嘗試創建一個像這樣的表:
lives_with_owner_no from until under_the_name
1 1998 2002 1
3 2002 NULL 1
2 1997 NULL 2
3 1850 NULL 3
3 1999 NULL 4
2 2002 2002 4
3 2002 NULL 5
這是Nermalization的示例 ,我猜它很受歡迎。
無論如何,我想我只是應該在MySQL中為from
lives_with
表或cat_name
表的更改掛起建立依賴關系,然后在until
和from
列之間建立依賴關系。 我認為所有者可能想來更新貓的信息,並覆蓋“發件人”列,所以我必須使用PHP? 有什么特殊的方法可以對覆蓋進行時間戳記(例如, $date = date("Ymd H:i:s");
)? 如何在MySQL中設置依賴關系?
我也有一個可以通過將其他列加在一起生成的列。 我想用貓的例子,它看起來像:
combined_family_age family_name
75 Alley
230 Koneko
132 Furrdenand
1,004 Whiskers
我應該通過PHP添加,然后通過查詢輸入值,還是應該使用MySQL管理添加? 我是否應該為此使用特殊的引擎,例如MemoryAll?
我從兩個方面不同意這個神經化的例子。
我將如下設計該數據庫:
create table owner (id integer not null primary key, name varchar(255));
create table cat (id integer not null primary key, current_name varchar(255));
create table cat_lives_with (
cat_id integer references cat(id),
owner_id integer references owner(id),
valid_from date,
valid_to date);
create table cat_has_name (
cat_id integer references cat(id),
name varchar(255),
valid_from date,
valid_to date);
因此,您將獲得如下數據:
id | name
1 | Andrea
2 | Sarah
3 | Louise
id | current_name
1 | Ada
2 | Shelley
cat_id | owner_id | valid_from | valid_to
1 | 1 | 1998-02-15 | 2002-08-11
1 | 3 | 2002-08-12 | 9999-12-31
2 | 2 | 2002-01-08 | 2001-10-23
2 | 3 | 2002-10-24 | 9999-12-31
cat_id | name | valid_from | valid_to
1 | Ada | 1998-02-15 | 9999-12-31
2 | Shelley | 2002-01-08 | 2001-10-23
2 | Callisto | 2002-10-24 | 9999-12-31
我將使用比年份更精細的日期類型(在具有2002-2002作為范圍的精確化示例中,實際上可能導致凌亂的查詢語法),因此您可以select cat_id from owner where '2000-06-02' between valid_from and valid_to
查詢諸如select cat_id from owner where '2000-06-02' between valid_from and valid_to
類的查詢select cat_id from owner where '2000-06-02' between valid_from and valid_to
。 至於在一般情況下如何處理時態數據的問題:Richard Snodgrass撰寫了一本非常出色的書,主題是“在SQL中開發面向時間的數據庫應用程序”(Richard Snodgrass 發行的免費全文PDF ),我相信甚至可以合法地以pdf格式下載,Google會為您提供幫助。
您的另一個問題:您可以在sql的外部或如果需要經常使用該列的情況下,在sql中使用視圖來處理Combined_family_age。 但是,您不應該手動管理內容,而是讓數據庫為您計算內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.