2016-03-01 174 views
2

SQL中是否有指定派生屬性的方法?目前,我在創建表Employee,其中有一個派生屬性age,但我不知道如何來表示它(我恐怕沒有辦法做到這一點):指示在SQL中派生表的屬性

create table Employee(
    Id int NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, 
    Age int, # How to indicate this is a derived attribute? 
    Country varchar(255), 
    City varchar(255), 
    Birthrate double, 
); 
+1

你的意思是如何在ERD表示'Age'計算列或你需要的代碼,將計算'Age'基於SYSDATE和Birthdate? – lad2025

+0

根據您使用的ER,您可以使用虛線邊框[ER圖符號和含義](https://d2slcw3kip6qmk.cloudfront.net/marketing/pages/chart/ER-diagram-symbols-and-meaning/ERD_attribute_symbols-497x125.PNG )和https://www.lucidchart.com/pages/ER-diagram-symbols-and-meaning – lad2025

+1

@ lad2025其實,現在,我只需要編寫SQL代碼。我認爲在SQL中有一種方法來指定必須派生的屬性或類似的東西... – nbro

回答

0

如果什麼你的意思是age是從birthrate派生的,我想你應該考慮你是否真的需要age列在你的表中。如果您不是在這裏創建數據倉庫,那麼每次計算年齡將比在生產中保留此列更加安全......想一想 - 每次有人有生日時都應該重新計算此列!

爲方便起見,您可以隨時爲它創建視圖,就像這樣:

CREATE VIEW Employee_view AS 
    SELECT 
    e.Id, 
    =>here some database specyfic calculation to calculate age<= as Age, 
    e.Country, 
    e.City, 
    e.Birthrate 
FROM Employee e; 
+0

我同意 - 將計算列放在表格中而不是視圖中是一個非常糟糕的主意。如果您將其放入列中,則每天都有一個更新過程。如果有人填寫表格,你可以有一個「age_reported」列。我見過這很多。 – Hogan